> From: Andy Wingo <wi...@pobox.com>

>>  Can you explain what happens here?  Is it a deadlock?  What’s at
>>  ports.c:575?
> 
> It was a deadlock, but I fixed it.  It was something that locked all
> weak sets, but while doing so allocated memory.  Allocating memory ran
> finalizers which tried to manipulate the port set, but that lock was
> already taken: deadlock.
> 
> The solution will be to run finalizers in a separate thread, as the JVM
> does.

As an aside, I can get a similar sort of deadlock during garbage
collection of SMOBs if my smob_free function calls a scheme function.
But the manual does note that you should not call any functions in 
SMOB GC finalizers, so that wouldn't happen if I actually followed the
instructions.

-Mike

Reply via email to