[zeromq-dev] wuserver: broken pipe on OS X
John D. Mitchell
jdmitchell at gmail.com
Wed May 18 03:42:42 CEST 2011
Yes, I've checked the FAQ and tuning pages as well. I've upped the send/recv-space and descriptor limits but those make no difference.
In terms of output...
Running, as is:
% wuserver
Broken pipe
Running it as is under gdb will get the broken pipe showing up with a variety of backtraces but typically somewhere in send()...
(gdb) run
Starting program: /Users/john/Software/Repos/zeromq/zguide/examples/C/wuserver
Reading symbols for shared libraries ++++. done
Program received signal SIGPIPE, Broken pipe.
0x0000000100013571 in zmq::dist_t::send (this=0x100300668, msg_=0x7fff5fbff460, flags_=0) at dist.cpp:107
107 int zmq::dist_t::send (zmq_msg_t *msg_, int flags_)
(gdb) bt full
#0 0x0000000100013571 in zmq::dist_t::send (this=0x100300668, msg_=0x7fff5fbff460, flags_=0) at dist.cpp:107
msg_more = <value temporarily unavailable, due to optimizations>
#1 0x000000010001f99c in zmq::socket_base_t::send (this=0x1003004f0, msg_=0x7fff5fbff460, flags_=0) at socket_base.cpp:492
rc = <value temporarily unavailable, due to optimizations>
#2 0x0000000100000e3f in main ()
No symbol table info available.
Current language: auto; currently c++
Running it after building wuserver with debug under GDB:
(gdb) run
Starting program: /Users/john/Software/Repos/zeromq/zguide/examples/C/wuserver
Reading symbols for shared libraries ++++. done
Program received signal SIGPIPE, Broken pipe.
0x00007fff808c3e3e in sendto ()
(gdb) bt
#0 0x00007fff808c3e3e in sendto ()
#1 0x00000001000165a1 in zmq::mailbox_t::send (this=0x100300020, cmd_=@0x7fff5fbff290) at mailbox.cpp:162
#2 0x000000010001735c in zmq::object_t::send_activate_reader (this=<value temporarily unavailable, due to optimizations>, destination_=<value temporarily unavailable, due to optimizations>) at object.cpp:278
#3 0x0000000100013344 in zmq::dist_t::write (this=0x100300668, pipe_=0x1005005a0, msg_=0x7fff5fbff480) at dist.cpp:198
#4 0x0000000100013435 in zmq::dist_t::distribute (this=0x100300668, msg_=0x7fff5fbff480, flags_=<value temporarily unavailable, due to optimizations>) at dist.cpp:140
#5 0x0000000100013595 in zmq::dist_t::send (this=0x100300668, msg_=<value temporarily unavailable, due to optimizations>, flags_=<value temporarily unavailable, due to optimizations>) at dist.cpp:113
#6 0x000000010001f99c in zmq::socket_base_t::send (this=0x1003004f0, msg_=0x7fff5fbff480, flags_=0) at socket_base.cpp:492
#7 0x0000000100000e3f in main ()
(gdb)
Which makes it sound like there's some unhandled race condition(s) where the client has disconnected the socket while the server is still trying to send another message to that disconnected client.
Thanks,
John
More information about the zeromq-dev
mailing list