[zeromq-dev] exception from recv()

Andrew Hume andrew at research.att.com
Thu Sep 27 20:21:15 CEST 2012


yes, you can get EINTR for a few reasons
and EAGAIN for a host of reasons.
mac os/x is particularly prone to this for some reason.
because of this, i never use a raw recv, i use this wrapper:


int
mrecv(void *sock, zmq_msg_t *msg, int flags)
{
	assert(zmq_msg_init(msg) == 0);
	while(zmq_recv(sock, msg, flags) < 0){
		if(errno == EINTR){
			continue;
		}
		if(errno == EAGAIN){
			if(flags & ZMQ_NOBLOCK)
				return -1;
			continue;
		}
		fprintf(stderr, "error on socket %p; ", sock);
		perror("recv");
		assert(0);
	}
	return 0;
}


On Sep 27, 2012, at 10:21 AM, Ian Barber wrote:

> On Thu, Sep 27, 2012 at 4:11 PM, Tom Wilberding <tom at wilberding.com> wrote:
> 
>> Thanks Ian but my reading of zmq.hpp and the release notes is that it is
>> throwing if it isn't EGAIN (not EINTR). I looked at the java bindings
>> they have similar logic.
>> 
> 
> Ah yes, you're right, sorry, careless reading.
> 
>> I should also point out that I have no idea what is the root cause of
>> the interrupted system call. It can run for hours without it occurring,
>> but I've found a few ways to induce it to happen, so if anyone has some
>> debugging tips, I'd appreciate the help. I'm not sending SIGINT/^C to my
>> app, there is something else going on. Is receiving EINTR during a
>> zmq_recv() for anything other than a SIGINT/^C something that others are
>> familiar with?
> 
> Do vaguely recall Andrew Hume having an issue of a similar nature -
> might be worth searching the list archives.
> 
> Ian
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev


------------------
Andrew Hume  (best -> Telework) +1 623-551-2845
andrew at research.att.com  (Work) +1 973-236-2014
AT&T Labs - Research; member of USENIX and LOPSA




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20120927/664ce91c/attachment.htm>


More information about the zeromq-dev mailing list