Hello,

my next topic is thread restart and delete on SMP. For background information please have a look at:

http://www.rtems.org/wiki/index.php?title=SMP#Thread_Restart

http://www.rtems.org/wiki/index.php?title=SMP#Thread_Delete

http://www.rtems.org/pipermail/rtems-devel/2013-July/003509.html

http://www.rtems.org/wiki/index.php?title=SMP#Post-Switch_Actions

There are a couple of open PRs in this area:

Priority inheritance mechanism may activate a deleted task
https://www.rtems.org/bugzilla/show_bug.cgi?id=788

SMP race condition between stack free and dispatch
https://www.rtems.org/bugzilla/show_bug.cgi?id=1814

psxcancel reveals NULL pointer access in _Thread_queue_Extract()
https://www.rtems.org/bugzilla/show_bug.cgi?id=2035

Race condition in _Thread_queue_Extract_with_proxy()
https://www.rtems.org/bugzilla/show_bug.cgi?id=2151

Race condition with unified work areas
https://www.rtems.org/bugzilla/show_bug.cgi?id=2152

There are some lock order reversal problems in this area on SMP.

In addition to this the POSIX cleanup handler may be called in the wrong context (should be called in the context of the deleting thread).

http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html

The proposed way to fix the thread restart and delete problems is

1. implement post-switch actions,

2. use post-switch actions to implement Classic and POSIX signals,

3. use post-switch actions to implement thread restart,

4. use post-switch actions to implement thread delete,

5. call thread restart and delete extensions in the context of the restarting or deleting thread,

6. add ability to disable thread restart and deletion to all threads (not only POSIX API),

7. disable/enable thread restart and delete in internal mutex obtain/release,

8. protect workspace/heap/objects allocation/free with the allocator mutex (NOT disabled thread dispatching),

9. add a zombi list of threads for final cleanup (work on demand during thread create).

It may make sense to add this also to the RTEMS 4.11 release.

--
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.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to