-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Description
I have an emscripten project which relies on the -sASYNCIFY features. Trying to compile it with fsanitize=address as additional argument to reveal problems fails because the functions wrapped with the EM_ASYNC_JS macro are then not seen by the compiler anymore.
I have a function addPersistentDirs exposed via the EM_ASYNC_JS macro
EM_ASYNC_JS(void,addPersistentDirsInt,(),...
and as soon as adding -fsanitize=address the linking fails with the function not found.
-fsanitze=leak works fine btw.
Version of emscripten/emsdk:
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 4.0.22 (0f3d2e6)
clang version 22.0.0git (https:/github.com/llvm/llvm-project c7706d9472fe880ba1d3418919ad4185710c9559)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/leo/w/github/emsdk/upstream/bin
Failing command line in full:
emcc
-O2
--pre-js pre.js
-s MAIN_MODULE=1
-s FORCE_FILESYSTEM=1
-s EXPORT_ALL=1
-s ASSERTIONS=1
-s STACK_SIZE=200000
-s ASYNCIFY
-s ASYNCIFY_STACK_SIZE=200000
-s MAXIMUM_MEMORY=4GB
-s STACK_OVERFLOW_CHECK=2
-s EXIT_RUNTIME=1
-s ALLOW_MEMORY_GROWTH=1
-lidbfs.js
-lproxyfs.js
-fsanitize=address
main.c -o main.html
error: undefined symbol: addPersistentDirsInt (referenced by root reference (e.g. compiled C/C++ code))
warning: To disable errors for undefined symbols use -sERROR_ON_UNDEFINED_SYMBOLS=0
warning: _addPersistentDirsInt may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
Error: Aborting compilation due to previous errors
at finalCombiner (file:///Users/leo/w/github/emsdk/upstream/emscripten/src/jsifier.mjs:889:13)
at Module.runJSify (file:///Users/leo/w/github/emsdk/upstream/emscripten/src/jsifier.mjs:925:5)
at file:///Users/leo/w/github/emsdk/upstream/emscripten/tools/compiler.mjs:108:17
emcc: error: '/Users/leo/w/github/emsdk/node/20.18.0_64bit/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/compiler.mjs -' failed (returned 1)
make: *** [main.html] Error 1
Full link command and output with -v appended:
emcc
-v
-O2
--pre-js pre.js
-s MAIN_MODULE=1
-s FORCE_FILESYSTEM=1
-s EXPORT_ALL=1
-s ASSERTIONS=1
-s STACK_SIZE=200000
-s ASYNCIFY
-s ASYNCIFY_STACK_SIZE=200000
-s MAXIMUM_MEMORY=4GB
-s STACK_OVERFLOW_CHECK=2
-s EXIT_RUNTIME=1
-s ALLOW_MEMORY_GROWTH=1
-lidbfs.js
-lproxyfs.js
-fsanitize=address
main.c -o main.html
/Users/leo/w/github/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -fPIC -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -O2 -fsanitize=address -c main.c -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_mx_9x87n/main.o
clang version 22.0.0git (https:/github.com/llvm/llvm-project c7706d9472fe880ba1d3418919ad4185710c9559)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/leo/w/github/emsdk/upstream/bin
(in-process)
"/Users/leo/w/github/emsdk/upstream/bin/clang-22" -cc1 -triple wasm32-unknown-emscripten -O2 -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model pic -pic-level 2 -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-feature +mutable-globals -target-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/Users/leo/tmp/em_fsanitize_address -v -fcoverage-compilation-dir=/Users/leo/tmp/em_fsanitize_address -resource-dir /Users/leo/w/github/emsdk/upstream/lib/clang/22 -D EMSCRIPTEN -isysroot /Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /Users/leo/w/github/emsdk/upstream/lib/clang/22/include -internal-isystem /Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include -ferror-limit 19 -fmessage-length=98 -fvisibility=default -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -fsanitize=address -fno-sanitize-memory-param-retval -fsanitize-address-use-after-scope -fsanitize-address-globals-dead-stripping -fno-assume-sane-operator-new -o /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_mx_9x87n/main.o -x c main.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target
ignoring nonexistent directory "/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include/compat
/Users/leo/w/github/emsdk/upstream/lib/clang/22/include
/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
/Users/leo/w/github/emsdk/upstream/bin/clang --version
/Users/leo/w/github/emsdk/upstream/bin/wasm-ld -o main.wasm -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export-if-defined=setThrew --export-if-defined=_emscripten_stack_restore --export-if-defined=emscripten_stack_get_current --export-if-defined=_emscripten_find_dylib --export-if-defined=strerror --export-if-defined=_emscripten_stack_alloc --export-if-defined=emscripten_get_sbrk_ptr --export-if-defined=__heap_base --export-if-defined=calloc --export-if-defined=malloc --export-if-defined=free --export-if-defined=_emscripten_tempret_get --export-if-defined=_emscripten_tempret_set --export-if-defined=htons --export-if-defined=ntohs --export-if-defined=htonl --export-if-defined=_emscripten_timeout --export-if-defined=realloc --export-if-defined=memalign --export-if-defined=emscripten_builtin_malloc --export-if-defined=emscripten_builtin_free --export-if-defined=emscripten_builtin_memalign --export-if-defined=emscripten_builtin_calloc --export-if-defined=emscripten_builtin_realloc --export-if-defined=emscripten_stack_get_base --export-if-defined=emscripten_stack_get_end --export-if-defined=__cxa_can_catch --export-if-defined=__cxa_increment_exception_refcount --export-if-defined=__cxa_get_exception_ptr --export-if-defined=__cxa_decrement_exception_refcount --export-if-defined=fileno --export-if-defined=__dl_seterr --export-if-defined=memcmp --export-if-defined=memcpy --export-if-defined=emscripten_stack_set_limits --export-if-defined=__cxa_demangle /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/tmp6yued_4mlibemscripten_js_symbols.so --export-dynamic -Bdynamic --export=__stack_pointer --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=_emscripten_stack_alloc --export=malloc --export=calloc --export=realloc --export=memalign --export=free --export=emscripten_builtin_malloc --export=emscripten_builtin_calloc --export=emscripten_builtin_realloc --export=emscripten_builtin_memalign --export=emscripten_builtin_free --export=__asan_loadN --export=__asan_storeN --export=__funcs_on_exit --export=__wasm_call_ctors --export=setThrew --export=_emscripten_stack_restore --export=_emscripten_find_dylib --export=strerror --export=emscripten_get_sbrk_ptr --export=__heap_base --export=_emscripten_tempret_get --export=_emscripten_tempret_set --export=htons --export=ntohs --export=htonl --export=_emscripten_timeout --export=__cxa_can_catch --export=__cxa_increment_exception_refcount --export=__cxa_get_exception_ptr --export=__cxa_decrement_exception_refcount --export=fileno --export=__dl_seterr --export=memcmp --export=memcpy --export=emscripten_stack_set_limits --export=__cxa_demangle --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=fflush --experimental-pic --unresolved-symbols=import-dynamic --export-table --growable-table -z stack-size=200000 --max-memory=4294967296 --initial-memory=630390784 --no-entry --no-stack-first --table-base=1 --global-base=613572608 --whole-archive /var/folders/fv/7l4yvm9d2bvbsvl80kmhp8b40000gn/T/emscripten_temp_mx_9x87n/main.o -L/Users/leo/w/github/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic -L/Users/leo/w/github/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lc-asan-debug -ldlmalloc-debug -lcompiler_rt -lc++-debug-noexcept -lc++abi-debug-noexcept -lsockets -lasan_rt -lubsan_rt -llsan_common_rt -lsanitizer_common_rt --no-whole-archive
/Users/leo/w/github/emsdk/upstream/bin/llvm-objcopy main.wasm main.wasm '--remove-section=.debug*' --remove-section=producers
/Users/leo/w/github/emsdk/upstream/bin/wasm-emscripten-finalize -g --bigint --no-legalize-javascript-ffi --check-stack-overflow main.wasm -o main.wasm --detect-features
/Users/leo/w/github/emsdk/node/20.18.0_64bit/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/compiler.mjs -
error: undefined symbol: addPersistentDirsInt (referenced by root reference (e.g. compiled C/C++ code))
warning: To disable errors for undefined symbols use -sERROR_ON_UNDEFINED_SYMBOLS=0
warning: _addPersistentDirsInt may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
Error: Aborting compilation due to previous errors
at finalCombiner (file:///Users/leo/w/github/emsdk/upstream/emscripten/src/jsifier.mjs:889:13)
at Module.runJSify (file:///Users/leo/w/github/emsdk/upstream/emscripten/src/jsifier.mjs:925:5)
at file:///Users/leo/w/github/emsdk/upstream/emscripten/tools/compiler.mjs:108:17
emcc: error: '/Users/leo/w/github/emsdk/node/20.18.0_64bit/bin/node /Users/leo/w/github/emsdk/upstream/emscripten/tools/compiler.mjs -' failed (returned 1)