Bug 50036 - pthread_once shouldn't return immediately if call in progress
pthread_once shouldn't return immediately if call in progress
Status: CLOSED WONTFIX
Product: eCos
Classification: Retired
Component: POSIX (EL/IX) (Show other bugs)
1.0
All Linux
medium Severity medium
: ---
: ---
Assigned To: ecc-bugs-int
ecc-bugs-int
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2001-07-26 03:34 EDT by Jonathan Larmour
Modified: 2007-04-18 12:35 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2003-06-20 12:01:29 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Jonathan Larmour 2001-07-26 03:34:21 EDT
From the net:

-=-=-=-=-
The pthread_once() implementation seems have different semantics with the
one in POSIX standard pthread.
(The reference is in page 118 in O'Reilly's book"Pthreads programming" 1st
ed. I assume that the book is correct on this.)

This is the text describing pthread_once() semantics on the book: "No
caller
will exit from pthread_once mechanism until the routine's first caller has
returned."
-=-=-=-=-

which is true. The poster suggested:

-=-=-=-=-
In a word, I think there should be a pair of mutex lock/unlocks around the
invocation of the function pointer passed by user in pthread_once() in
compat/posix/current/src/pthread.cxx to guarantee the correct semantics.
-=-=-=-=-

My reply includes:

-=-=-=-=-
That wouldn't be ideal as _all_ pthread_once's would be serialized. This
would be fatal if the called routine itself called pthread_once. Also we
have to worry about the thread being cancelled in the called routine.
Instead, at a guess, the thing to do is to use the pthread_once_t to record
whether the routine is currently still being processed, and then broadcast
a condition variable to cause it to be checked by any waiting routines that
have called it.
-=-=-=-=-
Comment 1 Alex Schuilenburg 2003-06-20 12:01:29 EDT
This bug has moved to http://bugs.ecos.sourceware.org/show_bug.cgi?id=50036

Note You need to log in before you can comment on or make changes to this bug.