Comment 21 for bug 1645798

Revision history for this message
Michi Henning (michihenning) wrote :

I've spent pretty much all day trying to track this down. The debug cycle time with core 16 in a VM doesn't help :-(

What I can see is that crap comes out of the ZmqReceiver when an object adapter tries to dispatch an incoming request to the scope. The problem doesn't manifest itself in the same way on each run. Sometimes, the read from the socket returns zero bytes, which triggers the "socket was closed" error.

Other times, the number of bytes read doesn't divide by the word size, which triggers an "impossible message size" error.

Yet other times, things fall over in the ObjectAdapter::dispatch() method when something throws during unmarshaling (presumably because the data that was read is crap), which is reported as "error unmarshaling request header".

It all points to some problem with zmq not respecting framing boundaries or indicating that a socket has a message ready to read, but then delivering incomplete or crap data.

I don't understand at this point why this happens with core 16 and not on classic. The library versions for zmq match what I have on my desktop.

I'll try this again tomorrow on classic and see whether I can figure out what's going wrong by comparing trace.