[Bug 1629] New: sigsuspend not following POSIX spec

bugzilla-daemon at rtems.org bugzilla-daemon at rtems.org
Mon Jul 26 10:24:05 UTC 2010


https://www.rtems.org/bugzilla/show_bug.cgi?id=1629

           Summary: sigsuspend not following POSIX spec
           Product: RTEMS
           Version: HEAD
          Platform: All
        OS/Version: RTEMS
            Status: NEW
          Severity: normal
          Priority: P3
         Component: cpukit
        AssignedTo: joel.sherrill at oarcorp.com
        ReportedBy: vinutheraj at gmail.com
                CC: vinutheraj at gmail.com


Created an attachment (id=911)
 --> (https://www.rtems.org/bugzilla/attachment.cgi?id=911)
patch for sigsuspend.c

The current sigsuspend implementation is not does not follow the POSIX spec -
http://www.opengroup.org/onlinepubs/009695399/functions/sigsuspend.html.

First, the spec wants the signal mask to be replaced. At present, the union of
the new signal mask is taken with old signal mask.

Then, sigsuspend is implemented with the help of sigtimedwait. The set of
signals sigtimedwait waits upon in the implementation consists of all the
signals. This is wrong because sigtimedwait, will successfully return, if any
of the signals in the set is pending, which is not the case with sigsuspend.
sigsuspend should only return if any of the non-blocked signals are caught, or
a signal causes termination of the process. So sigtimedwait should only wait on
the non-blocked signals.

I have attached a patch with the necessary changes.

-- 
Configure bugmail: https://www.rtems.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the bugs mailing list