[zeromq-dev] Uninitialised command_t and decoder asserts

Steven McCoy steven.mccoy at miru.hk
Fri Jan 14 03:29:17 CET 2011


On 14 January 2011 09:48, Michael Small <michaelsmall at me.com> wrote:

> Hi,
>
> I've noticed random assertions mostly in decoder, and this seems to tie in
> with unitialised values of commant_t. While investing this I've noticed the
> following:
>
> #if defined ZMQ_MAKE_VALGRIND_HAPPY
>    memset (&cmd, 0, sizeof (cmd));
> #endif
>
> Valgrind does indeed complain about these uninitialised values, and the
> randomness of the asserts (looping a REQ/REP test continually will only
> sometimes on some platforms cause the assertion even with the same library
> version).
>
> Is it expected that not initialising these values correctly will in fact
> cause potentially incorrect / unexpected behaviour in ZMQ?
>

Valgrind cannot track individual byte usage for reading from an object which
is why it gives such errors.  If you set one byte in a ten byte array and
read that one byte that is perfectly acceptable code but Valgrind will raise
an error due to the other 9 uninitialized bytes.

With the ØMQ command in particular its just a little unclear that it is
always set.

This is common practice, you can see it in GLib and plenty of other code.

http://library.gnome.org/devel/glib/unstable/glib-running.html

I do the same with OpenPGM, in debug mode you can set
PGM_DEBUG=gc-friendlyand all memory blocks will be zeroed before use.

-- 
Steve-o
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20110114/f616a565/attachment.htm>


More information about the zeromq-dev mailing list