Christian Franke wrote:
Found with 'stress-ng --workload ...':

If mq_receive is called on an empty queue and mq_send is called later from a different thread, both functions never return and signals (including SIGKILL) are no longer processed.

Testcase (attached):

$ uname -r
3.5.5-1.x86_64


The problem is also reproducible with 3.5.6-1 and recent 3.6.0-0.345.gb940faa144ca


$ gcc -o mqhang mqhang.c

$ ./mqhang
mq_send...
mq_send = 0
mq_receive...
mq_receive = 8
mq_receive...
mq_send...
[...hangs...]

Problem does not occur if mq_receive() is called from a fork()ed process instead of a thread.


--
Regards,
Christian


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