1.0.4.30: make WITH-SPINLOCK-AND-WITHOUT-GCING inhibit interrupts as well
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 6 Apr 2007 09:58:08 +0000 (09:58 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 6 Apr 2007 09:58:08 +0000 (09:58 +0000)
commit06c341ebab3da2e81effcaacc2235f2b1e8bfa82
tree8ad7dd074eb98aba261fcbce1a113b8dc46fd8fe
parent7345f93252d6d6a4a0204b0a630c7ddac7134ed3
1.0.4.30: make WITH-SPINLOCK-AND-WITHOUT-GCING inhibit interrupts as well

 * Previously we could catch an interrupt while GC was inhibited, and
   hence any locks the interrupt handler was using could not know if
   they were being used with GC enabled or not => GC deadlocks.

 * Since this was detected by the runtime warning in WITH-INTERRUPTS
   about re-enabling interrupts while GC is inhibited keep it around
   in case we have more places this can happen.

 * Make MAYBE-HANDLE-PENDING-GC check for pending interrupts as well.

 * While we're at it, make WITH-SPINLOCK slightly safer: don't release
   locks we didn't obtain, and make us grab the lock inside the UWP.
   ...not 100% given in the presence of asynch unwinds, but better.

 * Also move *INTERRUPTS-ENABLED* and *INTERRUPT-PENDING* to SB-SYS.

 * Whitespace in WITHOUT-INTERRUPTS.
NEWS
package-data-list.lisp-expr
src/code/cold-init.lisp
src/code/early-impl.lisp
src/code/signal.lisp
src/code/target-hash-table.lisp
src/code/target-thread.lisp
src/code/toplevel.lisp
version.lisp-expr