Hi Christian
* It is the very first send on that socket that fails. But I'm gaining the
impression that to 10% case where the send succeeds are those where I haven't
started the application in a while (>~10 minutes, not confirmed). I'm propertly
closing the socket and context properly afaik, but may be something is hanging
for ~minutes before it kills itself. Procexp shows no processed left from my
app though.
* Right, timeout is infinite. If I set a timeout, I get a res = 11 of which
neither I nor zmq_strerror can make any sense.
* TCP
BR
Björn
---
I have rougly (see my mail to Pieter for architectual naming):
Central Machine Interface object (owns several machine interface objects, but
problem exists also if only one object is instantiated):
m_pZContext = zmq_ctx_new ();
Machine interface objects:
Sender thread:
m_pZSendSocket = zmq_socket(m_pZContext, ZMQ_REQ);
int setOptOn = 1;
int timeout = 500;
int res;
res = zmq_setsockopt(m_pZSendSocket, ZMQ_REQ_CORRELATE,
&setOptOn, sizeof(setOptOn));
res = zmq_setsockopt(m_pZSendSocket, ZMQ_REQ_RELAXED,
&setOptOn, sizeof(setOptOn));
//res = zmq_setsockopt(m_pZSendSocket, ZMQ_SNDTIMEO, &timeout,
sizeof(timeout));
int result =
zmq_connect(m_pZSendSocket,"tcp://192.168.189.154:1278");
if (result != 0)
...
else
...
zmq_msg_t request;
zmq_msg_init_size(&request, len);
//copy the payload
memcpy_s(static_cast<char*>(zmq_msg_data(&request)),len,pStart,len);
int res = zmq_msg_send(&request,m_pZSendSocket,0);
//This send fails
zmq_msg_close(&request);
Receiver thread:
Pretty much the same, but we're binding instead of connecting
and we're using a different port.
-- network boundary --
Machine objects:
Sender and receiver thread very much like above
------------------------------------------------------------------------------------------------------
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Christian Kamm
Sent: Dienstag, 19. November 2013 15:11
To: ZeroMQ development list
Subject: Re: [zeromq-dev] Can't get ZMQ_REQ_RELAXED to run
Thanks for the data. I have some more questions, observations:
* So it's really the very first send() call on the REQ socket that fails? I'm
asking because REQ_RELAXED has no effect at all on the first send. Please
double check!
* From the stacktrace, it looks like you're running into the send timeout
(which is probably left at the default, infinite?) because there are no active
pipes.
* 'No active pipe' could be caused by REQ_RELAXED terminating the pipe where no
message was received in time. But a new one should come up automatically. Which
protocol are you using?
Regards,
Christian
On 11/19/2013 02:49 PM, Björn Kuhlbrodt wrote:
> Hi Christian
>
> Well, it's stuck in zmq::mailbox_t::recv {int rc = signaler.wait
> (timeout_);}. Note that this is the first message of a newly created
> socket I'trying to queue. The architecture is a bit more complex, see
> my reply to Pieters mail. Ah, also note that the send fail only in
> about 90% of the times I start the application. In the other 10% it
> runs just fine. Also note that everything is fine once I set
> ZMQ_REQ_RELAXED to false.
>
> I also tried to make a minimal version that I could post, but the
> minimal version works of course...
>
> Best regards Björn
>
>
>
> libzmq.dll!zmq::signaler_t::wait(int timeout_) Line 213 C++
>> libzmq.dll!zmq::mailbox_t::recv(zmq::command_t * cmd_, int
>> timeout_) Line 72 + 0xb bytes C++
> libzmq.dll!zmq::socket_base_t::process_commands(int timeout_, bool
> throttle_) Line 901 C++
> libzmq.dll!zmq::socket_base_t::send(zmq::msg_t * msg_, int flags_)
> Line 722 + 0xd bytes C++ libzmq.dll!zmq_msg_send(zmq_msg_t * msg_,
> void * s_, int flags_) Line 593 + 0x1b bytes C++
>
> ----------------------------------------------------------------------
> --------------------------------
>
>
-----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Christian
> Kamm Sent: Dienstag, 19. November 2013 06:11 To: ZeroMQ development
> list Subject: Re: [zeromq-dev] Can't get ZMQ_REQ_RELAXED to run
>
> A stack trace of the process when zmq_msg_send() blocks could already
> be telling. It sounds like it's getting stuck in either
> pipe::terminate() or dealer::xrecv()...
>
> Cheers, Christian
>
> Pieter Hintjens <[email protected]> wrote:
>
>> Hi Björn,
>>
>> The best thing when it comes to specific functionalities like this is
>> a minimal test case that shows the problem.
>>
>> -Pieter
>>
>> On Mon, Nov 18, 2013 at 9:09 AM, Björn Kuhlbrodt
>> <[email protected]> wrote:
>>> Hello
>>>
>>> I' trying to use the new (4.0.1) ZMQ_REQ_RELAXED in C++ with
>>> VS2010 (and the standard C-Binding from the 0MQ main site), but keep
>>> failing.
>>>
>>> What I have: One context with two ZMQ_REQ sockets in two different
>>> threads, one binds and answers to REQs, one connects and sends REQs.
>>> This runs fine and nice until one system crashes before answering a
>>> REQ - a known Problem of the REQ-REP.
>>>
>>> What I tried: I'm not too eager to kill the context to get the
>>> REQ-REP running again, because that would kill my other socket too.
>>> The new ZMQ_REQ_RELAXED came in very handy, just fit to solve the
>>> problem.
>>>
>>> BUT: Now the zmq_msg_send(...)-Method fails to return after a few
>>> packages (or even for the first packet) while the client is up and
>>> waiting for packages, yes even actively communicating with the
>>> server over the other socket. I tried ZMQ_REQ_CORRELATE on and off -
>>> doesn't make a change. Tried ZMQ_REQ_RELAXED off again
>>> - everything works (except in crash-case).
>>>
>>> So my question: Anyone here tried the ZMQ_REQ_RELAXED? Any idea?
>>> I'm willing to post code, but I'd need to extract the crucial parts,
>>> which could take a while.
>>>
>>> Regards Bjorn
>>>
>>>
>>>
>>>
>>> Dr. Björn Kuhlbrodt Senior Software Developer GP Inspect GmbH
>>>
>>> Tel: +49 89 750778 4729 Fax: +49 89 750778 4710 Mail:
>>> [email protected]
>>>
>>> GP Inspect GmbH | Hainbuchenring 9-11 | 82061 Neuried | Deutschland
>>> Geschäftsführer | Christian Probst, Dr. Eric Rüland, Enis Ersü,
>>> Martin Heinrich Amtsgericht München | HRB 173887
>>>
>>> A company of ISRA VISION Group
>>>
>>> --------------------------------------------------------------------
>>> -
>>>
>>>
--------------------------------- This e-mail may contain material
>>> that is confidential, privileged and for the sole use of the
>>> intended recipient. Any review, reliance or distribution by others
>>> or forwarding without express permission is strictly prohibited. If
>>> you are not the intended recipient, please contact the sender and
>>> delete all copies. GP Inspect GmbH, ISRA VISION AG, its branches and
>>> subsidiaries herewith exclude any liability for third-party
>>> information recognizably contained in this email or its attachments.
>>> Third-party information does not necessarily reflect the opinion of
>>> GP Inspect GmbH or ISRA VISION AG.
>>> --------------------------------------------------------------------
>>> -
>>>
>>>
---------------------------------
>>> WWW.GPSOLAR.COM
>>>
>>> WWW.ISRAVISION.COM
>>> --------------------------------------------------------------------
>>> -
>>>
>>>
---------------------------------
>>> _______________________________________________ zeromq-dev mailing
>>> list [email protected]
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>>
>>
>> -- - Pieter Hintjens CEO of iMatix.com Founder of ZeroMQ community
>> blog: http://hintjens.com
>> _______________________________________________ zeromq-dev mailing
>> list [email protected]
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> _______________________________________________ zeromq-dev mailing
> list [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> _______________________________________________ zeromq-dev mailing
> list [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev