[zeromq-dev] Something's broken in session_base or there's something I really ought to know about multithreading.

Claudio Carbone erupter at libero.it
Tue Jan 15 10:52:12 CET 2013


On 14/01/13 18:14, Pieter Hintjens wrote:
> However, it's a complex test case to test that problem.
>
> My advice is to (a) determine what is actually wrong with the
> structure passed to the child thread, i.e., which fields are corrupted
> and when; and (b) strip this down to a much simpler test case (it's
> not a pgm issue at all, is it?) and (c) please use a pastebin or gist,
> because source code in emails is hard to play with.
>
Hello Pieter.
Thank you for your suggestions.
I'm sorry I couldn't figure out an even minimal test case, that was the 
best I could do to force the problem.

Anyway finally I found the solution thanks to a guy who had a similar 
problem.
It appears the quandary lied in the temporal buffers allocated by the 
compiler when you do string conversions like this

std::string addr = "192.168.1.1:5678";

zmq_connect(zsock, (const char*)addr.c_str());

In this case it's the compiler that somehow allocates a char array to 
hold the converted string for the called function to take.
Now eventually these buffers expire but you have no control whatsoever 
on any aspect of them.
So it appears that when the program is run normally, the time-to-live of 
these /automatic/ buffers is sufficient, while when you debug you may 
very well hinder the execution speed so much that the buffer is 
eliminated while it is still needed.

At least this is the explanation I've been able to extract from what 
happens because when I made the address a const char array for the 
socket that was giving problems, I was finally able to run the program 
through gdb and step through it at my leisure, whereas before I would 
get the assert error.

Everyone: thank you for your efforts and your patience.
BR
Claudio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130115/8a48723f/attachment.htm>


More information about the zeromq-dev mailing list