
Le 02/12/11 16:54, Brett Lentz a écrit :
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 11/30/2011 06:21 PM, Vicente J. Botet Escriba wrote:
On 11/30/2011 04:51 PM, Peter Dimov wrote:
Brett Lentz wrote:
Patch is attached.
I'd like to get some comments about this patch. Does it seem reasonable enough to accept? Is there a better way to handle it?
BOOST_VERIFY aborts on EINTR, but EINTR is usually not fatal, it just means you need to try later. You've attached the wrong patch. Anyway, POSIX specifically forbids pthread functions from returning EINTR.
I wasn't aware of this. DOH! Correct patch attached here.
Posix may forbid it, but that doesn't necessarily stop a broken implementation from doing it. Like the original e-mail said, this was a result of an actual customer's experience in an actual production situation. I agree that this should be managed by Boost.Thread as other workarounds. As many others we have been forced to use this idiom since a long time. Even if the patch is not too much time consuming it could use conditional compilation and be included only on bad
Le 30/11/11 23:05, Brett Lentz a écrit : posix implementations.
While I'd like to see the patch accepted, it would be equally valid to just say that it's not a problem boost should be solving, and that I need to file a bug with the OS vendor that they shouldn't be violating POSIX like this. ;-) Yes, please.
Best, Vicente
I've created ticket #6200 for this patch.
This part is not correct 55 res=pthread_cond_wait(&cond,&internal_mutex); 55 int ret; 56 do { 57 ret = pthread_cond_wait(&cond,m.mutex()->native_handle()); 58 } while (ret == EINTR); Note that before the mutex used was internal_mutex. Are you sure that this patch is working for your applications? https://svn.boost.org/trac/boost/ticket/6200#comment:1 Best, Vicente