Hello everyone,
Continuing my last email the deadlock in "gctest" originates from file
phtread_support.c:2007
#ifndef NO_PTHREAD_TRYLOCK
if (1 == GC_nprocs || GC_collecting) {
pthread_mutex_lock(&GC_allocate_ml)
} else {
GC_generic_lock(&GC_allocate_ml);
}
When it tries to lock GC_allocate_ml, it's already used and so
pthread_mutex_lock locks the whole program.
(gdb) p GC_allocate_ml
$2 = {__held = 1, __lock = 0, __cthreadscompat1 = 0x0, __queue = 0x0,
__attr = 0x0, __data = 0x0, __owner = 0x0, __locks = 0}
This appears to happen after a thread switch.
I will report back when I have more.
Manolis