Hi, On Sun 29 Jan 2012 19:00, l...@gnu.org (Ludovic Courtès) writes:
> Adding printfs shows that the thread calling scm_spawn_thread leaves > cond_wait before the signal thread has signaled the condition (in > really_spawn). >From >http://pubs.opengroup.org/onlinepubs/009604599/functions/pthread_cond_wait.html When using condition variables there is always a Boolean predicate involving shared variables associated with each condition wait that is true if the thread should proceed. Spurious wakeups from the pthread_cond_timedwait() or pthread_cond_wait() functions may occur. Since the return from pthread_cond_timedwait() or pthread_cond_wait() does not imply anything about the value of this predicate, the predicate should be re-evaluated upon such return. It seems this code is not robust in the face of spurious wakeups. I pushed a patch that waits for data.thread to become non-false. That should fix this issue. Cheers, Andy -- http://wingolog.org/