[zeromq-dev] BUG: SUB socket + multi-part message + disconnect + recv = Assertion failed at src/fq.cpp:117

Laughing hnwyllmm at 126.com
Fri Oct 7 08:04:20 CEST 2016



I think that the socket cannot recv message any more after disconnect.
The first frame is also an unexpected message. Maybe there have a latency between 'disconnect' and 'recv' to do the termination


At 2016-10-07 01:52:49, "af" <alotsof at gmx.net> wrote:
>
>
>* ZEROMQ VERSION
>
>    - 4.1.4
>    - 4.1.5
>
>
>* SYSTEM
>
>    - RHEL 6.8 on x86_64
>    - Ubuntu 16.04 on x86_64
>
>
>* TEST CASE (see attachment)
>
>    create PUB socket
>    bind endpoint
>
>    create SUB socket
>    subscribe all
>    connect endpoint
>
>    wait a little for connection to take place
>
>    send message with two frames through PUB
>
>    check SUB has data with zmq_poll
>
>    unsubscribe SUB from all
>    disconnect SUB from endpoint
>
>    receive frame 1 from SUB
>    receive frame 2 from SUB
>
>
>* EXPECTED BEHAVIOR
>
>    get message with two frames
>
>
>* ACTUAL BEHAVIOR
>
>    trying to retrieve the second frame of the message with zmq_msg_recv
>    triggers the assertion in src/fq.cpp:117.
>
>    $ ./p1
>    [26499] bound PUB to tcp://*:23456
>    [26499] subscribed SUB to all
>    [26499] connected SUB to tcp://localhost:23456
>    [26499] sent message through PUB
>    [26499] polled SUB socket: there is data
>    [26499] unsubscribed SUB from all
>    [26499] disconnected SUB from tcp://localhost:23456
>    [26499] receiving from sub...
>    [26499] reading frame 1 from sub...
>    [26499] received frame 1 through sub: data in first frame
>    [26499] reading frame 2 from sub...
>    Assertion failed: !more (src/fq.cpp:117)
>    Aborted (core dumped)
>
>
>* NOTE
>
>    everything works fine without the zmq_disconnect
>
>
>* OTHER CASES WITH SAME ASSERTION
>
>    http://lists.zeromq.org/pipermail/zeromq-dev/2016-September/030839.html
>    https://github.com/zeromq/libzmq/issues/1143
>
>
>* WHY WOULD SOMEONE DISCONNECT A SUB SOCKET WITH DATA?
>
>    Nodes can be added or removed. Some messages are commands to connect or
>    disconnect those nodes.
>
>
>* ADDITIONAL QUESTION
>
>    by the time I fetch the message from the SUB socket, I already
>expressed my
>    disinterest with ZMQ_UNSUBSCRIBE.
>
>    Should the SUB socket give me a message that doesn't match the currently
>    defined filters?
>
>    The specification at
>
>        https://rfc.zeromq.org/spec:29/PUBSUB/
>
>    is not clear to me.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20161007/a7c38a2a/attachment.htm>


More information about the zeromq-dev mailing list