Assertion reading type 0 message from pipe.
Description
Environment
Redhat/CentOS 5.7
Attachments
1
- 26 Oct 2011, 09:54 AM
Activity
Show:
Martin Sustrik October 27, 2011 at 10:33 AM
Ok. The patch looks OK. Can you please sign-off the patch and send it to the mailing list?
Ben Gray October 26, 2011 at 2:05 PM
Works though all the cases we could force the assert before.
Publishing very small messages causes an assert when there are lots of connections and disconnections going on.
The bug appears to be in dist.cpp in void zmq::dist_t::distribute (msg_t *msg_, int flags_) where when a write fails rm_ref is called which closes the VSM message. This close message is then push to any other pipes.
Later on when a message is read from the pipe size is called and the assert is thrown.
This condition was dealt with in version 2.x and I've written a patch that matches it as much as I can. Currently this patch is untested but I hope to do that later today.