[zeromq-dev] Accessing message after close?
Jon Dyte
jon at totient.co.uk
Sat Apr 30 10:33:53 CEST 2011
Pieter Hintjens wrote:
> Martin,
>
> While testing issue 199 I got this crash in xrep:
>
> Program terminated with signal 6, Aborted.
> #0 0x00007effad821ba5 in raise (sig=<value optimized out>) at
> ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1 0x00007effad8256b0 in abort () at abort.c:92
> #2 0x00007effae4ab329 in zmq::xrep_t::xrecv (this=0x1e028f0,
> msg_=0x7fff97959f70, flags_=0) at xrep.cpp:248
> #3 0x00007effae4a356c in zmq::socket_base_t::recv (this=0x1e028f0,
> msg_=0x7fff97959f70, flags_=0) at socket_base.cpp:519
> #4 0x00007effae4af178 in zmq_recv (s_=0x1e028f0, msg_=0x7fff97959f70,
> flags_=0) at zmq.cpp:384
> ...
>
> Which is here:
>
> // Deallocate old content of the message.
> int rc = msg_->close ();
> errno_assert (rc == 0);
>
> // If we are in the middle of reading a message, just grab next part of it.
> if (more_in) {
> zmq_assert (inpipes [current_in].active);
> bool fetched = inpipes [current_in].reader->read (msg_);
>
it's not accessing a closed message because this read call above should
have populated msg_
> zmq_assert (fetched);
> more_in = msg_->flags () & msg_t::more;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Question: is it normal that the code does msg_->flags() after doing
> msg_->close()? If so, any other plausible cause for this crash?
>
> -Pieter
> _______________________________________________
> 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