0.8.12.42
authorDaniel Barlow <dan@telent.net>
Mon, 19 Jul 2004 23:44:44 +0000 (23:44 +0000)
committerDaniel Barlow <dan@telent.net>
Mon, 19 Jul 2004 23:44:44 +0000 (23:44 +0000)
commita7c2f2622f1ceeeb3459cb6bbcf261bda1ff2327
tree2c989981cac18b8130c8714b5caf01124bb24d23
parent18b2c49c37c61160d8594c0ec00028bff55e41f6
0.8.12.42
         Fix the threading problems revealed by Edi's CL-PPCRE tests ...

 If target-arch.h is included before genesis/config.h, some
         runtime files with inline expansion of get_spinlock get the
         wrong version

 Significantly change handling of thread exit: the
         SIG_THREAD_EXIT handler just makes th->state=STATE_DEAD, does
         not do all_threads surgery, does not call Lisp code and is no
         longer deferrable, eliminating a problem where threads die at
         the start of GC and become zombified so cannot be stopped for
         GC

 Instead we call thread exit handlers from reap_dead_threads(),
         necessitating further changes in HANDLE-THREAD-EXIT, as it
 can now be called from threads other than the parent of the
 dead one

         stop_the_world doesn't actually need to hold
         all_threads_lock(), as it doesn't modify the all_threads
         list.  Likewise sig_stop_for_gc_handler(), which means the
         sched_yield() kludge can go away
src/code/gc.lisp
src/code/target-thread.lisp
src/code/target-unithread.lisp
src/compiler/generic/objdef.lisp
src/runtime/alloc.c
src/runtime/interrupt.c
src/runtime/thread.c
src/runtime/thread.h
src/runtime/x86-arch.h
src/runtime/x86-linux-os.c
version.lisp-expr