[Openmcl-devel] linux process hang

Gary Byers 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 mailing list