Hello 0MQ gurus, I've been using 0MQ for several years now and continue to be impressed with this amazing communications library! Recently I had an application abort when what I think was a connect() call accidentally using the same routing ID via the setsockopt(ZMQ_CONNECT_ROUTING_ID). I think the calling sequence is something like this:
setsockopt() // sets ZMQ_CONNECTION_ROUTING_ID connect() socket was used for some period of time disconnect() very quickly after the disconnect setsockopt() // same routing id as above connect() -> zmq_abort() The partial back trace is: #2 0x0000000000687609 in zmq::zmq_abort (errmsg_=errmsg_@entry=0x9f483d "!has_out_pipe (routing_id)") at src/err. cpp:88 #3 0x00000000006c3ba9 in zmq::router_t::identify_peer (this=this@entry=0x3824700, pipe_=0x3d7c700, locally_initia ted_=locally_initiated_@entry=true) at src/router.cpp:461 #4 0x00000000006c4238 in zmq::router_t::xattach_pipe (this=0x3824700, pipe_=0x3d7c700, subscribe_to_all_=<optimized out>, locally_initiated_=<optimized out>) at src/router.cpp:93 #5 0x00000000006975e1 in zmq::socket_base_t::attach_pipe (this=this@entry=0x3824700, pipe_=0x3d7c700, subscribe_to_all_=subscribe_to_all_@entry=false, locally_initiated_=locally_initiated_@entry=true) at src/socket_base.cpp:388 #6 0x0000000000697e87 in zmq::socket_base_t::connect (this=0x3824700, endpoint_uri_=0x39725a0 "tcp://172.17.0.8:8000") at src/socket_base.cpp:973 I think the disconnect() must be asynchronous and the routing ID was still in use at the time of the second connect() and thus the zmq_abort(). Does this make sense? The only work around I can think of is to sleep for a short period of time (10 seconds) before the 2nd connect() if the ROUTING id is being re-used in order to allow ZeroMQ enough time to remove the ROUTING ID. I do have LINGER set to zero on the socket which is of ROUTER type. Is there a better way to prevent this problem or work around what I think is a deferred deletion of the ROUTING_ID? Thanks! Mark
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org https://lists.zeromq.org/mailman/listinfo/zeromq-dev