Skip to content
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

segfault when zmq_poll() with closed socket #76

Open
potatogim opened this issue Apr 28, 2017 · 3 comments
Open

segfault when zmq_poll() with closed socket #76

potatogim opened this issue Apr 28, 2017 · 3 comments

Comments

@potatogim
Copy link
Contributor

potatogim commented Apr 28, 2017

Hi.

I met a segfault with my program.

this situation like below.

  1. call zmq_poll() with a monitor socket gained by zmq_monitor_socket() and then some callback is triggered.
  2. this callback checks connection and then if it is disconnected, close this socket.
  3. after that, call zmq_poll() with same pollitems.
  4. Bang!

I have rebuilt ZMQ::LibZMQ3 with ZMQ_TRACE.

1887                 mg = P5ZMQ3_Socket_mg_find( aTHX_ SvRV(*svr), &P5ZMQ3_Socket_vtbl );
1888
1889                 /* debugging logs added for tracing */
1890                 P5ZMQ3_TRACE(" + mg %d: %d", i, mg);
1891                 P5ZMQ3_TRACE(" + mg->mg_ptr %d: %d", i, mg->mg_ptr);
1892 
1893                 pollitems[i].socket = ((P5ZMQ3_Socket *) mg->mg_ptr)->socket;
1894                 P5ZMQ3_TRACE( " + via pollitem[%d].socket = %p", i, pollitems[i].socket );

and this is output from that.

[perlzmq (29306)] START mg_free (Message)
[perlzmq (29306)] + zmq message 2e41f50
[perlzmq (29306)] END mg_free (Message)
[perlzmq (29306)] START zmq_poll
[perlzmq (29306)] + processing element 0
[perlzmq (29306)] + mg 0: 48468640
[perlzmq (29306)] + mg->mg_ptr 0: 0
Segmentation fault (core dumped)

Actually... it may be my fault, too.

but I think that we can handle this situation more gracefully :)

@lestrrat
Copy link
Collaborator

I haven't really been keeping up with Perl/XS for a while, would be cool if you can provide me with aPR

@potatogim
Copy link
Contributor Author

potatogim commented Apr 28, 2017

Yep, I will perform PR soon :)
Thank you for your answer!

@potatogim
Copy link
Contributor Author

potatogim commented Apr 28, 2017

Oh....

I think this issue is duplicated with #63.

in master branch, the PR resolving this issue is included but 1.19 does not contains this PR :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants