On Fri, Aug 29, 2014 at 10:36 AM, <m...@netris.org> wrote: > On master, where we now require gc-7.2 or later, I guess we should be > able to simplify this and block all signals. > > However, it's not clear how to backport this to stable-2.0, which does > not even have a finalization thread, and yet gdb bug 17247 occurs with > Guile 2.0.11. Any idea how to prevent the problem on stable-2.0?
For gdb my plan is to block SIGCHLD before initializing guile and unblock it afterwards. That'll work regardless of guile version (assuming no new internal guile threads get created afterwards). For stable-2.0 you could do a similar thing I guess: block every signal not expected before initializing libgc and undo that afterwards. [taking care to not block signals libgc uses internally I guess, e.g. SIGPWR, SIGXCPU. I'm not sure if libgc checks and fails to initialize or unblocks them] [and, for completeness sake, we're only talking about asynchronous signals ... not SIGSEGV, etc.]