puzzled: fork +libthr

Andriy Gapon avg at FreeBSD.org
Sun Apr 17 13:35:09 UTC 2011

on 16/04/2011 14:46 Andriy Gapon said the following:
> Guys,
> I am trying to debug this chromium issue:
> http://trillian.chruetertee.ch/chromium/ticket/13
> Not sure SOCK_SEQPACKET mentioned in the ticket is an actual culprit, the
> problem that interests me is that pthread_cond_wait() returns EPERM where it
> shouldn't.  That happens on stable/8.
> I compared ktrace of chromium on stable/8 and head.  Startup traces are very
> similar until execution gets to one particular place.  At that place stable/8
> chromium executes pthread_cond_wait - I see _umtx_op(UMTX_OP_CV_WAIT) and that's
> where EPERM is returned.  On the other hand it seems that head chromium executes
> something different at exactly the same place, perhaps sem_wait - I see
> _umtx_op(UMTX_OP_WAIT_UINT_PRIVATE).  So this is puzzle #1 for me why chromimum
> build or run-time chooses a different thing to call/use at that place.

OK, this was simple.
This is because of the new userland condvar implementation in head.
The call is the same pthread_cond_wait, just the different implementation in libthr.

Andriy Gapon

More information about the freebsd-threads mailing list