Takashi Yano wrote:
...
With this patch prevents all signals from that issues by redesigning
the signal queue, Only the exception is the case that the process is
in the PID_STOPPED state. In this case, SIGCONT/SIGKILL should be
processed prior to the other signals in the queue.
Addresses: https://cygwin.com/pipermail/cygwin/2025-March/257582.html
Fixes: 7ac6173643b1 ("(pending_signals): New class.")
Reported by: Christian Franke <christian.fra...@t-online.de>
Reviewed-by:
Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp>
...
void
pending_signals::add (sigpacket& pack)
{
...
+ if (q->si.si_signo == pack.si.si_signo)
+ q->usecount++;
...
This should possibly also compare the si.si_sigval fields. Otherwise
values would be lost if the same real-time signal is issued multiple
times with different value parameters.
The queuing might also be incorrect for real-time signals. Linux
signal(7) says:
"If different real-time signals are sent to a process, they are
delivered starting with the lowest-numbered signal."
--
Regards,
Christian