-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ZMQ::LibZMQ3 somehow breaks perl's die semantics with infinite poll(...) loop #50
Comments
I tried it on my OS X, perl 5.18.2 (no thread), zeromq-3.2.4, ZMQ-LibZMQ3 HEAD, and got "should be able to die at this point but it gets stuck"; |
Right. It dies there, then it doesn't actually die, because the ZMQ event thread is holding perl open when it should be able to exit.Sent from my mobile device. On March 12, 2014 2:46:58 PM PDT, lestrrat notifications@github.com wrote:
|
I'm confused. It died as the message implied. it exited. |
Interesting. On my system it would execute the die, print the message, but still stay running. I'll check on it.Sent from my mobile device. On March 12, 2014 3:26:37 PM PDT, lestrrat notifications@github.com wrote:
|
We had some similar symptoms which were cause by indefinite linger settings. Maybe that's part of the problem? (I didn't run or check your code, so this is just a shot in the dark) |
Something gets broken inside of
perl
, when certain functions fromZMQ::LibZMQ3
are added into the code. It does not matter if the functions ever actually execute. This test case should get stuck forever instead of finishing thedie
process on Mac OS X. I have seen it happen sometimes on Linux as well but not as reliably.I am guessing, referencing certain functions must cause a ZMQ event loop to be started, but there is no code to ensure the loop is ended and doesn't become infinite when
perl
tries to shut down. When tracing the code withdtruss
, etc. you can see it gets stuck in some kind ofpoll(...)
.When a custom
__DIE__
handler is registered, it seems possible to work around the issue.The text was updated successfully, but these errors were encountered: