Fatal exceptions on context-switching for more than two isolated threads
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:
> 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.
> devel mailing list
> devel at rtems.org
More information about the devel