X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=inline;f=BUGS;h=ba4e1f1ad2f0f3f5c1fba83234def705ed340c45;hb=dc4be57ff0baeee18d43fbee1bfc1af4af50e522;hp=24a3d3c0743d7896fb7d81f1f1cece602bf3098c;hpb=617079f738359a0d58282badfd49982a263c15dc;p=sbcl.git diff --git a/BUGS b/BUGS index 24a3d3c..ba4e1f1 100644 --- a/BUGS +++ b/BUGS @@ -1073,17 +1073,6 @@ WORKAROUND: The problem is that both EVALs sequentially write to the same LVAR. -305: - (Reported by Dave Roberts.) - Local INLINE/NOTINLINE declaration removes local FTYPE declaration: - - (defun quux (x) - (declare (ftype (function () (integer 0 10)) fee) - (inline fee)) - (1+ (fee))) - - uses generic arithmetic with INLINE and fixnum without. - 306: "Imprecise unions of array types" a.(defun foo (x) (declare (optimize speed) @@ -1523,6 +1512,10 @@ WORKAROUND: (used on non-x86 platforms) being a more complete solution then what is done on x86. + On x86/linux large portions of tests/debug.impure.lisp have been commented + out as failures. The probable culprit for these problems is in x86-call-context + (things work fine on x86/freebsd). + More generally, the debugger internals suffer from excessive x86/non-x86 conditionalization and OAOOMization: refactoring the common parts would be good. @@ -1536,7 +1529,11 @@ WORKAROUND: (sparc and x86 at least) Since SBCL 0.8.20.1 this is hidden unless *SHOW-ENTRY-POINT-DETAILS* - is true. + is true (instead there appear two TEST frames at least on ppc). The + underlying cause seems to be that SB-C::TAIL-ANNOTATE will not merge + the tail-call for the XEP, since Python has by that time proved that + the function can never return; same happens if the function holds an + unconditional call to ERROR. 355: change-class of generic-function (reported by Bruno Haible) @@ -2034,20 +2031,49 @@ WORKAROUND: #.SB-EXT:SINGLE/DOUBLE-FLOAT-POSITIVE-INFINITY. These tests have been disabled on Darwin for now. -373: profiling issues on ppc/darwin - The following bit from smoke.impure.lisp fails on ppc/darwin: - (progn - (defun profiled-fun () - (random 1d0)) - (profile profiled-fun) - (loop repeat 100000 do (profiled-fun)) - (report)) - dropping into the debugger with a TYPE-ERROR: - The value -1073741382 is not of type UNSIGNED-BYTE. - The test has been disabled on Darwin till the bug is fixed. - 374: BIT-AND problem on ppc/darwin: The BIT-AND test in bit-vector.impure-cload.lisp results in fatal error encountered in SBCL pid 8356: GC invariant lost, file "gc-common.c", line 605 on ppc/darwin. Test disabled for the duration. + +375: MISC.555 + (compile nil '(lambda (p1) + (declare (optimize (speed 1) (safety 2) (debug 2) (space 0)) + (type keyword p1)) + (keywordp p1))) + + fails on hairy type check in IR2. + + 1. KEYWORDP is MAYBE-INLINE expanded (before TYPEP-like + transformation could eliminate it). + + 2. From the only call of KEYWORDP the type of its argument is + derived to be KEYWORD. + + 2. Type check for P1 is generated; it uses KEYWORDP to perform the + check, and so references the local function; from the KEYWORDP + argument type new CAST to KEYWORD is generated. The compiler + loops forever. + +377: Memory fault error reporting + On those architectures where :C-STACK-IS-CONTROL-STACK is in + *FEATURES*, we handle SIG_MEMORY_FAULT (SEGV or BUS) on an altstack, + so we cannot handle the signal directly (as in interrupt_handle_now()) + in the case when the signal comes from some external agent (the user + using kill(1), or a fault in some foreign code, for instance). As + of sbcl-0.8.20.20, this is fixed by calling + arrange_return_to_lisp_function() to a new error-signalling + function, but as a result the error reporting is poor: we cannot + even tell the user at which address the fault occurred. We should + arrange such that arguments can be passed to the function called from + arrange_return_to_lisp_function(), but this looked hard to do in + general without suffering from memory leaks. + +378: floating-point exceptions not signalled on x86-64 + Floating point traps are currently not enabled on the x86-64 port. + This is true for at least overflow detection (as tested in + float.pure.lisp) and divide-by-zero. + +379: TRACE :ENCAPSULATE NIL broken on ppc/darwin + See commented-out test-case in debug.impure.lisp.