[zeromq-dev] Assertion during zmq_recv in 3.x

Martin Hurton hurtonm at gmail.com
Tue Jul 31 21:26:36 CEST 2012


Fixed in 9fab9937e516e78e6dbdf890e34f56cf80c9ff14. Can you check and
close the issue if it fixes your problem.

On Tue, Jul 31, 2012 at 5:48 PM, Stuart Brandt <stu at compuserve.com> wrote:
> Done. LIBZMQ-406
>
> Thanks for confirmation.  Let me know if there's any additional context
> needed.
>
> - Stuart
>
> On 7/31/2012 6:04 AM, Martin Hurton wrote:
>> Hi Stuart, could you please file an issue for this?
>>
>> - Martin
>>
>> On Fri, Jul 27, 2012 at 9:23 PM, Stuart Brandt <stu at compuserve.com> wrote:
>>> I get an assertion during a call to zmq_recv on 2 different OSes (OSX
>>> 10.7.4 and CentOS 5.8) under two different builds of 3.x (v3.2.0-rc1 and
>>> a recent build off latest at github.com/zeromq/libzmq).
>>>
>>> The assertion is:
>>> Assertion failed: (msg_->flags () & msg_t::identity) == 0 (router.cpp:220)
>>> Aborted
>>>
>>> The setup involves:
>>> 1) the simple message queue broker found at
>>> https://github.com/imatix/zguide/blob/master/examples/C/msgqueue.c
>>> I modified the #include to look for zmq.h rather than zhelpers.h to get
>>> it to compile with ZMQ 3.x
>>>
>>> 2) a minimal server implementation that connects to the broker and does
>>> a zmq_recv. Code is:
>>> //
>>> //  Demo of assertion in ZMQ 3.x by REP socket connecting to ROUTER socket
>>> //  Connects to tcp://localhost:5560
>>> //
>>> #include <stdio.h>
>>> #include <zmq.h>
>>>
>>> int main (void)
>>> {
>>>       char buf[80];   // buffer for zmq_recv call
>>>       int len;        // len returned by zmq_recv
>>>       void *ctx;      // ZMQ context
>>>       void *sock;     // ZMQ socket
>>>
>>>       // init ZMQ context, create a REP socket, and connect to ROUTER
>>>       ctx = zmq_ctx_new();
>>>       sock = zmq_socket(ctx,ZMQ_REP);
>>>       zmq_connect (sock, "tcp://localhost:5560");
>>>
>>>       // do a basic zmq_recv call...warn if it fails
>>>       len = zmq_recv(sock,buf,sizeof(buf),0);
>>>       if (len < 0) {
>>>           printf("zmq_recv failed - %s\n",zmq_strerror(errno));
>>>       }
>>>
>>>       // Done. Clean up and end
>>>       zmq_close (sock);
>>>       zmq_term (ctx);
>>>       return 0;
>>> }
>>>
>>>
>>> Steps to repro are start server, start broker, kill broker (spec.
>>> ctrl-C), restart broker. Server aborts with the above assertion.
>>>
>>> Is there something my code should be doing differently?
>>>
>>> Thanks....Stuart
>>>
>>>
>>>
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev at lists.zeromq.org
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev



More information about the zeromq-dev mailing list