Commit [c037d6]  Maximize  Restore  History

Now we can interrupt-thread a thread that's GCing, and it
won't ignore us. It will defer the interrupt until the GC is
done, of course.

Those changes in detail:
(1) when deferring a GC from alloc(), we must remember that
there is no signal handler context available, so signal mask
should be taken from (and fiddled in) the normal process

(2) Don't put SIG_STOP_FOR_GC in the blockable set, or we can't
GC threads that are waiting on queues

(3) Remove #if 0 from around the copying of sigmask in
undo_fake_foreign_function_call. Replace sizeof(sigmask_t)
with an expression involving the value of NSIG and the rash
assumption that sigset_t is a bitmask.

(4) Commentary to indicate what's going on, and a couple of
new tests which represent cases that yesterday's code couldn't
cope with

Daniel Barlow Daniel Barlow 2003-08-22

changed src/runtime/gencgc.c
changed src/runtime/interrupt.c
changed tests/threads.impure.lisp
changed version.lisp-expr
src/runtime/gencgc.c Diff Switch to side-by-side view
src/runtime/interrupt.c Diff Switch to side-by-side view
tests/threads.impure.lisp Diff Switch to side-by-side view
version.lisp-expr Diff Switch to side-by-side view

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks