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 <[email protected]> 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
> [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev


------------------
Andrew Hume  (best -> Telework) +1 623-551-2845
[email protected]  (Work) +1 973-236-2014
AT&T Labs - Research; member of USENIX and LOPSA




_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to