swipl-devel
swipl-devel copied to clipboard
Build failed with address sanitizer
I successfully built SWI-Prolog/swipl:
cmake -G Ninja ..
ninja
ctest -j8
However, I cannot build it with the address sanitizer (ASAN):
cmake -DCMAKE_BUILD_TYPE=Sanitize -G Ninja ..
ninja
The cmake log is cmake-log.txt.
The ninja log is:
~/projects/swipl $ ninja
[589/2446] Linking C shared library src/libswipl.8.4.0.dylib
FAILED: src/libswipl.8.4.0.dylib
: && /Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -dynamiclib -Wl,-headerpad_max_install_names -compatibility_version 8.0.0 -current_version 8.4.0 -o src/libswipl.8.4.0.dylib -install_name @rpath/libswipl.8.dylib src/CMakeFiles/swiplobjs.dir/pl-atom.c.o src/CMakeFiles/swiplobjs.dir/pl-wam.c.o src/CMakeFiles/swiplobjs.dir/pl-arith.c.o src/CMakeFiles/swiplobjs.dir/pl-bag.c.o src/CMakeFiles/swiplobjs.dir/pl-error.c.o src/CMakeFiles/swiplobjs.dir/pl-comp.c.o src/CMakeFiles/swiplobjs.dir/pl-zip.c.o src/CMakeFiles/swiplobjs.dir/pl-dwim.c.o src/CMakeFiles/swiplobjs.dir/pl-ext.c.o src/CMakeFiles/swiplobjs.dir/pl-flag.c.o src/CMakeFiles/swiplobjs.dir/pl-funct.c.o src/CMakeFiles/swiplobjs.dir/pl-gc.c.o src/CMakeFiles/swiplobjs.dir/pl-privitf.c.o src/CMakeFiles/swiplobjs.dir/pl-list.c.o src/CMakeFiles/swiplobjs.dir/pl-string.c.o src/CMakeFiles/swiplobjs.dir/pl-load.c.o src/CMakeFiles/swiplobjs.dir/pl-modul.c.o src/CMakeFiles/swiplobjs.dir/pl-op.c.o src/CMakeFiles/swiplobjs.dir/pl-prims.c.o src/CMakeFiles/swiplobjs.dir/pl-pro.c.o src/CMakeFiles/swiplobjs.dir/pl-proc.c.o src/CMakeFiles/swiplobjs.dir/pl-prof.c.o src/CMakeFiles/swiplobjs.dir/pl-read.c.o src/CMakeFiles/swiplobjs.dir/pl-rec.c.o src/CMakeFiles/swiplobjs.dir/pl-setup.c.o src/CMakeFiles/swiplobjs.dir/pl-sys.c.o src/CMakeFiles/swiplobjs.dir/pl-trace.c.o src/CMakeFiles/swiplobjs.dir/pl-util.c.o src/CMakeFiles/swiplobjs.dir/pl-wic.c.o src/CMakeFiles/swiplobjs.dir/pl-write.c.o src/CMakeFiles/swiplobjs.dir/pl-term.c.o src/CMakeFiles/swiplobjs.dir/pl-thread.c.o src/CMakeFiles/swiplobjs.dir/pl-xterm.c.o src/CMakeFiles/swiplobjs.dir/pl-srcfile.c.o src/CMakeFiles/swiplobjs.dir/pl-beos.c.o src/CMakeFiles/swiplobjs.dir/pl-attvar.c.o src/CMakeFiles/swiplobjs.dir/pl-gvar.c.o src/CMakeFiles/swiplobjs.dir/pl-btree.c.o src/CMakeFiles/swiplobjs.dir/pl-init.c.o src/CMakeFiles/swiplobjs.dir/pl-gmp.c.o src/CMakeFiles/swiplobjs.dir/pl-segstack.c.o src/CMakeFiles/swiplobjs.dir/pl-hash.c.o src/CMakeFiles/swiplobjs.dir/pl-version.c.o src/CMakeFiles/swiplobjs.dir/pl-codetable.c.o src/CMakeFiles/swiplobjs.dir/pl-supervisor.c.o src/CMakeFiles/swiplobjs.dir/pl-dbref.c.o src/CMakeFiles/swiplobjs.dir/pl-termhash.c.o src/CMakeFiles/swiplobjs.dir/pl-variant.c.o src/CMakeFiles/swiplobjs.dir/pl-assert.c.o src/CMakeFiles/swiplobjs.dir/pl-copyterm.c.o src/CMakeFiles/swiplobjs.dir/pl-debug.c.o src/CMakeFiles/swiplobjs.dir/pl-cont.c.o src/CMakeFiles/swiplobjs.dir/pl-ressymbol.c.o src/CMakeFiles/swiplobjs.dir/pl-dict.c.o src/CMakeFiles/swiplobjs.dir/pl-trie.c.o src/CMakeFiles/swiplobjs.dir/pl-indirect.c.o src/CMakeFiles/swiplobjs.dir/pl-tabling.c.o src/CMakeFiles/swiplobjs.dir/pl-rsort.c.o src/CMakeFiles/swiplobjs.dir/pl-mutex.c.o src/CMakeFiles/swiplobjs.dir/pl-allocpool.c.o src/CMakeFiles/swiplobjs.dir/pl-wrap.c.o src/CMakeFiles/swiplobjs.dir/pl-event.c.o src/CMakeFiles/swiplobjs.dir/pl-transaction.c.o src/CMakeFiles/swiplobjs.dir/pl-undo.c.o src/CMakeFiles/swiplobjs.dir/pl-alloc.c.o src/CMakeFiles/swiplobjs.dir/pl-index.c.o src/CMakeFiles/swiplobjs.dir/pl-fli.c.o src/CMakeFiles/swiplobjs.dir/os/pl-buffer.c.o src/CMakeFiles/swiplobjs.dir/os/pl-ctype.c.o src/CMakeFiles/swiplobjs.dir/os/pl-file.c.o src/CMakeFiles/swiplobjs.dir/os/pl-files.c.o src/CMakeFiles/swiplobjs.dir/os/pl-glob.c.o src/CMakeFiles/swiplobjs.dir/os/pl-os.c.o src/CMakeFiles/swiplobjs.dir/os/pl-stream.c.o src/CMakeFiles/swiplobjs.dir/os/pl-string.c.o src/CMakeFiles/swiplobjs.dir/os/pl-table.c.o src/CMakeFiles/swiplobjs.dir/os/pl-text.c.o src/CMakeFiles/swiplobjs.dir/os/pl-utf8.c.o src/CMakeFiles/swiplobjs.dir/os/pl-fmt.c.o src/CMakeFiles/swiplobjs.dir/os/pl-dtoa.c.o src/CMakeFiles/swiplobjs.dir/os/pl-option.c.o src/CMakeFiles/swiplobjs.dir/os/pl-cstack.c.o src/CMakeFiles/swiplobjs.dir/os/pl-codelist.c.o src/CMakeFiles/swiplobjs.dir/os/pl-prologflag.c.o src/CMakeFiles/swiplobjs.dir/os/pl-tai.c.o src/CMakeFiles/swiplobjs.dir/os/pl-locale.c.o src/CMakeFiles/swiplobjs.dir/libtai/caltime_utc.c.o src/CMakeFiles/swiplobjs.dir/libtai/caltime_tai.c.o src/CMakeFiles/swiplobjs.dir/libtai/leapsecs_sub.c.o src/CMakeFiles/swiplobjs.dir/libtai/leapsecs_add.c.o src/CMakeFiles/swiplobjs.dir/libtai/caldate_fmjd.c.o src/CMakeFiles/swiplobjs.dir/libtai/caldate_mjd.c.o src/CMakeFiles/swiplobjs.dir/libtai/leapsecs_init.c.o src/CMakeFiles/swiplobjs.dir/libtai/leapsecs_read.c.o src/CMakeFiles/swiplobjs.dir/libtai/tai_pack.c.o src/CMakeFiles/swiplobjs.dir/libtai/tai_unpack.c.o src/CMakeFiles/swiplobjs.dir/minizip/zip.c.o src/CMakeFiles/swiplobjs.dir/minizip/unzip.c.o src/CMakeFiles/swiplobjs.dir/minizip/ioapi.c.o /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libcurses.tbd /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libform.tbd /usr/local/lib/libgmp.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libz.tbd -ldl -lm && :
Undefined symbols for architecture x86_64:
"_PL__ctx", referenced from:
_atom_generator in pl-atom.c.o
_unallocModule in pl-modul.c.o
_stopProfiler in pl-prof.c.o
_sig_profile in pl-prof.c.o
_dispatch_signal in pl-setup.c.o
_interruptHandler in pl-trace.c.o
_PL_thread_raise in pl-thread.c.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[598/2446] Building C object packages/ssl/CMakeFiles/plugin_ssl4pl.dir/ssl4pl.c.o
ninja: build stopped: subcommand failed.
I'm on macOS 10.14.6 (Mojave).
:cry: Seems a bug in the MacOS toolchain. Building with ASAN compiles exactly the same code as without, so if it compiles without it should compile with. Best I can suggest is to either try GCC or use a Linux machine. If it is really a memory error that is detectable by AddressSanitizer it is probably platform independent.
I get the same error with cmake -DCMAKE_BUILD_TYPE=Debug + make builds for macOS. I have seen this via GitHub Actions runners for both macos-latest and macos-11.