On Sep 3, 2010, at 7:31 AM, Martin Sustrik wrote:

> Hi all,
>
>> First, to summarize to others who were not part of the IRC discussion
>> yesterday (especially binding maintainers, but anyone doing signal  
>> handling
>> in a 0MQ application, take note!) what the "EINTR issue" is:
>
> To summarise Mato's discussion, the problem is that most interpreted
> languages ignore Ctrl+C while stuck in 0MQ blocking call such as  
> 'recv'.
>
>> Currently 0MQ API calls do not return with (-1, errno=EINTR) if a  
>> system
>> call being called by the 0MQ API returns EINTR. This is due to a  
>> historical
>> decision by Martin Sustrik.
>
> I am expected to admit that I'm an idiot here. So here it goes:
>
>     I'm an idiot.
>
-100

>> [Thanks to Martin Sustrik for documenting this precise race  
>> condition].
>
> A short summary of the proposed solution: Ctrl+C would work in 99% of
> cases. Still, it won't work occasionally. In such a case, press Ctrl+C
> once more.
>
>> Correct, except for the caveat in point f) above.
>
> To summarise: No, there's no way to make this work in 100% of cases.
> POSIX API is broken. Sorry, folks.
>
>> For 2.0.x, I'm not sure. The problem is it will break code that  
>> does not
>> expect API calls to return EINTR, *if and only if* that application  
>> does
>> get a signal. Given that most of the time the only thing signals  
>> are used
>> for is telling an application to terminate, I would not expect the  
>> effect
>> to be fatal.
>
> Actually, original decision to ignore EINTR was a user request!
>
> Thus, there are applications out there that depend on zmq_* functions
> not returning EINTR.
>
> I don't think there's a way to accommodate both existing install base
> and new apps written with stable branch (currently 2.0.8). I hate to  
> say
> it, but the fix will have to go to 2.1. Even that is not completely
> kosher. Backwards incompatible API change shoud go into new _major_  
> version.
>
> Maybe it's time to rethink the stability guidelines?
>
> Martin
> _______________________________________________
> 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

Reply via email to