1.0.41.18: threads: stop_for_gc_handler should check for foriegn contexts
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sat, 7 Aug 2010 13:45:45 +0000 (13:45 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sat, 7 Aug 2010 13:45:45 +0000 (13:45 +0000)
commitc808a8c105050a5384c94418a8c80fafdfdc78c4
treec5ad1ee7c37fa05135cb604da749a6cdfe49cc24
parent716153dd41af2df6ad91939fb3dcf0ba99cd72cf
1.0.41.18: threads: stop_for_gc_handler should check for foriegn contexts

  * stop_for_gc_handler() was unconditionally calling
fake_foreign_function_call(), even though a thread can legitimately
receive SIG_STOP_FOR_GC while in foreign code (and this is even the
normal situation when waiting for a mutex or waitqueue).

  * Use the now-idiomatic was_in_lisp variable fix: Check for an
active foreign-function call, only call fake_foreign_function_call
if the context is in lisp code, only undo the fake call if the
context was in lisp code.
src/runtime/interrupt.c
version.lisp-expr