Can't build with Fedora 28 and gcc 8.1.1
Using Fedora 28 with gcc 8.1.1, I cannot successfully build cmucl. Running bin/build.sh -R -c "" -o cmulisp
produces an error when running load-world.sh
on the first build. MAnually running bin/load-world.sh linux-2
givs:
; Loading #P"/nfs/apps/src/clnet/cmucl/dev/cmucl/src/tools/worldload.lisp".
What is the current lisp-implementation-version?
;; Loading #P"/nfs/apps/src/clnet/cmucl/dev/cmucl/linux-2/code/sharpm.sse2f".
;; Loading #P"/nfs/apps/src/clnet/cmucl/dev/cmucl/linux-2/code/backq.sse2f".
;; Loading #P"/nfs/apps/src/clnet/cmucl/dev/cmucl/linux-2/code/pprint-loop.sse2f".
Arithmetic error FLOATING-POINT-OVERFLOW signalled.
Operation was /, operands (99.0 8.498393e-39).
[Condition of type FLOATING-POINT-OVERFLOW]
Restarts:
0: [CONTINUE] Return NIL from load of "target:tools/worldload".
1: [ABORT ] Return to Top-Level.
Debug (type H for help)
(X86:SIGFPE-HANDLER #<unused-arg> 4 #.(INT-SAP #xF7B7174C))
Source:
; File: target:code/float-trap.lisp
(ERROR (QUOTE FLOATING-POINT-OVERFLOW) :OPERATION FOP :OPERANDS ...)
0]
The error is caused by hash-rable-rehash-threshold being some very small denormal. This despite the fact that when contructing a hash-table, we clamp the threshold to the range [0.1,1).
My guess is that gcc is somehow miscompiling gencgc.c.
Using exactly the same sources and previous binary, OpenSUSE and Ubuntu systems with an older version of lisp works perfectly. And if you take the lisp binary from the OpenSUSE build, I can sucessfully build cmucl completely, as long as I take care to make sure the build doesn't recompile lisp.