I'm working on adding zsock and zactor support to pyczmq, and I have most
of the work done, but my test for zsock is hanging.  The test runs and
works, zsock_destroy is called correctly (not that it would matter the
default linger is 0) but the process never exits.  gdb says it hanging on
poll in zsys's s_terminate_process:

#0  0x00007ffff78e2f7d in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ffff5361caa in poll (__timeout=-1, __nfds=1,
__fds=0x7fffffffdd10) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2  zmq::signaler_t::wait (this=this@entry=0x9e7dc8,
timeout_=timeout_@entry=-1)
at signaler.cpp:158
#3  0x00007ffff5350177 in zmq::mailbox_t::recv (this=this@entry=0x9e7d68,
cmd_=cmd_@entry=0x7fffffffdd70, timeout_=timeout_@entry=-1) at
mailbox.cpp:72
#4  0x00007ffff533fc0c in zmq::ctx_t::terminate (this=0x9e7cd0) at
ctx.cpp:141
#5  0x00007ffff5378921 in zmq_ctx_term (ctx_=<optimized out>) at zmq.cpp:157
#6  0x00007ffff5816891 in s_terminate_process () at zsys.c:273
#7  0x00007ffff7831071 in __run_exit_handlers (status=0,
listp=0x7ffff7bb66a8 <__exit_funcs>,
run_list_atexit=run_list_atexit@entry=true)
at exit.c:77
#8  0x00007ffff78310f5 in __GI_exit (status=<optimized out>) at exit.c:99
#9  0x00007ffff7816dec in __libc_start_main (main=0x46a2a1 <main>, argc=2,
ubp_av=0x7fffffffdf18, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7fffffffdf08) at libc-start.c:294
#10 0x00000000005735fe in _start ()

A little more digging looks like libzmq is waiting for a message from a
'reaper' thread that never arrives, context termination waits for this
message with a timeout of -1 so it never exits.

Anyone have any thoughts on this?  I don't know much about the
reaper/shutdown side of things.

-Michel
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to