[zeromq-dev] The signaler.recv() function return error after running long time

舒友村 shuyoucun at bwstor.com.cn
Thu Aug 1 12:56:54 CEST 2013


   Hi

    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.
-- 

best!


舒友村
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130801/b219b9b7/attachment.htm>


More information about the zeromq-dev mailing list