Comment 5 for bug 430696

Revision history for this message
Hiroyuki Komatsu (kom-narihara-lab) wrote :

Excuse, I'm not familiar to English.

It seems like this.
1. GET-FOREGROUND wait on *SESSION*, just before WITHOUT-INTERRUPTS+CONDITION-WAIT test.
2. SBCL sends signal to TERMINATE-THREAD which is waiting on *SESSION*
3. SBCL transfers control to cleanup-form of UNWIND-PROTECT by signal
4. In cleanup-form SBCL calls RELEASE-MUTEX, but owner of mutex does not restored at this point
    # FreeBSD does not restore mutex's state for condvar when calling signal handler, it does in user land
5. After above, FreeBSD restores owner of mutex(maybe, thread termination sequence.)
6. WITHOUT-INTERRUPTS+CONDITION-WAIT acquires mutex of *SESSION*, but this mutex still owned by terminated thread.