Fatal exceptions on context-switching for more than two isolated threads
gedare at rtems.org
Fri Oct 23 16:27:32 UTC 2020
On Fri, Oct 23, 2020 at 9:37 AM Utkarsh Rai <utkarsh.rai60 at gmail.com> wrote:
> On Thu, Oct 22, 2020 at 11:23 PM Sebastian Huber <sebastian.huber at embedded-brains.de> wrote:
>> On 22/10/2020 02:40, Utkarsh Rai wrote:
>> > Hello, this thread has gone a bit cold over the last few weeks, due to
>> > my engagement in the university tests. I have provided a debug trace
>> > for the issue. The reason for fatal exceptions is the fact that while
>> > iterating over the chain of user extensions we access a node whose
>> > memory location has been set to NO-ACCESS during the context switch.
>> > Is there any work-around to this?
>> The option is to move the User_extensions_Iterator storage out of the
>> stack to Thread_Control and Per_CPU_Control.
> Does this mean that I should add User_extensions_Iterator field in the Thread_Control structure for the case
> when we enable thread stack protection?
You need to dig in a little bit more. From what I understand, there is
the last_user_extensions_iterator field of the TCB. That is probably
where you are running into some trouble. See
score/src/userextiterate.c :193 where this field gets assigned to a
stack-local variable. Then, you can't walk this chain when the thread
is out of context.
>> Sebastian Huber, embedded brains GmbH
>> Address : Dornierstr. 4, D-82178 Puchheim, Germany
>> Phone : +49 89 189 47 41-16
>> Fax : +49 89 189 47 41-09
>> E-Mail : sebastian.huber at embedded-brains.de
>> PGP : Public key available on request.
>> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel