[RTEMS Project] #3334: deadlock in _once()

RTEMS trac trac at rtems.org
Tue Mar 13 13:34:02 UTC 2018

#3334: deadlock in _once()
 Reporter:  Stavros Passas  |       Owner:  (none)
     Type:  defect          |      Status:  new
 Priority:  normal          |   Milestone:  4.11.4
Component:  posix           |     Version:  4.11
 Severity:  normal          |  Resolution:
 Keywords:                  |  Blocked By:
 Blocking:                  |

Comment (by Stavros Passas):

 I agree with Sebastian, that using one dedicated mutex for each
 pthread_once_t instance would be a longer term and elegant solution, but
 it would also add overhead for each pthread_t instance.

 I am adding a different proposed solution, which doesn't require newlib
 changes (and increasing the pthread_t size):

 The _once implementation uses a single mutex. Currently this mutex
 protects the whole function, while I believe we need to protect
 reads/writes to the once_state variable only. Concurrent tasks finding the
 state on RUNNING, could just yield until the state becomes

Ticket URL: <http://devel.rtems.org/ticket/3334#comment:2>
RTEMS Project <http://www.rtems.org/>
RTEMS Project

More information about the bugs mailing list