ruricolist / serapeum

Utilities beyond Alexandria
MIT License
425 stars 42 forks source link

Compilation Issue #56

Closed jmercouris closed 4 years ago

jmercouris commented 4 years ago

Hello, trying to compile master, doesn't work:

~ $ sbcl
This is SBCL 2.0.1, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

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.
To load "cffi":
  Load 1 ASDF system:
    cffi
; Loading "cffi"
........
* (ql:quickload :serapeum)
To load "serapeum":
  Load 1 ASDF system:
    serapeum
; Loading "serapeum"
.
Switching to the BALLAND2006 optimizer
.........INFO: Control stack guard page unprotected
Control stack guard page temporarily disabled: proceed with caution

debugger invoked on a SB-KERNEL::CONTROL-STACK-EXHAUSTED in thread
#<THREAD "main thread" RUNNING {1000560083}>:
  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.

PROCEED WITH CAUTION.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [RETRY                        ] Retry
                                     compiling #<CL-SOURCE-FILE "serapeum" "level2" "range">.
  1: [ACCEPT                       ] Continue, treating
                                     compiling #<CL-SOURCE-FILE "serapeum" "level2" "range">
                                     as having been successful.
  2:                                 Retry ASDF operation.
  3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
                                     configuration.
  4:                                 Retry ASDF operation.
  5:                                 Retry ASDF operation after resetting the
                                     configuration.
  6: [ABORT                        ] Give up on "serapeum"
  7:                                 Exit debugger, returning to top level.

(SB-KERNEL::CONTROL-STACK-EXHAUSTED-ERROR)
0] 

any ideas? thanks cc: @ambrevar

jmercouris commented 4 years ago

Here's what it looks like in a SLIME REPL:

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.

PROCEED WITH CAUTION.
   [Condition of type SB-KERNEL::CONTROL-STACK-EXHAUSTED]

Restarts:
 0: [RETRY] Retry compiling #<CL-SOURCE-FILE "serapeum" "level2" "range">.
 1: [ACCEPT] Continue, treating compiling #<CL-SOURCE-FILE "serapeum" "level2" "range"> as having been successful.
 2: [RETRY] Retry ASDF operation.
 3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 4: [RETRY] Retry ASDF operation.
 5: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 --more--

Backtrace:
  0: (SB-KERNEL::CONTROL-STACK-EXHAUSTED-ERROR)
  1: ("foreign function: call_into_lisp")
  2: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  3: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  4: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  5: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  6: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  7: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  8: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
  9: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 10: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 11: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 12: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 13: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 14: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 15: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 16: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 17: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 18: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 19: (SERAPEUM::MAKE-BUCKET (((ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:ARRAY-INDEX ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER) (GO #:TAG2)) ((ALEXANDRIA.1.0.0:NON-NEGATIVE-INTEGER ALEXANDRIA.1.0.0:NON-NEG..
 --more--
jmercouris commented 4 years ago

The commit that breaks things is: 3771666 | * @ Don't specialize bucket accessors if space > speed.

jmercouris commented 4 years ago

I found out by reverting that commit I can get Serapeum to compile.