[zeromq-dev] The signaler.recv() function return error after running long time
shuyoucun
shuyoucun at bwstor.com.cn
Thu Aug 1 11:16:48 CEST 2013
Hi all:
I meet a crash when IO thread mailbox receive a signal from application
thread, As following:
1. OS: win2007, the server and client run in one machine.
2. The socket type is DEALER(client) and ROUTER (server),
the crash happened after running a long time(averaged about24 hours),
and the signaler. recv() return 10054 when read the signal after read data
from pipe.
I have added log to zeromq library and found the crash is very
regularly, the application thread send a package(a heartbeat data
package(102 bytes), the zmq_send funcion call the send_activate_reader to
notify IO thread that it has send data, but The IO thread check it out after
about 20s(the poller pattern is select mechanism in IO thread), normally it
check it at once. After IO thread read command data from pipe, the mailbox
call signaler.recv() to clear signal in socket and the recv() function
return error, the error code is 10054. My application will never close the
socket except exiting it.
My test case produces a large of pnp events in system(add and remove
device straight). I don't know whether the pnp events will resulte in the
delay of select. Did anyone meet the problem? I see the connection between
IO thread and socket(zmq) is closed only when the signaler objcet is
destructed in mailbox. Is it a bug of zeromq?
Thanks very much.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130801/96e1d38f/attachment.htm>
More information about the zeromq-dev
mailing list