diff options
Diffstat (limited to 'nptl/pthread_join_common.c')
-rw-r--r-- | nptl/pthread_join_common.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/nptl/pthread_join_common.c b/nptl/pthread_join_common.c index a8e884f341..ca3245b0af 100644 --- a/nptl/pthread_join_common.c +++ b/nptl/pthread_join_common.c @@ -57,12 +57,9 @@ __pthread_clockjoin_ex (pthread_t threadid, void **thread_return, if ((pd == self || (self->joinid == pd && (pd->cancelhandling - & (CANCELED_BITMASK | EXITING_BITMASK + & (CANCELING_BITMASK | CANCELED_BITMASK | EXITING_BITMASK | TERMINATED_BITMASK)) == 0)) - && !(self->cancelstate == PTHREAD_CANCEL_ENABLE - && (pd->cancelhandling & (CANCELED_BITMASK | EXITING_BITMASK - | TERMINATED_BITMASK)) - == CANCELED_BITMASK)) + && !cancel_enabled_and_canceled (self->cancelhandling)) /* This is a deadlock situation. The threads are waiting for each other to finish. Note that this is a "may" error. To be 100% sure we catch this error we would have to lock the data |