From: Gábor M. <me...@us...> - 2008-05-08 07:14:12
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv20748/src/code Modified Files: interr.lisp Log Message: 1.0.16.21: lose informatively when the tls is full Instead of eventually producing a segv or some random corruption: (progv (loop for i below 5000 collect (make-symbol (format nil "xxx~D" i))) (loop for i below 5000 collect i)) Index: interr.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/interr.lisp,v retrieving revision 1.48 retrieving revision 1.49 diff -u -d -r1.48 -r1.49 --- interr.lisp 28 Jan 2008 15:11:00 -0000 1.48 +++ interr.lisp 8 May 2008 07:14:02 -0000 1.49 @@ -282,6 +282,15 @@ :datum object :expected-type '(unsigned-byte 32))) +(deferr tls-exhausted-error () + ;; There is nothing we can do about it. A number of entries in the + ;; tls could be reserved and made available for recovery but since + ;; tls indices are never reused it would be kind of silly and + ;; without it signalling an error is more than likely to end in a + ;; recursive error. + (%primitive print "Thread local storage exhausted.") + (sb!impl::%halt)) + (macrolet ((define-simple-array-internal-errors () `(progn |