libzmq: zmq_ctx_term throws Assertion failed: pfd.revents & POLLIN (src/signaler.cpp:226)
When I’m terminating my context, the program throws Assertion failed: pfd.revents & POLLIN (src/signaler.cpp:226) as SIGABORT.
Thread 3 (Thread 0x7f6150b23700 (LWP 3391)):
#0 0x00007f61557f6ee9 in __libc_waitpid (pid=pid@entry=3394, stat_loc=stat_loc@entry=0x7f6150b21c0c, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:40
#1 0x00000000004b4009 in mono_handle_native_sigsegv (signal=<optimized out>, ctx=<optimized out>) at mini-exceptions.c:2323
#2 <signal handler called>
#3 0x00007f6155457bb9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#4 0x00007f615545afc8 in __GI_abort () at abort.c:89
#5 0x00007f6152061259 in zmq::zmq_abort (errmsg_=errmsg_@entry=0x7f61520c8940 "pfd.revents & POLLIN") at src/err.cpp:74
#6 0x00007f615207f18e in zmq::signaler_t::wait (this=this@entry=0x286b398, timeout_=timeout_@entry=-1) at src/signaler.cpp:226
#7 0x00007f6152064bb0 in zmq::mailbox_t::recv (this=this@entry=0x286b338, cmd_=cmd_@entry=0x7f6150b22a50, timeout_=timeout_@entry=-1) at src/mailbox.cpp:70
#8 0x00007f6152055c3c in zmq::ctx_t::terminate (this=this@entry=0x286b2a0) at src/ctx.cpp:157
#9 0x00007f6152095b38 in zmq_ctx_term (ctx_=0x286b2a0) at src/zmq.cpp:155
#10 0x00000000410d8500 in ?? ()
#11 0x00007f6144002640 in ?? ()
#12 0x00007f6150b22e00 in ?? ()
...
And also sometimes pure virtual method called, terminate called without an active exception
Thread 2 (Thread 0x7fdb11922700 (LWP 3647)):
#0 0x00007fdb1679dee9 in __libc_waitpid (pid=pid@entry=3648, stat_loc=stat_loc@entry=0x7fdb11920a0c, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:40
#1 0x00000000004b4009 in mono_handle_native_sigsegv (signal=<optimized out>, ctx=<optimized out>) at mini-exceptions.c:2323
#2 <signal handler called>
#3 0x00007fdb163febb9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#4 0x00007fdb16401fc8 in __GI_abort () at abort.c:89
#5 0x00007fdb12d9c6b5 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007fdb12d9a836 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007fdb12d9a863 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x00007fdb12d9b33f in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#9 0x00007fdb13064b92 in read (value_=0x7fdb11921860, this=0x2259f08) at src/ypipe.hpp:156
#10 zmq::mailbox_t::recv (this=this@entry=0x2259f08, cmd_=cmd_@entry=0x7fdb11921860, timeout_=timeout_@entry=-1) at src/mailbox.cpp:62
#11 0x00007fdb13055c3c in zmq::ctx_t::terminate (this=this@entry=0x2259e70) at src/ctx.cpp:157
#12 0x00007fdb13095b38 in zmq_ctx_term (ctx_=0x2259e70) at src/zmq.cpp:155
#13 0x0000000040356ca0 in ?? ()
#14 0x00007fdb000026a0 in ?? ()
#15 0x00007fdb11921c60 in ?? ()
#16 0x0000000000000000 in ?? ()
Any thoughts…?
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 18 (13 by maintainers)
Can this be reopened? It’s still occurring.
was autoclosed, but still occurs?
Hi, I got the same crash in signaler.cpp:226 with 4.1.0, this patch seems fixing it
Race condition in ctx destroy (presumably also in *_term) when sending to socket from this context may be provoked with utilising CPU on max. I could reproduce it several times.