[Openmcl-devel] linux process hang
gb at clozure.com
Fri Feb 4 21:13:09 UTC 2005
Larry sent me the code that had been hanging. I wasn't able to reproduce
the problem, but something about this looked kind of familiar.
Some months ago I'd found a long-standing problem: the GC sometimes
frees certain unreferenced foreign pointers; when the GC is entered
in some thread, other threads are suspended and resumed when it's
finished. If one of those suspended threads owns a malloc/free-related
lock, the GC will deadlock when calling free().
That's pretty nasty (and pretty stupid); to make matters even more
stupid (and nasty, in their own way) I promptly checked in a fix
to the bleeding-edge CVS tree and completely forgot to check that
fix into the main tree.
I think that I did do a moment ago. I can't be certain that this
fixes the problem that Larry reported (since I couldn't reproduce
that in either the "main" or "bleeding-edge" lisps), but the conditions
under which this bug could occur and the symptoms were similar to
what he described.
Larry: if you do a "cvs update" and recompile the lisp kernel now, does
the problem persist ? (I found that the version of UFFI I have -
which may be fairly old - complained that WITH-CAST-POINTER was
not yet implemented; that would seem to be completely unrelated
to the hanging/deadlock that you saw.)
More information about the Openmcl-devel