|Anonymous | Login||2019-05-21 22:42 UTC|
|Main | My View | View Issues | Change Log | Docs|
|Viewing Issue Simple Details|
|ID||Category||Severity||Type||Date Submitted||Last Update|
|0001201||[1003.1(2016)/Issue7+TC2] System Interfaces||Editorial||Clarification Requested||2018-08-22 14:10||2019-05-09 09:27|
|Reporter||Florian Weimer||View Status||public|
|Priority||normal||Resolution||Accepted As Marked|
|Final Accepted Text||See Note: 0004332|
|Summary||0001201: Atomicity requirements for sigsuspend|
The description says that sigsuspend changes the signal mask and then suspends the thread until a signal arrives, but does not indicate whether these two steps are atomic with regards to signal delivery. Based on the current wording, the following can happen:
1. The requested signal is unblocked.
2. The signal handler runs, so there is no pending signal anymore.
3. sigsuspend blocks indefinitely if no further signal arrives.
This is somewhat counter-intuitive and makes the function harder to use than necessary.
|Desired Action||Clarify whether implementations are required to provide atomicity in the described sense.|
|The same question should be raised for sigpause, which does an unmask and wait also.|
edited on: 2019-03-18 15:49
The standard does not speak to this issue, and as such no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor.
The intention of the committee was to make this function atomic, but the wording did not make this clear.
Notes to the Editor (not part of this interpretation):
Change page 1984 lines 63848-63849 from:
The sigsuspend( ) function shall replace the current signal mask of the calling thread with the set of signals pointed to by sigmask and then suspend the thread until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process.
The sigsuspend( ) function shall atomically both replace the current signal mask of the calling thread with the set of signals pointed to by sigmask and suspend the thread until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process.
Change on p1964 lines 63342-63343
The sigpause( ) function shall remove sig from the signal mask of the calling process and suspend the calling process until a signal is received.
The sigpause( ) function shall atomically both remove sig from the signal mask of the calling process and suspend the calling process until a signal is delivered whose action is either to execute a signal-catching function or to terminate the process.
|Interpretation Proposed: 21st March 2019|
|Interpretation approved: 9 May 2019|
|2018-08-22 14:10||Florian Weimer||New Issue|
|2018-08-22 14:10||Florian Weimer||Name||=> Florian Weimer|
|2018-08-22 14:10||Florian Weimer||Organization||=> Red Hat|
|2018-08-22 14:10||Florian Weimer||Section||=> sigsuspend|
|2018-08-22 14:10||Florian Weimer||Page Number||=> unknown|
|2018-08-22 14:10||Florian Weimer||Line Number||=> unknown|
|2018-08-24 20:23||carlos||Note Added: 0004091|
|2019-03-18 15:24||nick||Page Number||unknown => 1984|
|2019-03-18 15:24||nick||Line Number||unknown => 63848-63858|
|2019-03-18 15:24||nick||Interp Status||=> ---|
|2019-03-18 15:26||geoffclare||Project||1003.1(2013)/Issue7+TC1 => 1003.1(2016)/Issue7+TC2|
|2019-03-18 15:49||nick||Note Added: 0004332|
|2019-03-18 15:49||nick||Note Edited: 0004332|
|2019-03-18 15:50||nick||Interp Status||--- => Pending|
|2019-03-18 15:50||nick||Final Accepted Text||=> See Note: 0004332|
|2019-03-18 15:50||nick||Status||New => Interpretation Required|
|2019-03-18 15:50||nick||Resolution||Open => Accepted As Marked|
|2019-03-18 15:50||nick||Tag Attached: tc3-2008|
|2019-03-21 15:47||agadmin||Interp Status||Pending => Proposed|
|2019-03-21 15:47||agadmin||Note Added: 0004343|
|2019-05-09 09:27||agadmin||Interp Status||Proposed => Approved|
|2019-05-09 09:27||agadmin||Note Added: 0004389|
|Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group|