On Fri, Mar 7, 2025 at 8:29 AM Takashi Yano via Cygwin <cygwin@cygwin.com> wrote: > On Wed, 5 Mar 2025 11:23:26 +0100 > Christian Franke wrote: [snip] > > A 'ps' is a second terminal then shows that the child process is still > > in S)topped state. 'kill -CONT ...' works to continue. > > > > If the testcase is assigned to a single core with 'taskset 0x1 ...', it > > apparently always hangs. > > Thanks for the report and the testcase. > The current implementation of the signal queue has the following problems: > 1) Signals in the queue are processed in a disordered manner. > 2) If the same signal is already in the queue, new signal is discarded.
Erm... that is actually the intended POSIX behaviour *except* for SIGRT* signals. Any signal coming queued more than one time *CAN* (it is not a requirement, and for some signals it's not useful, like |SIGCHLD|, because their siginfo data cannot be folded) be "folded" into one signal. The only exception in the POSIX standard are realtime signals, which have a realtime signal queue, and |sigqueue()| has a return code which indicates when the preallocated storage for realtime signals and their payload (see |sigval| argument in https://pubs.opengroup.org/onlinepubs/9799919799/functions/sigqueue.html) is full. ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.ma...@nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;) -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple