0.9.4.55:
[sbcl.git] / doc / internals-notes / threading-specials
index aad7915..b76218d 100644 (file)
@@ -27,7 +27,7 @@ The goals are
         spots.  Global state in closures, etc etc
            
        (4) suggest strategies (e.g. rewrites of affected code, suitable
-       locks and lock acquitision/release places) to fix the issues
+       locks and lock acquisition/release places) to fix the issues
        revealed in (2) and (3)
        
        (5) implement same
@@ -599,6 +599,10 @@ Note that the compiler and fasloader are strongly believed not to be
 thread-safe, so there is currently a big lock (*big-compiler-lock*)
 around all calls to the compiler or fasloader
 
+Note that INFO functions use a shared cache for the globaldb, and
+don't lock for cache invalidation. This will need fixing when BCL is
+removed.
+
 *COMPILE-FILE-PATHNAME*  
 *COMPILE-FILE-TRUENAME* 
 *COMPILE-PRINT* 
@@ -817,13 +821,13 @@ SB-FASL::FOP-LIST*-3
 
 SB-VM:*STATIC-SPACE-FREE-POINTER* 
 SB-VM:*INITIAL-DYNAMIC-SPACE-FREE-POINTER* 
-SB-VM:*CURRENT-CATCH-BLOCK* 
+SB-VM:*CURRENT-CATCH-BLOCK* ; bound at thread entry (in C)
 SB-VM:*STATIC-SYMBOLS* 
 SB-VM:*CONTROL-STACK-START* ; safe, bound at thread entry
 SB-VM:*READ-ONLY-SPACE-FREE-POINTER* 
 SB-VM:*BINDING-STACK-START* ; safe, bound at thread entry
 SB-VM:*CONTROL-STACK-END* ; safe, bound at thread entry
-SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK* 
+SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK*  ; bound at thread entry (in C)
 SB-VM::*FREE-TLS-INDEX* 
 SB-VM::*BINDING-STACK-POINTER* 
 SB-VM::*ALLOCATION-POINTER*    ; may be mostly unused ?
@@ -838,7 +842,7 @@ SB-KERNEL::*GC-TRIGGER*  ; I think this is dead, check
 SB-IMPL::*CURRENT-UNWIND-PROTECT-BLOCK*
 SB-IMPL::*CURRENT-CATCH-BLOCK*
 SB-IMPL::*READ-ONLY-SPACE-FREE-POINTER*
-SB-VM::*ALIEN-STACK* 
+SB-VM::*ALIEN-STACK*  ; bound in create_thread_struct()
 
 SB-IMPL::*OBJECTS-PENDING-FINALIZATION*  ; needs locking for writers
 
@@ -961,12 +965,12 @@ SB-KERNEL:*CURRENT-LEVEL-IN-PRINT*
 SB-KERNEL:*UNIVERSAL-FUN-TYPE* 
 SB-KERNEL:*COLD-INIT-COMPLETE-P* 
 SB-KERNEL:*UNIVERSAL-TYPE*                              ; readonly
-SB-KERNEL:*HANDLER-CLUSTERS* 
+SB-KERNEL:*HANDLER-CLUSTERS*                           ; bound per-thread
 SB-KERNEL:*EMPTY-TYPE*                                  ; readonly
 SB-KERNEL:*MAXIMUM-ERROR-DEPTH* 
-SB-KERNEL:*CONDITION-RESTARTS* 
+SB-KERNEL:*CONDITION-RESTARTS*                                 ; bound per-thread
 SB-KERNEL:*TYPE-SYSTEM-INITIALIZED* 
-SB-KERNEL:*RESTART-CLUSTERS* 
+SB-KERNEL:*RESTART-CLUSTERS*                            ; bound per-thread
 SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR* 
 SB-KERNEL::*BUILT-IN-CLASS-CODES*                       ; readonly
 SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN* 
@@ -1008,10 +1012,10 @@ SB-KERNEL::*DEF!STRUCT-SUPERTYPE*
 SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR* 
 SB-KERNEL::*CTYPE-OF-CACHE-VECTOR* 
 
-SB-IMPL::*READ-BUFFER* 
+SB-IMPL::*READ-BUFFER*  ; FIXME: non-threadsafe
 SB-IMPL::*SECONDARY-ATTRIBUTE-TABLE* 
 SB-IMPL::*STANDARD-READTABLE* 
-SB-IMPL::*OUCH-PTR* 
+SB-IMPL::*OUCH-PTR*  ; FIXME: non-threadsafe
 SB-IMPL::*ERROR-ERROR-DEPTH* 
 SB-IMPL::*CURRENT-ERROR-DEPTH* 
 SB-IMPL::*INTERNAL-REAL-TIME-BASE-SECONDS* 
@@ -1031,7 +1035,7 @@ SB-IMPL::*INTEGER-READER-SAFE-DIGITS*
 SB-IMPL::*TIMEZONE-TABLE* 
 SB-IMPL::*BQ-COMMA-FLAG*                                ; readonly
 SB-IMPL::*PRINT-OBJECT-IS-DISABLED-P*
-SB-IMPL::*MERGE-SORT-TEMP-VECTOR* 
+SB-IMPL::*MERGE-SORT-TEMP-VECTOR*  ; FIXME: SORT non-threadsafe, non-reentrant
 SB-IMPL::*PROFILE-HASH-CACHE* 
 SB-IMPL::*FIXNUM-POWER--1* 
 SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE*
@@ -1044,7 +1048,7 @@ SB-IMPL::*CLOSE-IN-PARENT*
 SB-IMPL::*IN-COMPILATION-UNIT*
 SB-IMPL::*CIRCULARITY-HASH-TABLE* 
 SB-IMPL::*LOAD-PRINT-STUFF*
-SB-IMPL::*ZAP-ARRAY-DATA-TEMP* 
+SB-IMPL::*ZAP-ARRAY-DATA-TEMP*       ; FIXME: ADJUST-ARRAY non-threadsafe
 SB-IMPL::*ACTIVE-PROCESSES* 
 SB-IMPL::*SHARP-SHARP-ALIST*     
 SB-IMPL::*BASE-POWER* 
@@ -1053,7 +1057,7 @@ SB-IMPL::*AVAILABLE-BUFFERS*
 SB-IMPL::*BQ-DOT-FLAG*                          ; readonly
 SB-IMPL::*CIRCULARITY-COUNTER* 
 SB-IMPL::*DIGITS* 
-SB-IMPL::*PREVIOUS-READTABLE-CASE* 
+SB-IMPL::*PREVIOUS-READTABLE-CASE* ; FIXME: printer not threadsafe
 SB-IMPL::*BQ-VECTOR-FLAG*                       ; readonly
 SB-IMPL::*ABBREV-WEEKDAY-TABLE* 
 SB-IMPL::*LOGICAL-HOSTS* 
@@ -1066,14 +1070,14 @@ SB-IMPL::*VALID-FUN-NAMES-ALIST*
 SB-IMPL::*PERIODIC-POLLING-FUNCTION* 
 SB-IMPL::*ABORTED-COMPILATION-UNIT-COUNT*
 SB-IMPL::*LONG-WEEKDAY-TABLE* 
-SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* 
+SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* ; FIXME: printer not threadsafe
 SB-IMPL::*BACKQUOTE-COUNT*                      ; bound
 SB-IMPL::*DIGIT-BASES* 
 SB-IMPL::*PREVIOUS-DRIBBLE-STREAMS* 
 SB-IMPL::*MAX-EVENT-TO-USEC* 
 SB-IMPL::*INPUT-ROUTINES* 
 SB-IMPL::*MAX-EVENT-TO-SEC* 
-SB-IMPL::*READ-BUFFER-LENGTH* 
+SB-IMPL::*READ-BUFFER-LENGTH* ; FIXME: not threadsafe
 SB-IMPL::*LONG-MONTH-TABLE* 
 SB-IMPL::*OLD-PACKAGE* 
 SB-IMPL::*INTEGER-READER-BASE-POWER* 
@@ -1081,9 +1085,9 @@ SB-IMPL::*ERROR-THROW-UP-COUNT*
 SB-IMPL::*BQ-AT-FLAG*                           ; readonly
 SB-IMPL::*MACHINE-VERSION*   ; unset/unbound ?  are we using this?
 SB-IMPL::*IGNORE-WILDCARDS* 
-SB-IMPL::*INCH-PTR* 
+SB-IMPL::*INCH-PTR*  ; FIXME: non-threadsafe
 SB-IMPL::*SHARP-EQUAL-ALIST* 
-SB-IMPL::*PREVIOUS-CASE* 
+SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe
 
 *INLINE-EXPANSION-LIMIT* 
 *DERIVE-FUNCTION-TYPES* 
@@ -1098,9 +1102,6 @@ SB-IMPL::*PREVIOUS-CASE*
 *MACROEXPAND-HOOK* 
 *RANDOM-STATE* 
 
-SB-BIGNUM::*TRUNCATE-Y*
-SB-BIGNUM::*TRUNCATE-X*
-
 SB-INT:*CL-PACKAGE*                     ; readonly
 SB-INT:*KEYWORD-PACKAGE*                ; readonly
 SB-INT:*SETF-FDEFINITION-HOOK*