On 2024-11-22 07:22, Christian Franke via Cygwin wrote:
The command 'stress-ng --longjmp ... -t 1' occasionally fails to terminate because some child process does not receive the SIGALRM indicating timeout.

Testcase (attached):

$ g++ -O2 -o longjmpsigs longjmpsigs.cc

$ ./longjmpsigs
[^C]
INT   1
[^C]
INT   2
...
[^C]
INT   21
[^C]
[^C]
INT   22
...

The following run in a second window may not stop the process due to few lost signals:

for i in {1..100}; do
   echo $i; killall -INT longjmpsigs || break; sleep 1
done

The problem does not occur if a regular loop is used instead of setjmp/longjmp.

Reproducible also with current cygwin1.dll 26144e40.

I have some cygport package build tests which hang and need killed despite them using usual test harnesses setting timeouts, typically running ~100% all CPUs!

--
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                -- Antoine de Saint-Exupéry

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