clasp-developers / clasp

clasp Common Lisp environment
https://clasp-developers.github.io/
2.57k stars 145 forks source link

FreeBSD: clasp does not build with koga + ninja #1311

Open mnsanghvi opened 2 years ago

mnsanghvi commented 2 years ago

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.
mnsanghvi commented 2 years ago

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.
mnsanghvi commented 2 years ago

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.

This was fixed by using ninja -j 2 -C build

mnsanghvi commented 2 years ago

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
}
drmeister commented 2 years ago

Hmm, this isn't very illuminating. Do you know how to use gdb to get a backtrace?

I would do the following:

  1. export CLASP_PAUSE_STARTUP=1
  2. ninja -C build
  3. In another terminal start gdb -p <pid printed when clasp started>
  4. In gdb type: signal SIGUSR1
  5. clasp should start running and then crash like above
  6. In gdb type: bt and paste that backtrace.
mnsanghvi commented 2 years ago

Yes, I'm familiar with gdb though haven't used it in a while.

yitzchak commented 2 years ago

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.

wahjava commented 2 months ago

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