------- Comment #2 from Hans dot Boehm at hp dot com 2006-04-14 20:51 ------- Based on the thread 13 stack trace, it looks to me like we're calling dlopen directly, when we should somehow be arranging to call GC_dlopen. GC_dlopen is included in the GC to avoid this sort of deadlock.
(The way GC_dlopen does this is by waiting for, and then disabling, GC during dlopen. That's not a great solution, since it can cause unneeded heap growth in the presence of frequent dlopens. It should perhaps conditionally trigger a GC before disabling it. But in any case, calling GC_dlopen is much better than generating a deadlock.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27170