X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcold-init.lisp;h=48a2027742007c849fb385fe5aeec187c937b4d3;hb=c712f88b26cd7547ee984b90e18c134401335bc3;hp=802b325c10e649eeb7780c4648aa3680aa7cc459;hpb=760de025ce5437902c8a289bc831c6f6dc92fd16;p=sbcl.git diff --git a/src/code/cold-init.lisp b/src/code/cold-init.lisp index 802b325..48a2027 100644 --- a/src/code/cold-init.lisp +++ b/src/code/cold-init.lisp @@ -101,6 +101,7 @@ sb!unix::*unblock-deferrables-on-enabling-interrupts-p* nil *interrupts-enabled* t *interrupt-pending* nil + #!+sb-thruption #!+sb-thruption *thruption-pending* nil *break-on-signals* nil *maximum-error-depth* 10 *current-error-depth* 0 @@ -229,7 +230,8 @@ (show-and-call stream-cold-init-or-reset) (show-and-call !loader-cold-init) (show-and-call !foreign-cold-init) - #!-win32 (show-and-call signal-cold-init-or-reinit) + #!-(and win32 (not sb-thread)) + (show-and-call signal-cold-init-or-reinit) (/show0 "enabling internal errors") (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t) @@ -282,7 +284,7 @@ (critically-unreachable "after trying to die in QUIT")) (declaim (ftype (sfunction (&key (:code (or null exit-code)) - (:timeout (or null real)) + (:timeout (or null real)) (:abort t)) nil) exit)) @@ -307,10 +309,11 @@ TIMEOUT controls waiting for other threads to terminate when ABORT is NIL. Once current thread has been unwound and *EXIT-HOOKS* have been run, spawning new threads is prevented and all other threads are terminated by calling TERMINATE-THREAD on them. The system then waits -for them to finish using JOIN-THREAD with the specified TIMEOUT. If a -thread does not finish in TIMEOUT seconds, it is left to its own -devices while the exit protocol continues. TIMEOUT defaults to -*EXIT-TIMEOUT*, which in turn defaults to 60. +for them to finish using JOIN-THREAD, waiting at most a total TIMEOUT +seconds for all threads to join. Those threads that do not finish +in time are simply ignored while the exit protocol continues. TIMEOUT +defaults to *EXIT-TIMEOUT*, which in turn defaults to 60. TIMEOUT NIL +means to wait indefinitely. Note that TIMEOUT applies only to JOIN-THREAD, not *EXIT-HOOKS*. Since TERMINATE-THREAD is asynchronous, getting multithreaded application @@ -349,7 +352,7 @@ process to continue normally." (os-cold-init-or-reinit) (thread-init-or-reinit) (stream-reinit t) - #!-win32 + #!-(and win32 (not sb-thread)) (signal-cold-init-or-reinit) (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t) (float-cold-init-or-reinit))