Fatal exceptions on context-switching for more than two isolated threads

Gedare Bloom 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 mailing list