Please sign in to comment.
Fix GC allocation mutex in child after a fork
Even though after a fork the child only inherits the single thread that called the fork(), if another thread in the parent was attempting to lock the mutex while being held in fork_child_prepare(), the mutex will be left in an inconsistent state in the child after the UNLOCK(). This is the case, at least, in Mac OS X and leads to an unusable GC in the child which will block when attempting to perform any GC operation that acquires the mutex. * pthread_support.c [CAN_HANDLE_FORK && USE_PTHREAD_LOCKS] (fork_child_proc): Add assertion (after UNLOCK) that the lock is not held actually, and, then, re-initialize GC_allocate_ml; add comments.
- Loading branch information...