On Tue, 19 Nov 2024 18:21:52 +0900
Takashi Yano wrote:
> On Tue, 12 Nov 2024 10:53:58 +0100
> Christian Franke wrote:
> > Found with 'stress-ng --cpu-sched' from current stress-ng upstream HEAD:
> > 
> > Testcase (attached):
> > 
> > $ gcc -O2 -o manysignals manysignals.c
> > 
> > $ ./manysignals
> > fork() = 1833
> > ...
> > fork() = 1848
> > ...
> > kill(1833, 17)
> > ...
> > kill(1848, 17)
> > kill(1833, 9)
> > ...
> > kill(1848, 9)
> > waitpid(1833, ., 0)
> > 
> > 
> > Run this in second terminal:
> > 
> > $ watch "ps | sed -n '1p;/manysignals/{/sed/d;p}'"
> > 
> > If 'S' appear in the first column, the child processes likely reached 
> > the final SIGSTOP state. This takes some time. The parent process may 
> > still hang in first waitpid() but should not.
> > 
> > If the parent process is aborted with ^C, child processes may be stopped 
> > or left behind. Occasionally a child process that can not be stopped by 
> > Cygwin (kill -9) is left behind.
> > 
> > Tested with ancient (i7-2600K) and more recent (i7-14700K) CPU :-)
> > 
> > 
> > Unrelated to the above, but related to 'stress-ng --cpu-sched' which 
> > uses sched_get/setscheduler():
> > 
> > - sched_getscheduler() always returns SCHED_FIFO. As far as I understand 
> > Linux sched(7), this is a non-preemptive real-time policy. The 
> > preemptive SCHED_RR would possibly a more reasonable value. 
> > Unfortunately SCHED_OTHER cannot be used because it would require to 
> > ignore the priority.
> > 
> > - sched_setscheduler() always fails with ENOSYS. It IMO should allow to 
> > set 'param->sched_priority' if 'policy' is equal to the value returned 
> > by sched_getscheduler().
> 
> Thanks for the report and the test case. I'm now looking into
> the issue. Please wait a while.

Hopefully, I have found the cause.

The deadlock happens between main thread and wait_sig thread.
The main thread is waiting for the wait_sig thread triggering
wakeup event while the wait_sig thread is waiting previous
signal being processed by main thread.

Let me consider how to fix that.

-- 
Takashi Yano <takashi.y...@nifty.ne.jp>

-- 
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

Reply via email to