Reproducible crash for mailbox.cpp:182 assertion!

Description

Example is in Ruby and depends on the zmqmachine gem (ruby reactor pattern using 0mq sockets). However, the explanation below will make it clear that this can be reproduced in any language.

https://gist.github.com/829967

1. Setup a REQ socket and bind it to a port.

2. Setup two REP sockets and connect both to the same port as the REQ socket. These sockets likely need to be in their own thread(s) if they are using blocking behavior. All communications between the REQ and REP will be load balanced.

3. Run a test (I like ping-pong) to see that this succeeds without error.

4. To make it crash, force both REP sockets to use the same identity using zmq_setsockopt(). Doing so causes the socket to disconnect/reconnect extremely rapidly (thousands per sec). Ultimately, it runs out of mailbox space and causes the assertion.

Environment

None

Assignee

Unassigned

Reporter

chuckremes

Labels

None

Priority

Configure