Red Hat Bugzilla – Bug 211437
Bug in pthread_cond_wait in conjunction with thread cancellation.
Last modified: 2007-11-30 17:11:46 EST
Description of problem:
When a thread which is currently waiting on a condition with pthread_cond_wait
() is cancelled with pthread_cancel() and shortly before that, the condition
was signalled by pthread_cond_signal(), then the condition variable may become
If the condition is reused afterwards the thread get stuck in pthread_cond_wait
Version-Release number of selected component (if applicable):
fc5, glibc-2.4-8 und
See attached file.
If you execute the program, '+' charecters are displayed as long as all works
fine. After a while the condition variable gets corrupted and then '-'
characters are displayed. Though the main thread signals the condition
repeatedly then, the side thread stucks in pthread_cond_wait.
A work around to the problem is to destroy and initialize again the condition
variable after the thread was cancelled.
Created attachment 138868 [details]
C++ program for testing the bug.
This sounds very much like BZ#3123, which is fixed in glibc-2.4-11 (the current
FC-5 update glibc). Certainly I couldn't reproduce the problem with your
testcase on dual G5 with glibc-2.4-11.