zmq_term can not safely be re-entered with pgm transport
Description
Environment
Linux and Windows
Activity
Show:

Ricardo Catalinas Jiménez July 29, 2012 at 7:53 PM
Pull request for the 2.x backport sent.

PieterP July 29, 2012 at 7:47 AM
Reopening so that we can backport to 2.2 and 3.2 and mark as fixed in those versions.

PieterP July 29, 2012 at 7:47 AM
Ricardo, if you want to backport this to 2.2, you can send a pull request for the 2.2 repository. Ditto for the 3.2.1 release candidate. Thanks!

Ricardo Catalinas Jiménez July 28, 2012 at 8:55 AM

Ricardo Catalinas Jiménez July 28, 2012 at 8:51 AM
The issue was found in the haskell binding as the haskell runtime uses SIGVTALRM or SIGALRM to handle the thread scheduling and this interferes with ZMQ in the manner described:
According to the man page of zmq_term, it should be safe to re-enter
zmq_term if it previously returned with EINTR. This is actually not
true if used with OpenPGM. zmq_term invokes pgm_shutdown which is
reading and modifying the static variable pgm_ref_count and will
return FALSE on second invocation which makes zmq_term abort with
"Assertion failed: false (zmq.cpp:185)". This affects version 2.2 as
well as 3.2.