l...@gnu.org (Ludovic Courtès) writes: > I should have mentioned this one: > http://thread.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/3185 > . > > This is normally somewhat fixed in current BDW-GC CVS, but Guile itself > may have troubles of its own dealing with cancellation.
Thanks. I thought already about cancellation, but I couldn't see anything in the test program that would do that. Do you know of anything in that program, or in BDW-GC, that does a pthread_cancel? > The critical section issue should be orthogonal, though. Yes. > Here it is: Thanks, and thanks to Ken also. I've cherry-picked the following branch_release-1-8 fixes. commit 499c43b03225abb8d3af9087b7630d523b74e13a Author: Neil Jerram <n...@ossau.uklinux.net> Date: Thu Mar 5 20:03:33 2009 +0000 Avoid throw from critical section, given invalid sigaction call (This is for a different critical section problem, but which still occurs (prior to this commit) in master.) commit 3009b5d557e1ebfd828fd0de9b1da5abb2f6ec9a Author: Neil Jerram <n...@ossau.uklinux.net> Date: Tue Mar 10 23:55:31 2009 +0000 Fix spurious `throw from within critical section' errors (This is the commit that I hope will fix the errors that you're seeing.) Can you see how the test runs now? Also, can I check my thinking on one other fix, and how it interacts with BDW-GC? commit 2bfcaf2605f8366d8c708c148bde5313b88497e0 Author: Neil Jerram <n...@ossau.uklinux.net> Date: Wed Mar 4 23:45:11 2009 +0000 Lock ordering: don't allocate when in critical section (scm_sigaction_for_thread) With BDW-GC I believe that allocation in a critical section is no longer a problem, specifically because - the stop-the-world mechanism uses signals and sigsuspend - whereas Guile GC used mutexes - and hence there are no concerns about lock ordering - it doesn't matter if there are threads waiting for the critical section when a GC happens, because the signal mechanism will still interrupt them. Is that right? Thanks! Neil