Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Commit [c037d6] Maximize Restore History

0.8.2.38.stop_the_world.6

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
state

(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
Loading...
src/runtime/interrupt.c Diff Switch to side-by-side view
Loading...
tests/threads.impure.lisp Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...