spawn bug?

Sean Kelly sean at invisibleduck.org
Tue Jan 25 13:09:28 PST 2011


Sean Kelly Wrote:

> 
> This one is weird, and doesn't appear related to 4307.  One of the threads (thread A) is in a GC collection and blocked trying to acquire the mutex protecting the global thread list within thread_resumeAll.  Another thread (thread B) is also blocked trying to acquire this mutex for other reasons.  My best guess is that pthread_mutex in OSX is trying to give ownership of the lock to thread B, and since thread B is suspended it effectively blocks thread A from acquiring it to resume execution after the GC cycle.

After some testing, it looks like I was right.  I have a fix for this, but it's far from ideal (though the diff is small): require everything but thread_resumeAll to acquire two locks in sequence, while thread_resumeAll only acquires the second.  I'll try to come up with something better.


More information about the Digitalmars-d-bugs mailing list