clasp
clasp copied to clipboard
FreeBSD: clasp does not build with koga + ninja
System details
% dmesg | grep -Ei 'cpu|memo'
CPU: AMD PRO A10-8700B R6, 10 Compute Cores 4C+6G (1796.66-MHz K8-class CPU)
real memory = 8589934592 (8192 MB)
avail memory = 7647952896 (7293 MB)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
% swapctl -lh
Device: Bytes Used:
/dev/ada0p3 2.0G 50M
% freebsd-version -ukr
13.0-RELEASE-p11
13.0-RELEASE-p11
13.0-RELEASE-p11
% pkg info | grep -E 'llvm13|boost|boehm|unwind|ninja|elf|ncurses'
boehm-gc-8.0.6 Garbage collection and memory leak detection for C and C++
boehm-gc-threaded-8.0.6 Garbage collection and memory leak detection for C and C++
boost-libs-1.72.0_6 Free portable C++ libraries (without Boost.Python)
libelf-0.8.13_3 Public ELF file access library similar to libelf(3) in Solaris
libunwind-20211201_1 Generic stack unwinding library
llvm13-13.0.1_2 LLVM and Clang
ncurses-6.3 Library for terminal-independent, full-screen output
ninja-1.10.2,2 Small build system closest in spirit to Make
Describe the bug
Building clasp
with koga + ninja
fails.
Expected behaviour
A successful build with clasp
available to execute
Actual behaviour
% ./koga --prefix=/opt --llvm-config=/usr/local/llvm13/bin/llvm-config --ar=/usr/local/llvm13/bin/llvm-ar --cc=/usr/local/llvm13/bin/clang --cxx=/usr/local/llvm13/bin/clang++ --nm=/usr/local/llvm13/bin/llvm-nm
% ninja -C build
.
.
.
Writing boehmprecise/generated/c-wrappers.h
Writing boehmprecise/generated/cl-wrappers.lisp
Writing boehmprecise/generated/c-wrappers.txt
Writing boehmprecise/generated/cl-wrappers.txt
Done scraping code
[434/546] Compiling ../src/gctools/exposeFunctions1.cc
FAILED: boehmprecise/src/gctools/exposeFunctions1.o
/usr/local/llvm13/bin/clang++ -Iboehmprecise -O3 -g -fPIC -Wno-macro-redefined -Wno-deprecated-declarations -Wno-deprecated-register -Wno-expansion-to-defined -Wno-return-type-c-linkage -Wno-invalid-offsetof -Wno-#pragma-messages -Wno-inconsistent-missing-override -Wno-error=c++11-narrowing -Wno-c++11-narrowing -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -std=c++20 -I/usr/local/llvm13/include/ -I../ -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include/libelf -I/usr/local/include -I/usr/local/include/ncurses -I/usr/local/include -I../src/bdwgc/ -I../src/bdwgc/include/ -I../src/libatomic_ops/src/ -I../include/ -I../include/clasp/main/ -c -MD -MF boehmprecise/src/gctools/exposeFunctions1.o.d -oboehmprecise/src/gctools/exposeFunctions1.o ../src/gctools/exposeFunctions1.cc
[439/546] Compiling ../src/gctools/exposeFunctions2.cc
ninja: build stopped: subcommand failed.
Here is the failure for bclasp
that I get:
Starting clasp-boehmprecise-1.0.0-183-g98b564adb-cst ... loading image...
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/lsp/direct-calls.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/build/boehmprecise/generated/cl-wrappers.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/tag/min-start.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/init.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/tag/after-init.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/cmp/runtime-info.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/lsp/sharpmacros.lisp
;;; Style warning: Undefined function SET-ECLECTOR-READER-READMACROS
;;; at /usr/home/mehul/src/clasp/src/lisp/kernel/lsp/sharpmacros.lisp filepos: 6519 lineno: 137
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/cmp/jit-setup.lisp
Loading/compiling source: /usr/home/mehul/src/clasp/src/lisp/kernel/clsymbols.lisp
Fatal error 'mutex 0x814474b88 own 0x0 is on list 0x0 0x814474b08' at line 154 in file /usr/src/lib/libthr/thread/thr_mutex.c (errno = 2)
FAILED: boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/tag/start.faso boehmprecise/fasl/bclasp-boehmprecise[110/3263]
rc/lisp/kernel/lsp/prologue.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/direct-calls.faso boehmprecise/fa
sl/bclasp-boehmprecise-bitcode/generated/cl-wrappers.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/tag/min-star
t.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/init.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lis
p/kernel/tag/after-init.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/runtime-info.faso boehmprecise/fasl/b
clasp-boehmprecise-bitcode/src/lisp/kernel/lsp/sharpmacros.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/ji
t-setup.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clsymbols.faso boehmprecise/fasl/bclasp-boehmprecise-bitc
ode/src/lisp/kernel/lsp/packages.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/foundation.faso boehmprecise
/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/export.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/
defmacro.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/helpfile.faso boehmprecise/fasl/bclasp-boehmprecise-
bitcode/src/lisp/kernel/lsp/evalmacros.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/claspmacros.faso boehm
precise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/source-transformations.faso boehmprecise/fasl/bclasp-boehmprecise-bitco
de/src/lisp/kernel/lsp/arraylib.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/setf.faso boehmprecise/fasl/b
clasp-boehmprecise-bitcode/src/lisp/kernel/lsp/listlib.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/mislib
.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/defstruct.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode
/src/lisp/kernel/lsp/predlib.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/cdr-5.faso boehmprecise/fasl/bcl
asp-boehmprecise-bitcode/src/lisp/kernel/lsp/cmuutil.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/seqmacro
s.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/seq.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/
lisp/kernel/lsp/seqlib.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/iolib.faso boehmprecise/fasl/bclasp-bo
ehmprecise-bitcode/src/lisp/kernel/lsp/trace.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/debug.faso boehm
precise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmpexports.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/
kernel/cmp/cmpsetup.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmpglobals.faso boehmprecise/fasl/bclasp-
boehmprecise-bitcode/src/lisp/kernel/cmp/cmputil.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmp[88/3263]
s.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/primitives.faso boehmprecise/fasl/bclasp-boehmprecise-bitco
de/src/lisp/kernel/cmp/cmpir.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmpeh.faso boehmprecise/fasl/bcl
asp-boehmprecise-bitcode/src/lisp/kernel/cmp/debuginfo.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/codege
n-vars.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/arguments.faso boehmprecise/fasl/bclasp-boehmprecise-b
itcode/src/lisp/kernel/cmp/cmplambda.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmprunall.faso boehmprec
ise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmpliteral.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kern
el/cmp/typeq.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/codegen-special-form.faso boehmprecise/fasl/bcla
sp-boehmprecise-bitcode/src/lisp/kernel/cmp/codegen.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/compile.f
aso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/codegen-toplevel.faso boehmprecise/fasl/bclasp-boehmprecise-bi
tcode/src/lisp/kernel/cmp/compile-file.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/external-clang.faso bo
ehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmpname.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/
kernel/cmp/cmpbundle.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmprepl.faso boehmprecise/fasl/bclasp-bo
ehmprecise-bitcode/src/lisp/kernel/tag/min-pre-epilogue.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/epilo
gue-aclasp.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/tag/min-end.faso boehmprecise/fasl/bclasp-boehmprecise
-bitcode/src/lisp/kernel/tag/bclasp-start.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/cmpwalk.faso boehmp
recise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/assert.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kerne
l/lsp/numlib.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/describe.faso boehmprecise/fasl/bclasp-boehmprec
ise-bitcode/src/lisp/kernel/lsp/module.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/loop2.faso boehmprecis
e/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/disassemble.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kerne
l/cmp/opt/opt.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-character.faso boehmprecise/fasl/bclasp
-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-number.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/
opt-type.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-control.faso boehmprecise/fasl/bclasp-boehmp
recise-bitcode/src/lisp/kernel/cmp/opt/opt-sequence.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-c
ons.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-array.faso boehmprecise/fasl/bclasp-boehmprecise-
bitcode/src/lisp/kernel/cmp/opt/opt-object.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-condition.
faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/opt/opt-print.faso boehmprecise/fasl/bclasp-boehmprecise-bitc
ode/src/lisp/kernel/lsp/shiftf-rotatef.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/assorted.faso boehmpre
cise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/packlib.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel
/lsp/defpackage.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/format.faso boehmprecise/fasl/bclasp-boehmpre
cise-bitcode/src/lisp/kernel/lsp/mp.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/atomics.faso boehmprecise
/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/package.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cl
os/static-gfs/package.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/flag.faso boehmprecise/fasl
/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/constructor.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp
/kernel/clos/static-gfs/reinitializer.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/changer.fas
o boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/hierarchy.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/sr
c/lisp/kernel/clos/cpl.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/std-slot-value.faso boehmprecise/fasl
/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/slot.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/boot.
faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/kernel.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/sr
c/lisp/kernel/clos/outcome.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/discriminate.faso boehmprecise/fa
sl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/dtree.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/ef
fective-accessor.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/closfastgf.faso boehmprecise/fasl/bclasp-bo
ehmprecise-bitcode/src/lisp/kernel/clos/satiation.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/method.fas
o boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/combin.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/l
isp/kernel/clos/std-accessors.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/defclass.faso boehmprecise/fas
l/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/slotvalue.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos
/standard.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/builtin.faso boehmprecise/fasl/bclasp-boehmprecise
-bitcode/src/lisp/kernel/clos/change.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/stdmethod.faso boehmpre
cise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/generic.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kerne
l/clos/fixup.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/cell.faso boehmprecise/fasl/bclasp-b
oehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/effective-method.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/ker
nel/clos/static-gfs/svuc.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/shared-initialize.faso b
oehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/initialize-instance.faso boehmprecise/fasl/bclasp-boehm
precise-bitcode/src/lisp/kernel/clos/static-gfs/allocate-instance.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel
/clos/static-gfs/make-instance.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/compute-constructo
r.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/dependents.faso boehmprecise/fasl/bclasp-boehmp
recise-bitcode/src/lisp/kernel/clos/static-gfs/compiler-macros.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cl
os/static-gfs/reinitialize-instance.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/update-instan
ce-for-different-class.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/static-gfs/change-class.faso boehmpre
cise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/source-location.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lis
p/kernel/lsp/defvirtual.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/conditions.faso boehmprecise/fasl/bc
lasp-boehmprecise-bitcode/src/lisp/kernel/clos/print.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/streams
.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/clos/sequences.faso boehmprecise/fasl/bclasp-boehmprecise-bitcod
e/src/lisp/kernel/lsp/pprint.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/cmp/compiler-conditions.faso boehmpr
ecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/packlib2.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kern
el/clos/inspect.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/fli.faso boehmprecise/fasl/bclasp-boehmprecis
e-bitcode/src/lisp/kernel/lsp/posix.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/modules/sockets/sockets.faso boehmpr
ecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/top.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/ta
g/pre-epilogue-bclasp.faso boehmprecise/fasl/bclasp-boehmprecise-bitcode/src/lisp/kernel/lsp/epilogue-bclasp.faso boehmprecise/fasl/
bclasp-boehmprecise-bitcode/src/lisp/kernel/tag/bclasp.faso
boehmprecise/iclasp-boehmprecise --norc --type image --disable-mpi --image boehmprecise/fasl/aclasp-boehmprecise-image.fasp --load c
ompile-bclasp.lisp -- src/lisp/kernel/tag/start src/lisp/kernel/lsp/prologue src/lisp/kernel/lsp/direct-calls generated/cl-wrappers
src/lisp/kernel/tag/min-start src/lisp/kernel/init src/lisp/kernel/tag/after-init src/lisp/kernel/cmp/runtime-info src/lisp/kernel/l
sp/sharpmacros src/lisp/kernel/cmp/jit-setup src/lisp/kernel/clsymbols src/lisp/kernel/lsp/packages src/lisp/kernel/lsp/foundation s
rc/lisp/kernel/lsp/export src/lisp/kernel/lsp/defmacro src/lisp/kernel/lsp/helpfile src/lisp/kernel/lsp/evalmacros src/lisp/kernel/l
sp/claspmacros src/lisp/kernel/lsp/source-transformations src/lisp/kernel/lsp/arraylib src/lisp/kernel/lsp/setf src/lisp/kernel/lsp/
listlib src/lisp/kernel/lsp/mislib src/lisp/kernel/lsp/defstruct src/lisp/kernel/lsp/predlib src/lisp/kernel/lsp/cdr-5 src/lisp/kern
el/lsp/cmuutil src/lisp/kernel/lsp/seqmacros src/lisp/kernel/lsp/seq src/lisp/kernel/lsp/seqlib src/lisp/kernel/lsp/iolib src/lisp/k
ernel/lsp/trace src/lisp/kernel/lsp/debug src/lisp/kernel/cmp/cmpexports src/lisp/kernel/cmp/cmpsetup src/lisp/kernel/cmp/cmpglobals
src/lisp/kernel/cmp/cmputil src/lisp/kernel/cmp/cmpintrinsics src/lisp/kernel/cmp/primitives src/lisp/kernel/cmp/cmpir src/lisp/ker
nel/cmp/cmpeh src/lisp/kernel/cmp/debuginfo src/lisp/kernel/cmp/codegen-vars src/lisp/kernel/cmp/arguments src/lisp/kernel/cmp/cmpla
mbda src/lisp/kernel/cmp/cmprunall src/lisp/kernel/cmp/cmpliteral src/lisp/kernel/cmp/typeq src/lisp/kernel/cmp/codegen-special-form
src/lisp/kernel/cmp/codegen src/lisp/kernel/cmp/compile src/lisp/kernel/cmp/codegen-toplevel src/lisp/kernel/cmp/compile-file src/l
isp/kernel/cmp/external-clang src/lisp/kernel/cmp/cmpname src/lisp/kernel/cmp/cmpbundle src/lisp/kernel/cmp/cmprepl src/lisp/kernel/
tag/min-pre-epilogue src/lisp/kernel/lsp/epilogue-aclasp src/lisp/kernel/tag/min-end src/lisp/kernel/tag/bclasp-start src/lisp/kerne
l/cmp/cmpwalk src/lisp/kernel/lsp/assert src/lisp/kernel/lsp/numlib src/lisp/kernel/lsp/describe src/lisp/kernel/lsp/module src/lisp
/kernel/lsp/loop2 src/lisp/kernel/cmp/disassemble src/lisp/kernel/cmp/opt/opt src/lisp/kernel/cmp/opt/opt-character src/lisp/kernel/
cmp/opt/opt-number src/lisp/kernel/cmp/opt/opt-type src/lisp/kernel/cmp/opt/opt-control src/lisp/kernel/cmp/opt/opt-sequence src/lis
p/kernel/cmp/opt/opt-cons src/lisp/kernel/cmp/opt/opt-array src/lisp/kernel/cmp/opt/opt-object src/lisp/kernel/cmp/opt/opt-condition
src/lisp/kernel/cmp/opt/opt-print src/lisp/kernel/lsp/shiftf-rotatef src/lisp/kernel/lsp/assorted src/lisp/kernel/lsp/packlib src/l
isp/kernel/lsp/defpackage src/lisp/kernel/lsp/format src/lisp/kernel/lsp/mp src/lisp/kernel/lsp/atomics src/lisp/kernel/clos/package
src/lisp/kernel/clos/static-gfs/package src/lisp/kernel/clos/static-gfs/flag src/lisp/kernel/clos/static-gfs/constructor src/lisp/k
ernel/clos/static-gfs/reinitializer src/lisp/kernel/clos/static-gfs/changer src/lisp/kernel/clos/hierarchy src/lisp/kernel/clos/cpl
src/lisp/kernel/clos/std-slot-value src/lisp/kernel/clos/slot src/lisp/kernel/clos/boot src/lisp/kernel/clos/kernel src/lisp/kernel/
clos/outcome src/lisp/kernel/clos/discriminate src/lisp/kernel/clos/dtree src/lisp/kernel/clos/effective-accessor src/lisp/kernel/cl
os/closfastgf src/lisp/kernel/clos/satiation src/lisp/kernel/clos/method src/lisp/kernel/clos/combin src/lisp/kernel/clos/std-access
ors src/lisp/kernel/clos/defclass src/lisp/kernel/clos/slotvalue src/lisp/kernel/clos/standard src/lisp/kernel/clos/builtin src/lisp
/kernel/clos/change src/lisp/kernel/clos/stdmethod src/lisp/kernel/clos/generic src/lisp/kernel/clos/fixup src/lisp/kernel/clos/stat
ic-gfs/cell src/lisp/kernel/clos/static-gfs/effective-method src/lisp/kernel/clos/static-gfs/svuc src/lisp/kernel/clos/static-gfs/sh
ared-initialize src/lisp/kernel/clos/static-gfs/initialize-instance src/lisp/kernel/clos/static-gfs/allocate-instance src/lisp/kerne
l/clos/static-gfs/make-instance src/lisp/kernel/clos/static-gfs/compute-constructor src/lisp/kernel/clos/static-gfs/dependents src/l
isp/kernel/clos/static-gfs/compiler-macros src/lisp/kernel/clos/static-gfs/reinitialize-instance src/lisp/kernel/clos/static-gfs/upd
ate-instance-for-different-class src/lisp/kernel/clos/static-gfs/change-class src/lisp/kernel/lsp/source-location src/lisp/kernel/ls
p/defvirtual src/lisp/kernel/clos/conditions src/lisp/kernel/clos/print src/lisp/kernel/clos/streams src/lisp/kernel/clos/sequences
src/lisp/kernel/lsp/pprint src/lisp/kernel/cmp/compiler-conditions src/lisp/kernel/lsp/packlib2 src/lisp/kernel/clos/inspect src/lis
p/kernel/lsp/fli src/lisp/kernel/lsp/posix src/lisp/modules/sockets/sockets src/lisp/kernel/lsp/top src/lisp/kernel/tag/pre-epilogue
-bclasp src/lisp/kernel/lsp/epilogue-bclasp src/lisp/kernel/tag/bclasp
ninja: build stopped: subcommand failed.
System details
% dmesg | grep -Ei 'cpu|memo' CPU: AMD PRO A10-8700B R6, 10 Compute Cores 4C+6G (1796.66-MHz K8-class CPU) real memory = 8589934592 (8192 MB) avail memory = 7647952896 (7293 MB) FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs % swapctl -lh Device: Bytes Used: /dev/ada0p3 2.0G 50M % freebsd-version -ukr 13.0-RELEASE-p11 13.0-RELEASE-p11 13.0-RELEASE-p11 % pkg info | grep -E 'llvm13|boost|boehm|unwind|ninja|elf|ncurses' boehm-gc-8.0.6 Garbage collection and memory leak detection for C and C++ boehm-gc-threaded-8.0.6 Garbage collection and memory leak detection for C and C++ boost-libs-1.72.0_6 Free portable C++ libraries (without Boost.Python) libelf-0.8.13_3 Public ELF file access library similar to libelf(3) in Solaris libunwind-20211201_1 Generic stack unwinding library llvm13-13.0.1_2 LLVM and Clang ncurses-6.3 Library for terminal-independent, full-screen output ninja-1.10.2,2 Small build system closest in spirit to Make
Describe the bug Building
clasp
withkoga + ninja
fails.Expected behaviour A successful build with
clasp
available to executeActual behaviour
% ./koga --prefix=/opt --llvm-config=/usr/local/llvm13/bin/llvm-config --ar=/usr/local/llvm13/bin/llvm-ar --cc=/usr/local/llvm13/bin/clang --cxx=/usr/local/llvm13/bin/clang++ --nm=/usr/local/llvm13/bin/llvm-nm % ninja -C build . . . Writing boehmprecise/generated/c-wrappers.h Writing boehmprecise/generated/cl-wrappers.lisp Writing boehmprecise/generated/c-wrappers.txt Writing boehmprecise/generated/cl-wrappers.txt Done scraping code [434/546] Compiling ../src/gctools/exposeFunctions1.cc FAILED: boehmprecise/src/gctools/exposeFunctions1.o /usr/local/llvm13/bin/clang++ -Iboehmprecise -O3 -g -fPIC -Wno-macro-redefined -Wno-deprecated-declarations -Wno-deprecated-register -Wno-expansion-to-defined -Wno-return-type-c-linkage -Wno-invalid-offsetof -Wno-#pragma-messages -Wno-inconsistent-missing-override -Wno-error=c++11-narrowing -Wno-c++11-narrowing -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -std=c++20 -I/usr/local/llvm13/include/ -I../ -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include/libelf -I/usr/local/include -I/usr/local/include/ncurses -I/usr/local/include -I../src/bdwgc/ -I../src/bdwgc/include/ -I../src/libatomic_ops/src/ -I../include/ -I../include/clasp/main/ -c -MD -MF boehmprecise/src/gctools/exposeFunctions1.o.d -oboehmprecise/src/gctools/exposeFunctions1.o ../src/gctools/exposeFunctions1.cc [439/546] Compiling ../src/gctools/exposeFunctions2.cc ninja: build stopped: subcommand failed.
This was fixed by using ninja -j 2 -C build
Contents of /usr/src/lib/libthr/thread/thr_mutex.c
that is causing the issue at the first PANIC
on line 4.
mutex_assert_not_owned(struct pthread *curthread __unused,
struct pthread_mutex *m __unused)
{
#if defined(_PTHREADS_INVARIANTS)
if (__predict_false(m->m_qe.tqe_prev != NULL ||
m->m_qe.tqe_next != NULL))
PANIC("mutex %p own %#x is on list %p %p",
m, m->m_lock.m_owner, m->m_qe.tqe_prev, m->m_qe.tqe_next);
if (__predict_false(is_robust_mutex(m) &&
(m->m_lock.m_rb_lnk != 0 || m->m_rb_prev != NULL ||
(is_pshared_mutex(m) && curthread->robust_list ==
(uintptr_t)&m->m_lock) ||
(!is_pshared_mutex(m) && curthread->priv_robust_list ==
(uintptr_t)&m->m_lock))))
PANIC(
"mutex %p own %#x is on robust linkage %p %p head %p phead %p",
m, m->m_lock.m_owner, (void *)m->m_lock.m_rb_lnk,
m->m_rb_prev, (void *)curthread->robust_list,
(void *)curthread->priv_robust_list);
#endif
}
Hmm, this isn't very illuminating. Do you know how to use gdb to get a backtrace?
I would do the following:
- export CLASP_PAUSE_STARTUP=1
- ninja -C build
- In another terminal start
gdb -p <pid printed when clasp started>
- In gdb type:
signal SIGUSR1
- clasp should start running and then crash like above
- In gdb type:
bt
and paste that backtrace.
Yes, I'm familiar with gdb
though haven't used it in a while.
This appears to have been fixed by some recent changes to Mutex locking. I've rebased the freebsd branch off of main. Still need to resolve snapshot code and some other things.
Build process with clasp 2.6.0 on FreeBSD 14.1-RELEASE stalls at:
$ ninja -C /usr/home/user/code/clasp-2.6.0/clasp-build -j8
ninja: Entering directory `/usr/home/user/code/clasp-2.6.0/clasp-build'
[7/12] Compiling clasp
/usr/home/user/code/stage/usr/local/share/clasp-cl/src/core/debug_unixes.cc:365:elf_startup_loaded_object_callback About to call add_dynamic_library_using_origin libname = /usr/home/user/code/clasp-2.6.0/clasp-build/boehmprecise/iclasp is_executable = 1
/usr/home/user/code/stage/usr/local/share/clasp-cl/src/core/debugger.cc:166:add_dynamic_library_using_origin About to call add_dynamic_library_impl libname = /usr/home/user/code/clasp-2.6.0/clasp-build/boehmprecise/iclasp is_executable = 1
Starting to load library: /usr/home/user/code/clasp-2.6.0/clasp-build/boehmprecise/iclasp
/usr/home/user/code/stage/usr/local/share/clasp-cl/src/core/debug_unixes.cc:225:find_base_of_loaded_object
[find_base_of_loaded_object] name: /usr/home/user/code/clasp-2.6.0/clasp-build/boehmprecise/iclasp, address: 0
with following lldb backtrace:
(lldb) bt all
* thread #1, name = 'iclasp', stop reason = signal SIGSTOP
* frame #0: 0x00000008334ede2c libthr.so.3`_umtx_op_err at _umtx_op_err.S:38
frame #1: 0x00000008334fdf50 libthr.so.3`__thr_rwlock_wrlock(rwlock=<unavailable>, tsp=0x0000000000000000) at thr_umtx.c:324:10
frame #2: 0x00000008334f8571 libthr.so.3`_thr_rtld_wlock_acquire [inlined] _thr_rwlock_wrlock(rwlock=<unavailable>, tsp=<unavailable>) at thr_umtx.h:239:10
frame #3: 0x00000008334f854a libthr.so.3`_thr_rtld_wlock_acquire(lock=0x0000000833502640) at thr_rtld.c:139:9
frame #4: 0x0000180b38c0074d ld-elf.so.1`wlock_acquire(lock=0x0000180b38c0dae0, lockstate=0x0000000822b96d68) at rtld_lock.c:275:2
frame #5: 0x0000180b38bfadd4 ld-elf.so.1`dl_iterate_phdr(callback=(iclasp`core::elf_search_loaded_object_callback(dl_phdr_info*, unsigned long, void*) at debug_unixes.cc:207), param=0x0000000822b96ed8) at rtld.c:4238:2
frame #6: 0x0000000000d9c3f1 iclasp`core::add_dynamic_library_impl(core::add_dynamic_library*, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool, unsigned long, void*, unsigned char*, unsigned char*, bool, unsigned char*, unsigned char*) [inlined] core::find_base_of_loaded_object(name=<unavailable>, address=<unavailable>) at debug_unixes.cc:227:3
frame #7: 0x0000000000d9c3b1 iclasp`core::add_dynamic_library_impl(callback=0x0000000822b97740, is_executable=true, libraryName="/usr/home/user/code/clasp-2.6.0/clasp-build/boehmprecise/iclasp", use_origin=<unavailable>, library_origin=0, handle=0x0000000000000000, text_start="\U0000007fELF\U00000002\U00000001\U00000001\t", text_end="", hasVtableSection=<unavailable>, vtableSectionStart="", vtableSectionEnd="") at debug_unixes.cc:393:8
frame #8: 0x0000000000d5be5b iclasp`core::add_dynamic_library_using_origin(adder=0x0000000822b97740, is_executable=true, libraryName="/usr/home/user/code/clasp-2.6.0/clasp-build/boehmprecise/iclasp", origin=0, text_start="\U0000007fELF\U00000002\U00000001\U00000001\t", text_end="", hasDataConst=<unavailable>, dataConstStart="", dataConstEnd="") at debugger.cc:168:3
frame #9: 0x0000000000d9c2a6 iclasp`core::elf_startup_loaded_object_callback(info=0x0000000822b97408, size=<unavailable>, data=0x0000000822b97498) at debug_unixes.cc:366:3
frame #10: 0x0000180b38bfaf4d ld-elf.so.1`dl_iterate_phdr(callback=(iclasp`core::elf_startup_loaded_object_callback(dl_phdr_info*, unsigned long, void*) at debug_unixes.cc:308), param=0x0000000822b97498) at rtld.c:4246:11
frame #11: 0x0000000000d9c323 iclasp`core::startup_register_loaded_objects(callback=0x0000000822b97740) at debug_unixes.cc:374:3
frame #12: 0x0000000001805480 iclasp`startup_clasp(stackMarker=0x0000000822b977b8, claspInfo=0x0000000822b977c8, exitCode=0x0000000822b97814) at startRunStop.cc:302:3
frame #13: 0x0000000000f10a2d iclasp`main(argc=12, argv=0x0000000822b978c0) at main.cc:235:7
frame #14: 0x000000083522ba6a libc.so.7`__libc_start1(argc=12, argv=0x0000000822b978c0, env=0x0000000822b97928, cleanup=<unavailable>, mainX=(iclasp`main at main.cc:214)) at libc_start1.c:157:7
frame #15: 0x0000000000c9cc00 iclasp`_start at crt1_s.S:83
It turns out dl_iterate_phdr
is not re-entrant as following minimal test case demonstrates it:
/* rtld-test.c */
#include <link.h>
#include <stdio.h>
#include <sys/link_elf.h>
static int cb2_ldobj(struct dl_phdr_info *hdr, size_t sz, void *param) {
fprintf(stderr, "[%s] name: %s, addr: %lu\n", __FUNCTION__, hdr->dlpi_name, hdr->dlpi_addr);
return 0;
}
static int cb_ldobj(struct dl_phdr_info *hdr, size_t sz, void *param) {
fprintf(stderr, "[%s] name: %s, addr: %lu\n", __FUNCTION__, hdr->dlpi_name, hdr->dlpi_addr);
dl_iterate_phdr(cb2_ldobj, NULL);
return 0;
}
int main(int argc, char **argv) {
fprintf( stderr, " iterating begins\n");
dl_iterate_phdr(cb_ldobj, NULL);
fprintf( stderr, " iterating ends\n");
}
❯ cc -g -o rtld-test{,.c}
❯ ./rtld-test
iterating begins
[cb_ldobj] name: /usr/home/user/progs/rtld-test, addr: 0
[cb2_ldobj] name: /usr/home/user/progs/rtld-test, addr: 0
[cb2_ldobj] name: [vdso], addr: 34917400576
[cb2_ldobj] name: /lib/libc.so.7, addr: 34928435200
[cb2_ldobj] name: /libexec/ld-elf.so.1, addr: 53835036299264
[cb_ldobj] name: [vdso], addr: 34917400576
[cb2_ldobj] name: /usr/home/user/progs/rtld-test, addr: 0
[cb2_ldobj] name: [vdso], addr: 34917400576
[cb2_ldobj] name: /lib/libc.so.7, addr: 34928435200
[cb2_ldobj] name: /libexec/ld-elf.so.1, addr: 53835036299264
[cb_ldobj] name: /lib/libc.so.7, addr: 34928435200
[cb2_ldobj] name: /usr/home/user/progs/rtld-test, addr: 0
[cb2_ldobj] name: [vdso], addr: 34917400576
[cb2_ldobj] name: /lib/libc.so.7, addr: 34928435200
[cb2_ldobj] name: /libexec/ld-elf.so.1, addr: 53835036299264
[cb_ldobj] name: /libexec/ld-elf.so.1, addr: 53835036299264
[cb2_ldobj] name: /usr/home/user/progs/rtld-test, addr: 0
[cb2_ldobj] name: [vdso], addr: 34917400576
[cb2_ldobj] name: /lib/libc.so.7, addr: 34928435200
[cb2_ldobj] name: /libexec/ld-elf.so.1, addr: 53835036299264
iterating ends
❯ cc -g -o rtld-test{,.c} -pthread
❯ ./rtld-test
iterating begins
[cb_ldobj] name: /usr/home/user/progs/rtld-test, addr: 0