libstdc++/4367: Sparc atomicity.h routines can lock up on some OS.

eric.norum@usask.ca eric.norum@usask.ca
Thu Sep 20 07:56:00 GMT 2001


>Number:         4367
>Category:       libstdc++
>Synopsis:       Sparc atomicity.h routines can lock up on some OS.
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Sep 20 07:56:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Eric Norum
>Release:        gcc-3.0
>Organization:
>Environment:
Real-time OS environments (e.g. vxWorks, pSOS+, eCOS, RTEMS)
>Description:
The sparc version of the routines in atomicity.h can lock up
on operating systems which provide strict priority-based
scheduling (e.g. vxWorks, pSOS+, eCOS, RTEMS).  Here's the
scenario:
1) Low priority task enters __exchange_and_add and sets
   the lock.
2) While low-priority task is still active in
   __exchange_and_add a higher-priority task preempts.
3) The higher-priority task enters __exchange_and_add and
   enters an infinite loop trying to set the lock.
>How-To-Repeat:

>Fix:
None that I can think of, unfortunately!
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list