X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=c4c7cf234427d239ae9f167596852344555c6a83;hb=c0578d9893429c9c0da80ea5920360e4621fddab;hp=f92cfa82404e67059e5214725054dff18354916c;hpb=5919ecc5fee77630855da6aeeabdc7d8cc4f2762;p=sbcl.git diff --git a/BUGS b/BUGS index f92cfa8..c4c7cf2 100644 --- a/BUGS +++ b/BUGS @@ -21,6 +21,36 @@ but instead (MAKE-FOO) the program loops endlessly instead of printing the object. +If you run into a signal related bug, you are getting fatal errors +such as 'signal N is [un]blocked' or just hangs, and you want to send +a useful bug report then: + +- compile sbcl with ldb support (feature :sb-ldb, see + base-target-features.lisp-expr) and change '#define QSHOW_SIGNAL 0' + to '#define QSHOW_SIGNAL 1' in src/runtime/runtime.h. + +- isolate a smallish test case, run it + +- if it just hangs kill it with sigabrt: kill -ABRT + +- print the backtrace from ldb by typing 'ba' + +- attach gdb: gdb -p and get backtraces for all threads: + thread apply all ba + +- if multiple threads are in play then still in gdb, try to get Lisp + backtrace for all threads: 'thread apply all + call_backtrace_from_fp($ebp, 100)'. Substitute $ebp with $rbp on + x86-64. + +- send a report with the backtraces and the output (both stdout, + stderr) produced by sbcl + +- don't forget to include OS and SBCL version + +- if available include info on outcome of the same test with other + versions of SBCL, OS, ... + NOTES: @@ -494,31 +524,6 @@ WORKAROUND: c. (fixed in 0.8.4.23) -201: "Incautious type inference from compound types" - a. (reported by APD sbcl-devel 2002-09-17) - (DEFUN FOO (X) - (LET ((Y (CAR (THE (CONS INTEGER *) X)))) - (SETF (CAR X) NIL) - (FORMAT NIL "~S IS ~S, Y = ~S" - (CAR X) - (TYPECASE (CAR X) - (INTEGER 'INTEGER) - (T '(NOT INTEGER))) - Y))) - - (FOO ' (1 . 2)) => "NIL IS INTEGER, Y = 1" - - b. - * (defun foo (x) - (declare (type (array * (4 4)) x)) - (let ((y x)) - (setq x (make-array '(4 4))) - (adjust-array y '(3 5)) - (= (array-dimension y 0) (eval `(array-dimension ,y 0))))) - FOO - * (foo (make-array '(4 4) :adjustable t)) - NIL - 205: "environment issues in cross compiler" (These bugs have no impact on user code, but should be fixed or documented.) @@ -597,25 +602,6 @@ WORKAROUND: This is probably the same bug as 162 -235: "type system and inline expansion" - a. - (declaim (ftype (function (cons) number) acc)) - (declaim (inline acc)) - (defun acc (c) - (the number (car c))) - - (defun foo (x y) - (values (locally (declare (optimize (safety 0))) - (acc x)) - (locally (declare (optimize (safety 3))) - (acc y)))) - - (foo '(nil) '(t)) => NIL, T. - - As of 0.9.15.41 this seems to be due to ACC being inlined only once - inside FOO, which results in the second call reusing the FUNCTIONAL - resulting from the first -- which doesn't check the type. - 237: "Environment arguments to type functions" a. Functions SUBTYPEP, TYPEP, UPGRADED-ARRAY-ELEMENT-TYPE, and UPGRADED-COMPLEX-PART-TYPE now have an optional environment @@ -1198,52 +1184,6 @@ WORKAROUND: (make-instance 'bar) ] -357: defstruct inheritance of initforms - (reported by Bruno Haible) - When defstruct and defclass (with :metaclass structure-class) are mixed, - 1. some slot initforms are ignored by the DEFSTRUCT generated constructor - function, and - 2. all slot initforms are ignored by MAKE-INSTANCE. (This can be arguably - OK for initforms that were given in a DEFSTRUCT form, but for those - given in a DEFCLASS form, I think it qualifies as a bug.) - Test case: - (defstruct structure02a - slot1 - (slot2 t) - (slot3 (floor pi))) - (defclass structure02b (structure02a) - ((slot4 :initform -44) - (slot5) - (slot6 :initform t) - (slot7 :initform (floor (* pi pi))) - (slot8 :initform 88)) - (:metaclass structure-class)) - (defstruct (structure02c (:include structure02b (slot8 -88))) - slot9 - (slot10 t) - (slot11 (floor (exp 3)))) - ;; 1. Form: - (let ((a (make-structure02c))) - (list (structure02c-slot4 a) - (structure02c-slot5 a) - (structure02c-slot6 a) - (structure02c-slot7 a))) - Expected: (-44 nil t 9) - Got: (SB-PCL::..SLOT-UNBOUND.. SB-PCL::..SLOT-UNBOUND.. - SB-PCL::..SLOT-UNBOUND.. SB-PCL::..SLOT-UNBOUND..) - ;; 2. Form: - (let ((b (make-instance 'structure02c))) - (list (structure02c-slot2 b) - (structure02c-slot3 b) - (structure02c-slot4 b) - (structure02c-slot6 b) - (structure02c-slot7 b) - (structure02c-slot8 b) - (structure02c-slot10 b) - (structure02c-slot11 b))) - Expected: (t 3 -44 t 9 -88 t 20) - Got: (0 0 0 0 0 0 0 0) - 359: wrong default value for ensure-generic-function's :generic-function-class argument (reported by Bruno Haible) ANSI CL is silent on this, but the MOP's specification of ENSURE-GENERIC-FUNCTION says: @@ -1413,20 +1353,6 @@ WORKAROUND: (FOO 1 2) gives NO-APPLICABLE-METHOD rather than an argument count error. -395: Unicode and streams - One of the remaining problems in SBCL's Unicode support is the lack - of generality in certain streams. - a. FILL-POINTER-STREAMs: SBCL refuses to write (e.g. using FORMAT) - to streams made from strings that aren't character strings with - fill-pointers: - (let ((v (make-array 5 :fill-pointer 0 :element-type 'standard-char))) - (format v "foo") - v) - should return a non-simple base string containing "foo" but - instead errors. - - (reported on sbcl-help by "tichy") - 396: block-compilation bug (let ((x 1)) (dotimes (y 10)