Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build on Fedora 38 fails at iclasp final link stage #1567

Open
JVDptt opened this issue Mar 28, 2024 · 8 comments
Open

Build on Fedora 38 fails at iclasp final link stage #1567

JVDptt opened this issue Mar 28, 2024 · 8 comments
Labels

Comments

@JVDptt
Copy link

JVDptt commented Mar 28, 2024

Describe the bug
A clear and concise description of what the bug is.

Building on Fedora Core 38 Linux (FC-38), x86_64, with :
o sbcl-2.4.2
o clang + LLVM v16.0.6
o glibc-2.37-18
o binutils-2.42 or 2.39-16

with :

`
$ git checkout 2.5.0

$ ./koga 2>&1 | tee koga.log && ninja -C build 2>&1 | tee build/ninja.build.log
`
fails at iclasp link stage :

`
[533/539] Creating archive boehmprecise/lib/libclasp.a

[534/539] Linking boehmprecise/iclasp

[534/539] Compiling clasp

[535/539] Linking boehmprecise/clasp to iclasp
`

A core-dump is suffered by iclasp.
See attached long stack-trace & coredump logs.

Expected behavior
A clear and concise description of what you expected to happen.

Building a Release Tagged GIT commit according to instructions in Wiki
(https://github.com/clasp-developers/clasp/wiki/Building-and-Installing-from-Source)
should succeed.

Actual behavior
A clear and concise description of what happened instead. This should include error messages and backtraces if there are any. If that would be more than a few dozen lines, please attach it in a file instead.

Code at issue

If applicable, example code that can be evaluated or compiled to reproduce the problem.
Ideally, this is short and self contained.
If it is not practicable to eliminate dependencies, please at least try to reduce them.

If the code is more than a few dozen lines, please attach a source file instead.

PLEASE SEE :

iclasp coredump log listing ( can attach full coredump xz file if requested) :
clasp.ninja.build.failure.iclasp.coredump.log.txt

ninja.build.log Stack-Traces:
clasp.ninja.build.failure.stacktrace.log.txt

Other steps to reproduce
If the problem cannot be reproduced from just a code sample, include other steps here.

  1. Step one
  2. Step two
  3. Etc.

Context

  • Versions or commit hashes of Clasp on which you observed the problem (if you have built from up to date source, saying so is fine, you don't need to dig around for hashes)
  • If relevant, your operating system and other aspects of your computing environment
  • If you believe the compiler may be at fault, relevant declarations, including optimize settings (use (clasp-cltl2:declaration-information 'optimize))
  • Any other context about the problem

I will investigate core-dump & link failure further, using :
$ strace -s8192 -f -e trace=execve ninja -C build ,
since Ninja's worst fault (IMHO) is lack of 'Verbose Mode' / print-all-commands option
( ninja-build/ninja#2378 ) .

@JVDptt JVDptt added the bug label Mar 28, 2024
@JVDptt
Copy link
Author

JVDptt commented Mar 28, 2024

Coredump details :

$ gdb boehmprecise/clasp /tmp/iclasp.coredump 
GNU gdb (GDB) 15.0.50.20240129-git
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from boehmprecise/clasp...
[New LWP 1746047]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `**boehmprecise/iclasp --norc --disable-mpi --ignore-image --feature clasp-min --l**'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  core::lisp_error (datum=datum@entry=..., arguments=...) at ../src/core/foundation.cc:1360
1360      if (!cl::_sym_error->fboundp()) {
(gdb) info reg rip
rip            0xe27a79            0xe27a79 <core::lisp_error(gctools::smart_ptr<core::T_O>, gctools::smart_ptr<core::T_O>)+41>
(gdb) disass/s  0xe27a79, 0xe27a88
Dump of assembler code from 0xe27a79 to 0xe27a88:
../src/core/foundation.cc:
1360      if (!cl::_sym_error->fboundp()) {
=> 0x0000000000e27a79 <_ZN4core10lisp_errorEN7gctools9smart_ptrINS_3T_OEEES3_+41>:      call   0xf2b710 <_ZNK4core8Symbol_O7fboundpEv>
   0x0000000000e27a7e <_ZN4core10lisp_errorEN7gctools9smart_ptrINS_3T_OEEES3_+46>:      test   %al,%al
   0x0000000000e27a80 <_ZN4core10lisp_errorEN7gctools9smart_ptrINS_3T_OEEES3_+48>:      je     0xe27aef <_ZN4core10lisp_errorEN7gctools9smart_ptrINS_3T_OEEES3_+159>

../include/clasp/gctools/smart_pointers.h:
591       template <class From> inline smart_ptr(smart_ptr<From> const& rhs) : theObject((Type*)rhs.theObject){};
   0x0000000000e27a82 <_ZN4core10lisp_errorEN7gctools9smart_ptrINS_3T_OEEES3_+50>:      mov    (%r12),%rdi

../src/core/foundation.cc:
1366      core__apply1(coerce::calledFunctionDesignator(cl::_sym_error), arguments, datum);
   0x0000000000e27a86 <_ZN4core10lisp_errorEN7gctools9smart_ptrINS_3T_OEEES3_+54>:      call   0xf4db30 <_ZN4core6coerce24calledFunctionDesignatorEN7gctools9smart_ptrINS_3T_OEEE>
End of assembler dump.
(gdb) info reg rdi r12
rdi            0x6                 6
r12            0x1da8ac0           31099584
(gdb) info reg rsp rbp rsi gs
rsp            0x7ffcf9d1dee0      0x7ffcf9d1dee0
rbp            0x7ffcf9d1e0d0      0x7ffcf9d1e0d0
rsi            0x7f513c1cc7cb      139986877597643
gs             0x0                 0
(gdb) where
#0  core::lisp_error (datum=datum@entry=..., arguments=...) at ../src/core/foundation.cc:1360
#1  0x0000000000f4dc36 in core::coerce::calledFunctionDesignator (obj=obj@entry=...) at ../src/core/designators.cc:70
#2  0x0000000001834c0c in core::eval::funcall<gctools::smart_ptr<core::Integer_O> > (fn=..., args=...) at ../include/clasp/core/evaluator.h:102
#3  gctools::handle_segv (signo=<optimized out>, info=<optimized out>, context=<optimized out>) at ../src/gctools/interrupt.cc:409
#4  <signal handler called>
#5  std::atomic<gctools::smart_ptr<core::FunctionCell_O> >::load (this=0x26, __m=std::memory_order::relaxed)
    at /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/atomic:297
#6  core::Symbol_O::functionCell (this=0x6) at ../include/clasp/core/symbol.h:335
#7  core::Symbol_O::fboundp (this=0x6) at ../src/core/symbol.cc:389
#8  0x0000000000e27a7e in core::lisp_error (datum=datum@entry=..., arguments=...) at ../src/core/foundation.cc:1360
...

That core::lisp_error() stack trace repeats more than 100,000 times - it looks like infinite stack recursion !

Any ideas on how to fix / progress to a working build would be much appreciated .

@JVDptt
Copy link
Author

JVDptt commented Mar 28, 2024

I'd suggest some sort of re-entry detector in core::lisp_error() ?

ie. core::lisp_error() calls fboundp() which calls core::lisp_error() - this recursion needs to be detected and limited.

@JVDptt
Copy link
Author

JVDptt commented Mar 28, 2024

Actually, I am building with latest binutils-2.42 in /usr/local/bin /usr/local/lib64, I will try re-building
with standard system binutils-2.39-16 .

@JVDptt
Copy link
Author

JVDptt commented Mar 28, 2024

Yes, exactly the same error and coredump occur using either binutils v2.39-16 or binutils v2.42 .

What Clang / LLVM + binutils version do you use for compiling ?
Evidentally not clang-16.0.6 or the above binutils versions.

The CFLAGS / CXXFLAGS / LDFLAGS I use are :

$ declare -x CC=gcc CXX=g++ CFLAGS='-std=gnu17 -march=x86-64 -mtune=native -DPIC -fPIC -O3 -g -pipe -Wall -Wextra -Wno-error' CXXFLAGS='-std=gnu++20 -march=x86-64 -mtune=native -DPIC -fPIC  -O3 -g -pipe -Wall -Wextra -Wno-error' CLANG=clang LDFLAGS='-O3 -g -flto -fpic'

The actual command that enters infinite recursion and coredumps,
( obtained by running 'strace -s 8192 -e execve ninja' in the build directory), is :

[pid 1763609] execve("boehmprecise/iclasp", ["boehmprecise/iclasp", "--norc", "--disable-mpi", "--ignore-image", "--feature", "clasp-min", "--load", "compile-clasp.lisp", "--", "base", "0", "SYS:SRC;LISP;KERNEL;STAGE;BASE;0-BEGIN.LISP", "SYS:SRC;LISP;KERNEL;STAGE;BASE;1-BEGIN.LISP", "SYS:SRC;LISP;KERNEL;LSP;PROLOGUE.LISP", "SYS:SRC;LISP;KERNEL;INIT.LISP", "SYS:SRC;LISP;KERNEL;CMP;RUNTIME-INFO.LISP", "SYS:SRC;LISP;KERNEL;LSP;SHARPMACROS.LISP", "SYS:SRC;LISP;KERNEL;CMP;JIT-SETUP.LISP", "SYS:SRC;LISP;KERNEL;CLSYMBOLS.LISP", "SYS:SRC;LISP;KERNEL;LSP;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;LSP;FOUNDATION.LISP", "SYS:SRC;LISP;KERNEL;LSP;EXPORT.LISP", "SYS:SRC;LISP;KERNEL;LSP;DEFMACRO.LISP", "SYS:SRC;LISP;KERNEL;LSP;HELPFILE.LISP", "SYS:SRC;LISP;KERNEL;LSP;EVALMACROS.LISP", "SYS:SRC;LISP;KERNEL;LSP;CLASPMACROS.LISP", "SYS:SRC;LISP;KERNEL;LSP;SOURCE-TRANSFORMATIONS.LISP", "SYS:SRC;LISP;KERNEL;LSP;ARRAYLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;SETF.LISP", "SYS:SRC;LISP;KERNEL;LSP;LISTLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;MISLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;DEFSTRUCT.LISP", "SYS:SRC;LISP;KERNEL;LSP;PREDLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;CDR-5.LISP", "SYS:SRC;LISP;KERNEL;LSP;CMUUTIL.LISP", "SYS:SRC;LISP;KERNEL;LSP;SEQMACROS.LISP", "SYS:SRC;LISP;KERNEL;LSP;SEQ.LISP", "SYS:SRC;LISP;KERNEL;LSP;SEQLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;IOLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;TRACE.LISP", "SYS:SRC;LISP;KERNEL;LSP;DEBUG.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPEXPORTS.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPSETUP.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPUTIL.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPINTRINSICS.LISP", "SYS:SRC;LISP;KERNEL;CMP;STARTUP-PRIMITIVES.LISP", "SYS:SRC;LISP;KERNEL;CMP;PRIMITIVES.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPIR.LISP", "SYS:SRC;LISP;KERNEL;CMP;DEBUGINFO.LISP", "SYS:SRC;LISP;KERNEL;CMP;ARGUMENTS.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPRUNALL.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPLITERAL.LISP", "SYS:SRC;LISP;KERNEL;CMP;TYPEQ.LISP", "SYS:SRC;LISP;KERNEL;CMP;CODEGEN-SPECIAL-FORM.LISP", "SYS:SRC;LISP;KERNEL;CMP;COMPILE.LISP", "SYS:SRC;LISP;KERNEL;CMP;EXTERNAL-CLANG.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPNAME.LISP", "SYS:SRC;LISP;KERNEL;CMP;BYTECODE-MACHINES.LISP", "SYS:SRC;LISP;KERNEL;CMP;BYTECODE-REFERENCE.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPREPL-BYTECODE.LISP", "SYS:GENERATED;BASE-TRANSLATIONS.LISP", "SYS:SRC;LISP;KERNEL;STAGE;BASE;0-END.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPWALK.LISP", "SYS:SRC;LISP;KERNEL;LSP;ASSERT.LISP", "SYS:SRC;LISP;KERNEL;LSP;NUMLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;DESCRIBE.LISP", "SYS:SRC;LISP;KERNEL;LSP;MODULE.LISP", "SYS:SRC;LISP;KERNEL;LSP;LOOP2.LISP", "SYS:SRC;LISP;KERNEL;CMP;DISASSEMBLE.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-CHARACTER.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-NUMBER.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-TYPE.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-CONTROL.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-SEQUENCE.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-CONS.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-ARRAY.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-OBJECT.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-CONDITION.LISP", "SYS:SRC;LISP;KERNEL;CMP;OPT;OPT-PRINT.LISP", "SYS:SRC;LISP;KERNEL;LSP;SHIFTF-ROTATEF.LISP", "SYS:SRC;LISP;KERNEL;LSP;ASSORTED.LISP", "SYS:SRC;LISP;KERNEL;LSP;PACKLIB.LISP", "SYS:SRC;LISP;KERNEL;LSP;DEFPACKAGE.LISP", "SYS:SRC;LISP;KERNEL;LSP;FORMAT.LISP", "SYS:SRC;LISP;KERNEL;LSP;MP.LISP", "SYS:SRC;LISP;KERNEL;LSP;ATOMICS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;FLAG.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;CONSTRUCTOR.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;REINITIALIZER.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;CHANGER.LISP", "SYS:SRC;LISP;KERNEL;CLOS;HIERARCHY.LISP", "SYS:SRC;LISP;KERNEL;CLOS;CPL.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STD-SLOT-VALUE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;SLOT.LISP", "SYS:SRC;LISP;KERNEL;CLOS;BOOT.LISP", "SYS:SRC;LISP;KERNEL;CLOS;KERNEL.LISP", "SYS:SRC;LISP;KERNEL;CLOS;OUTCOME.LISP", "SYS:SRC;LISP;KERNEL;CLOS;DISCRIMINATE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;DTREE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;DTREE-GRAPHVIZ.LISP", "SYS:SRC;LISP;KERNEL;CLOS;EFFECTIVE-ACCESSOR.LISP", "SYS:SRC;LISP;KERNEL;CLOS;CLOSFASTGF.LISP", "SYS:SRC;LISP;KERNEL;CLOS;SATIATION.LISP", "SYS:SRC;LISP;KERNEL;CLOS;METHOD.LISP", "SYS:SRC;LISP;KERNEL;CLOS;COMBIN.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STD-ACCESSORS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;DEFCLASS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;SLOTVALUE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STANDARD.LISP", "SYS:SRC;LISP;KERNEL;CLOS;BUILTIN.LISP", "SYS:SRC;LISP;KERNEL;CLOS;CHANGE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STDMETHOD.LISP", "SYS:SRC;LISP;KERNEL;CLOS;GENERIC.LISP", "SYS:SRC;LISP;KERNEL;CLOS;FIXUP.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;CELL.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;EFFECTIVE-METHOD.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;SVUC.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;SHARED-INITIALIZE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;INITIALIZE-INSTANCE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;ALLOCATE-INSTANCE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;MAKE-INSTANCE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;COMPUTE-CONSTRUCTOR.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;DEPENDENTS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;COMPILER-MACROS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;REINITIALIZE-INSTANCE.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;UPDATE-INSTANCE-FOR-DIFFERENT-CLASS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STATIC-GFS;CHANGE-CLASS.LISP", "SYS:SRC;LISP;KERNEL;LSP;SOURCE-LOCATION.LISP", "SYS:SRC;LISP;KERNEL;LSP;DEFVIRTUAL.LISP", "SYS:SRC;LISP;KERNEL;CLOS;STREAMS.LISP", "SYS:SRC;LISP;KERNEL;LSP;PPRINT.LISP", "SYS:SRC;LISP;KERNEL;LSP;FORMAT-PPRINT.LISP", "SYS:SRC;LISP;KERNEL;CLOS;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CLOS;PRINT.LISP", "SYS:SRC;LISP;KERNEL;CLOS;SEQUENCES.LISP", "SYS:SRC;LISP;KERNEL;CMP;COMPILER-CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;LSP;PACKLIB2.LISP", "SYS:SRC;LISP;KERNEL;CLOS;INSPECT.LISP", "SYS:SRC;LISP;KERNEL;CLOS;TELEMETRY.LISP", "SYS:SRC;LISP;KERNEL;LSP;LOADLTV.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;DEFINITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;BINDING.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;STRINGS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;SYMBOLS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;MACROS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;LISTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;TYPES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;IO.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;HASH-TABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;CONTROL-FLOW.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;ARRAYS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;SEQUENCES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;NUMBERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-1;FEATURES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-2;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-2;ARRAYS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-2;CONTROL-FLOW.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-2;SEQUENCES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ALEXANDRIA;ALEXANDRIA-2;LISTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LOCALE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;DATE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LANGUAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LANGUAGE-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LANGUAGE-FRENCH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LANGUAGE-SWEDISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LANGUAGE-VIETNAMESE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;LANGUAGE-JAPANESE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;CONDITION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;DOCUMENTATION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;INIT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;CST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;CONS-CST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LISTIFY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;CSTIFY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;CST-FROM-EXPRESSION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;QUASIQUOTATION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;RECONSTRUCT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DECLARATIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;BODY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LIST-STRUCTURE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;BINDINGS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;CONDITION-REPORTERS-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;CLIENT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;ENSURE-PROPER.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;GRAMMAR-SYMBOLS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;LAMBDA-LIST-KEYWORDS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;GRAMMAR.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;STANDARD-GRAMMARS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;EARLEY-ITEM.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;EARLEY-STATE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;PARSER.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;SCANNER-ACTION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;EARLEY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;PARSE-TOP-LEVELS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;LAMBDA-LIST;UNPARSE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLOSER-MOP;CLOSER-MOP-PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLOSER-MOP;CLOSER-MOP-SHARED.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLOSER-MOP;CLOSER-CLASP.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;UTILITIES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;READ-CHAR.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;BASE;MESSAGES-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;MESSAGES-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;SIMPLE;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;SIMPLE;READTABLE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;SIMPLE;METHODS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READTABLE;SIMPLE;MESSAGES-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;MORE-VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;ADDITIONAL-CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;UTILITIES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;LABELED-OBJECTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;TOKENS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;READ-COMMON.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;READ.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;MACRO-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;INIT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;QUASIQUOTE-MACRO.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;DEPRECATION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;READER;MESSAGES-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;PARSE-RESULT;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;PARSE-RESULT;CLIENT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;PARSE-RESULT;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;PARSE-RESULT;LABELED-OBJECTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;PARSE-RESULT;READ.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;CONCRETE-SYNTAX-TREE;PACKAGE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;CONCRETE-SYNTAX-TREE;CLIENT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;CONCRETE-SYNTAX-TREE;LABELED-OBJECTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;ECLECTOR;CODE;CONCRETE-SYNTAX-TREE;READ.LISP", "SYS:SRC;LISP;KERNEL;CMP;ECLECTOR-CLIENT.LISP", "SYS:SRC;LISP;KERNEL;CMP;FIXUP-ECLECTOR-READTABLES.LISP", "SYS:SRC;LISP;KERNEL;CMP;ACTIVATE-CLASP-READTABLES-FOR-ECLECTOR.LISP", "SYS:SRC;LISP;KERNEL;CMP;DEFINE-UNICODE-TABLES.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPLTV.LISP", "SYS:SRC;LISP;KERNEL;CMP;DISLTV.LISP", "SYS:SRC;LISP;KERNEL;CMP;COMPILE-FILE.LISP", "SYS:SRC;LISP;KERNEL;CMP;CMPBUNDLE.LISP", "SYS:SRC;LISP;KERNEL;LSP;BYTECODE-INTROSPECT.LISP", "SYS:SRC;LISP;KERNEL;LSP;FLI.LISP", "SYS:SRC;LISP;KERNEL;LSP;POSIX.LISP", "SYS:SRC;LISP;MODULES;SOCKETS;SOCKETS.LISP", "SYS:SRC;LISP;KERNEL;LSP;TOP.LISP", "SYS:SRC;LISP;KERNEL;STAGE;BASE;1-END.LISP", "SYS:SRC;LISP;KERNEL;STAGE;BASE;2-BEGIN.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;INPUT-OUTPUT;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;INPUT-OUTPUT;IO.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ATTRIBUTES;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ATTRIBUTES;FLAGS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ATTRIBUTES;ATTRIBUTES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ABSTRACT-SYNTAX-TREE;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ABSTRACT-SYNTAX-TREE;GENERAL-PURPOSE-ASTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ABSTRACT-SYNTAX-TREE;GRAPHVIZ-DRAWING.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ABSTRACT-SYNTAX-TREE;MAP-AST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;PRIMOP;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;PRIMOP;INFO.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;PRIMOP;DEFINITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;SET;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;SET;SET.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CONDITIONS;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CONDITIONS;PROGRAM-CONDITION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CONDITIONS;ORIGIN.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CONDITIONS;NOTE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;METER;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;METER;METER.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CTYPE;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CTYPE;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CTYPE;OTHER-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CTYPE;DEFAULT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;STRUCTURE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;INSTRUCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;MAP.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;GRAPH-MODIFICATIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;VERIFY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;DISASSEMBLE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR;CONDITION-REPORTERS-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-BUILDER;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-BUILDER;BUILDER.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;AST-TO-BIR;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;AST-TO-BIR;INFRASTRUCTURE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;AST-TO-BIR;COMPILE-GENERAL-PURPOSE-ASTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;AST-TO-BIR;COMPILE-MULTIPLE-VALUE-RELATED-ASTS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;AST-TO-BIR;COMPILE-PRIMOPS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;ELIMINATE-COME-FROMS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;PROCESS-CAPTURED-VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;DELETE-TEMPORARY-VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;INTERPOLATE-FUNCTION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;COPY-FUNCTION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;INLINE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;SIMPLE-UNWIND.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;META-EVALUATE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;BIR-TRANSFORMATIONS;GENERATE-TYPE-CHECKS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;QUERY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;AUGMENTATION-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;DEFAULT-AUGMENTATION-CLASSES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;COMPILE-TIME.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;OPTIMIZE-QUALITIES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;DECLARATIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;TYPE-INFORMATION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;DEFAULT-INFO-METHODS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;ENVIRONMENT;EVAL.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;CONDITION-REPORTERS-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;POLICY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;DEFINE-POLICY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;OPTIMIZE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;COMPILATION-POLICY;COMPUTE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;WHOLE-PARAMETERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;CONDITION-GENERATION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;REQUIRED-PARAMETERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;OPTIONAL-PARAMETERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;REST-PARAMETERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;KEY-PARAMETERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;AUX-PARAMETERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;LAMBDA-LIST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;PARSE-MACRO.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;DB-DEFMACRO.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CONCRETE-SYNTAX-TREE;DESTRUCTURING;CONDITION-REPORTERS-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONDITIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONDITION-REPORTERS-ENGLISH.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;ENVIRONMENT-AUGMENTATION.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;ENVIRONMENT-QUERY.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;VARIABLES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;GENERIC-FUNCTIONS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-FUNCTION-REFERENCE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-SPECIAL-BINDING.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;UTILITIES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;SET-OR-BIND-VARIABLE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;PROCESS-PROGN.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-SEQUENCE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-VARIABLE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;PROCESS-INIT-PARAMETER.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;ITEMIZE-DECLARATION-SPECIFIERS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;ITEMIZE-LAMBDA-LIST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;LAMBDA-LIST-FROM-PARAMETER-GROUPS.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-SETQ.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-LET-AND-LETSTAR.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-CODE.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-LAMBDA-CALL.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-CONSTANT.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-SPECIAL.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-PRIMOP.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CONVERT-CST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;CST-TO-AST;CST-TO-AST.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;STEALTH-MIXINS;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CONTRIB;CLEAVIR;STEALTH-MIXINS;STEALTH-MIXINS.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;PACKAGES.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;SYSTEM.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;POLICY.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;READER.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;AST.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;CONVERT-FORM.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;CONVERT-SPECIAL.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;TOPLEVEL.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;SETUP.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;FOLD.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;IR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;TRANSLATION-ENVIRONMENT.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;BIR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;BMIR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;BLIR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;VASLIST.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;BIR-TO-BMIR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;REPRESENTATION-SELECTION.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;BMIR-TO-BLIR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;LANDING-PAD.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;PRIMOP.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;INTERVAL.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;TYPE.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;TRANSFORM.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;TRANSLATE.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;COMPILE-BYTECODE.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;INLINE-PREP.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;PROCLAMATIONS.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;HOOKS.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;BYTECODE-ADAPTOR.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;INLINE.LISP", "SYS:SRC;LISP;KERNEL;LSP;QUEUE.LISP", "SYS:SRC;LISP;KERNEL;LSP;GENERATED-ENCODINGS.LISP", "SYS:SRC;LISP;KERNEL;LSP;PROCESS.LISP", "SYS:SRC;LISP;KERNEL;LSP;ENCODINGS.LISP", "SYS:SRC;LISP;KERNEL;LSP;CLTL2.LISP", "SYS:SRC;LISP;KERNEL;LSP;XREF.LISP", "SYS:GENERATED;BASE-IMMUTABLE.LISP", "SYS:SRC;LISP;KERNEL;STAGE;BASE;2-END.LISP", "SYS:SRC;LISP;KERNEL;CMP;COMPILE-FILE-PARALLEL.LISP", "SYS:SRC;LISP;KERNEL;CLEAVIR;AUTO-COMPILE.LISP", "SYS:SRC;LISP;KERNEL;LSP;TOP-HOOK.LISP"], 0x55f3d5462000 /* 30 vars */)

@JVDptt
Copy link
Author

JVDptt commented Mar 28, 2024

With this patch, infinite recursion and coredump is avoided, but unfortunately the build still fails , printing the message:

lisp_error ->
 Error #<UNBOUND> initializers: (NIL NIL)

, unfortunately not much help , but at least no coredump.

Clasp is evidently a long way from being buildable / usable - good luck, I'll see how it has progressed in a year or so.

foundation.cc.patch.txt

@Bike
Copy link
Member

Bike commented Mar 29, 2024

cl__error does check for recursion, and all lisp_error does is call cl__error. So I don't know how you're seeing that.

@JVDptt
Copy link
Author

JVDptt commented Mar 29, 2024

Thanks for taking a look, Alex .

The recursion path is documented in the "Coredump Details" comment above :

(gdb) where
#0  core::lisp_error (datum=datum@entry=..., arguments=...) at ../src/core/foundation.cc:1360
#1  0x0000000000f4dc36 in core::coerce::calledFunctionDesignator (obj=obj@entry=...) at ../src/core/designators.cc:70
#2  0x0000000001834c0c in core::eval::funcall<gctools::smart_ptr<core::Integer_O> > (fn=..., args=...) at ../include/clasp/core/evaluator.h:102
#3  gctools::handle_segv (signo=<optimized out>, info=<optimized out>, context=<optimized out>) at ../src/gctools/interrupt.cc:409
#4  <signal handler called>
#5  std::atomic<gctools::smart_ptr<core::FunctionCell_O> >::load (this=0x26, __m=std::memory_order::relaxed)
    at /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/atomic:297
#6  core::Symbol_O::functionCell (this=0x6) at ../include/clasp/core/symbol.h:335
#7  core::Symbol_O::fboundp (this=0x6) at ../src/core/symbol.cc:389
#8  0x0000000000e27a7e in core::lisp_error (datum=datum@entry=..., arguments=...) at ../src/core/foundation.cc:1360
...

The original version or core::lisp_error:


[[noreturn]] void lisp_error(T_sp datum, T_sp arguments) {
  if (!cl::_sym_error->fboundp()) {
    stringstream ss;
    ss << "Error " << _rep_(datum) << " initializers: " << _rep_(arguments) << std::endl;
    printf("%s:%d lisp_error ->\n %s\n", __FILE__, __LINE__, ss.str().c_str());
    early_debug(nil<T_O>(), false);
  }
  core__apply1(coerce::calledFunctionDesignator(cl::_sym_error), arguments, datum);
  UNREACHABLE();
}

Unconditionally calls cl::sym_error->fboundp() , which eventually calls
calledFunctionDesignator() :

Function_sp calledFunctionDesignator(T_sp obj) {
  if (Function_sp fnobj = obj.asOrNull<Function_O>()) {
    return fnobj;
  } else if (obj.nilp()) {
    ERROR_UNDEFINED_FUNCTION(obj);
  } else if (obj.unboundp()) {
    ERROR_UNDEFINED_FUNCTION(obj);
  } else if (Symbol_sp sym = obj.asOrNull<Symbol_O>()) {
    return sym->symbolFunctionCalled();
  }
  TYPE_ERROR(obj, Cons_O::createList(cl::_sym_or, cl::_sym_function, cl::_sym_Symbol_O));
}

The recursion occurs because the TYPE_ERROR call on line 70 expands to (exceptions.h, line 103) :

#define TYPE_ERROR(_datum_, _expectedType_)                                                                                        \
  ERROR(::cl::_sym_type_error, core::lisp_createList(kw::_sym_datum, _datum_, kw::_sym_expected_type, _expectedType_))

which expands to ERROR, on line 69 of that file :

#define ERROR(_type_, _initializers_) lisp_error(_type_, _initializers_)

which then recurses infinitely .

I can provide many examples of the actual coredump files if desired .

Why the lisp_error(datum, arguments) parameters, which print as :

lisp_error ->
 Error #<UNBOUND> initializers: (NIL NIL)

in my modified recursion-safe version, are not detected as unboundp() or nilp() , and , most importantly,
how they end up being generated during build, is , IMHO, the more interesting question.

How a compilation on Fedora Core 38 under its latest clang + llvm 16.0.6 can end up being so different
to a compilation under your build platform , is also the most overriding question, IMHO .

What OS version + Clang/LLVM version do you normally build under ? Why is the result so different in my case
under FC-38 ?

@Bike
Copy link
Member

Bike commented Apr 24, 2024

Sorry for the delay, I have lots of other things to work on.

We usually build (and test) on Ubuntu 22.04 (github's ubuntu-latest) and MacOS 14 (github's macos-latest) with LLVM 17. I don't think LLVM should be relevant here since the compiler isn't really involved, but then I don't understand this error to begin with.

The immediate problem in your trace is that it segfaults while trying to load the function cell of a "symbol". That "symbol" is 6, which is not exactly a valid pointer. Given how lisp_error is written, that symbol must be cl:error. For that symbol to not exist, either this error is happening extremely early in startup, or something has broken it.

Have you yet posted an untruncated backtrace? I don't see it. Is it possible for you to get one? This segfault isn't the underlying problem but I don't think I have enough information to guess what the underlying problem is.

As a sidenote, we don't want to prevent all recursive error calls, since it's legitimate to signal an error from within an error handler. But we could make our depth check use a simple thread_local like you have, instead of the dynamic variable binding we're doing currently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants