(make-list nil) drops into LDB
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Medium
|
Unassigned |
Bug Description
It appears that the argument check for MAKE-LIST triggers some kind of corruption, which causes heap exhaustion:
$ uname -a
Linux workbox 3.8.0-25-generic #37-Ubuntu SMP Thu Jun 6 20:47:07 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ sbcl
This is SBCL 1.1.8.52-04d3bdf, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (lisp-implement
"SBCL"
* (lisp-implement
"1.1.8.52-04d3bdf"
* (machine-type)
"X86-64"
* *features*
(:QUICKLISP :SB-BSD-
:ALIEN-CALLBACKS :ANSI-CL :ASH-RIGHT-VOPS :C-STACK-
:COMMON-LISP :COMPARE-
:FLOAT-EQL-VOPS :GENCGC :IEEE-FLOATING-
:LINKAGE-TABLE :LINUX :LITTLE-ENDIAN :MEMORY-
:OS-PROVIDES-
:OS-PROVIDES-
:OS-PROVIDES-
:SB-CORE-
:SB-SIMD-PACK :SB-SOURCE-
:STACK-
:STACK-
:STACK-
* (make-list nil)
debugger invoked on a TYPE-ERROR in thread
#<THREAD "main thread" RUNNING {1002AEB033}>:
The value NIL is not of type (MOD 461168601842738
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-
0: [ABORT] Exit debugger, returning to top level.
Heap exhausted during garbage collection: 0 bytes available, 32 requested.
Gen StaPg UbSta LaSta LUbSt Boxed Unboxed LB LUB !move Alloc Waste Trig WP GCs Mem-age
0: 0 0 0 0 0 0 0 0 0 0 0 10737418 0 0 0.0000
1: 17784 0 0 0 9840 0 0 0 0 322332112 105008 10737418 0 0 1.0002
2: 31850 31848 0 0 15215 28 0 0 11 499263200 219424 2000000 15205 0 0.0000
3: 0 0 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
4: 0 0 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
5: 0 0 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
6: 0 0 0 0 1206 167 0 0 0 44990464 0 2000000 1130 0 0.0000
Total bytes allocated = 1073384624
Dynamic-
GC control variables:
*GC-INHIBIT* = true
*GC-PENDING* = in progress
*STOP-
fatal error encountered in SBCL pid 434(tid 140737353971520):
Heap exhausted, game over.
Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb>
Changed in sbcl: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
Bisected (on x86-64, Linux) to:
cd5a858174d892f 876699373dc3ea3 89cf2c4d40 is the first bad commit 876699373dc3ea3 89cf2c4d40
commit cd5a858174d892f
Author: Stas Boukarev <email address hidden>
Date: Wed Jun 5 18:38:42 2013 +0400
Optimize (mod FIXNUM) type-checks on x86oids.
Instead of two (and (>= x 0) (< x FIXNUM)) comparisons, do one
unsigned.
(mod power-of-two) is further optimized by doing one mask test
determine the range and fixnumness in one go.