[zeromq-dev] PGM again: multiple recv addrs -> `sock->recv_gsr_len == 1' failed, and, get_receiver_fds() fails with a non-connected socket

Stuart Levy salevy at illinois.edu
Tue Aug 14 01:39:45 CEST 2012


Hey all,

Thanks, especially Steven, for your help!

I'm trying again to use zeromq (2.2.0) + PGM (5.2.119) in the way 
suggested for a bunch of nodes, each with an epgm PUB, and with each 
node SUBing to all the others' PUBs -- to use a separate multicast group 
for each PUBlisher node.

This yields code like (for node #2 out of 4) (doing the C equivalent of)
pubsock.bind("epgm://10.0.0.0/8;224.99.99.2;224.99.99.2:5000")
subsock.connect("epgm://10.0.0.0/8;224.99.99.1,224.99.99.3,224.99.99.4;224.99.99.2:5000")

But when connecting the SUB socket, there's a warning from inside libpgm 
-- apparently that we're listening to multiple mcast groups:

    Warn: file socket.c: line 2361 (pgm_connect): assertion 
`sock->recv_gsr_len == 1' failed

... which pgm_socket.cpp interprets as a fatal error (zmq_assert 
(pgm_error != NULL) ).
The pgm_socket.cpp comment suggests this means the parameters are 
invalid -- do they look invalid?

If I change that code to just continue despite the warning, then soon 
after there's a crash in a message-handling thread:

    zmq::pgm_socket_t::get_receiver_fds() calls
    pgm_getsockopt (sock, IPPROTO_PGM, PGM_RECV_SOCK, ...), ...
      which finds that sock->is_connected is false, and fails.

Not sure where to go from here.  Should I be doing this with zeromq 
3.2-rc1 instead?





More information about the zeromq-dev mailing list