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

Gedare Bloom gedare at rtems.org
Mon Sep 21 16:59:08 UTC 2020


On Sat, Sep 19, 2020 at 5:41 AM Utkarsh Rai <utkarsh.rai60 at gmail.com> wrote:
>
> Hello,
> When I isolate more than two threads in RTEMS (the implementation can be found here), I get fatal exceptions while context-switching. On stepping into the code, the problem seems to be with the _User_extensions_Thread_*() call  just after a context-switch, in particular when the iterators are initialized inside this call. The issue is the fact that we mark the stack space of the switched out thread as 'NO_ACESS' and then try to access iterators(which belong to the stack space of the switched-out thread) from a different thread, which leads to fatal exceptions.
> I am not sure how to handle this issue because I am not very clear on the purpose of the "user extension" functionality or its implementation. Any help would be appreciated, as this may possibly be the last hurdle for a mergeable thread stack isolation feature.

Are you testing in an SMP configuration? The user extensions in
uniprocessor run before the context switch. It would help if you
provide a trace of your debug. You might consider using the event
recorder to also help with your debugging.
https://docs.rtems.org/branches/master/user/tracing/index.html


> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list