Control stack exhaustion when compiling large /= form
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
(defun m2 (n) `(lambda () (/= ,@ (loop for i from 1 to n collect i))))
(m2 10) ==> (lambda () (/= 1 2 3 4 5 6 7 8 9 10))
(compile nil (m2 120))
==>
Control stack exhausted (no more space for function call frames).
This is probably due to heavily nested or infinitely recursive function
calls, or a tail call that SBCL cannot or has not optimized away.
[...]
0: (SB-KERNEL:
1: ("foreign function: call_into_lisp")
2: ("foreign function: post_signal_tramp")
3: (SB-KERNEL:
4: (SB-KERNEL:
5: (SB-C::
6: (SB-C::
7: (SB-C::
8: (SB-C::IR1-CONVERT #<SB-C::CTRAN 1 {100C09C383}> #<SB-C::CTRAN 2 {100C09CD03}> #<SB-C::LVAR 3 {100C09CD33}> (THE (OR FUNCTION SYMBOL) #<SB-C::GLOBAL-VAR :%SOURCE-NAME = :TYPE #1=#<SB-
9: (SB-C::
10: (SB-C::
11: (SB-C::IR1-CONVERT #<SB-C::CTRAN 1 {100C09C383}> #<SB-C::CTRAN 4 {100C09CA63}> #<SB-C::LVAR 5 {100C09CA93}> (= #:G4 #:G14))
12: (SB-C::
13: (SB-C::IR1-CONVERT #<SB-C::CTRAN 1 {100C09C383}> #<SB-C::CTRAN 6 {100332DE93}> #<SB-C::LVAR 7 {100332DEC3}> (IF (= #1=#:G4 #:G14) NIL (IF (= #1# #:G13) NIL (IF # NIL #))))
14: (SB-C::
[...]
Changed in sbcl: | |
status: | New → In Progress |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
3d8f54451089262 b2cbc43699c10ae e1a22f8e44