llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.07k stars 11.09k forks source link

Rust/Wasm linking with `rust-lld` failed: signal: 11 (SIGSEGV) (release ok, debug fails) #87073

Open matt-duch opened 3 months ago

matt-duch commented 3 months ago

linking with 'rust-lld' failed: signal: 11 (SIGSEGV) noticed when building a modified version of a (large) application on latest nightly. There were a lot of changes in the application before this was noticed, I'm trying to narrow down what is causing this.

cargo clean
cargo build -p my-app --target wasm32-unknown-unknown

 = note: LC_ALL="C" PATH="/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/self-contained:/home/matt/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin" VSLANG="1033" "rust-lld" "-flavor" "wasm" "--export" "__wbindgen_describe_run_app" "--export" "run_app" "--export" "__externref_drop_slice" "--export" "__externref_heap_live_count" "--export" "__externref_table_alloc" "--export" "__externref_table_dealloc" "--export" "__wbindgen_exn_store" "--export" "__wbindgen_free" 
...
"--gc-sections" "--no-entry" "-O0"
  = note: rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-absvdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-absvsi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-absvti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-addvdi3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-addvsi3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-addvti3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-clzdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-clzsi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-clzti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-cmpdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-cmpti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-ctzdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-ctzsi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-ctzti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-divdc3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-divsc3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-extendhfsf2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-ffsti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-int_util.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-muldc3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-mulsc3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-mulvdi3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-mulvsi3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-mulvti3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negdf2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negsf2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negvdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negvsi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-negvti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-paritydi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-paritysi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-parityti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-popcountdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-popcountsi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-popcountti2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-subvdi3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-subvsi3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-subvti3.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-truncdfhf2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-truncsfhf2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-ucmpdi2.o' is neither Wasm object file nor LLVM bitcode
          rust-lld: warning: /home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-97c2a2c46d69892f.rlib: archive member '45c91108d938afe8-ucmpti2.o' is neither Wasm object file nor LLVM bitcode
          PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
           #0 0x000074307aee0e37 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libLLVM.so.18.1-rust-1.79.0-nightly+0x3ae0e37)
           #1 0x000074307aee124c SignalHandler(int) (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libLLVM.so.18.1-rust-1.79.0-nightly+0x3ae124c)
           #2 0x0000743077042990 (/lib/x86_64-linux-gnu/libc.so.6+0x42990)
           #3 0x000074307717d8b7 __memcpy_avx_unaligned_erms ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:488:0
           #4 0x00005c0d86a3a254 lld::wasm::CustomSection::writeTo(unsigned char*) (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/rust-lld+0x46a254)
           #5 0x000074307ae94731 std::_Function_handler<void (), llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>)::$_0>::_M_invoke(std::_Any_data const&) (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libLLVM.so.18.1-rust-1.79.0-nightly+0x3a94731)
           #6 0x000074307ae94602 std::_Function_handler<void (), llvm::parallel::TaskGroup::spawn(std::function<void ()>, bool)::$_0>::_M_invoke(std::_Any_data const&) (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libLLVM.so.18.1-rust-1.79.0-nightly+0x3a94602)
           #7 0x000074307ae93c52 llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work(llvm::ThreadPoolStrategy, unsigned int) (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libLLVM.so.18.1-rust-1.79.0-nightly+0x3a93c52)
           #8 0x000074307ae144f0 execute_native_thread_routine (/home/matt/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libLLVM.so.18.1-rust-1.79.0-nightly+0x3a144f0)
           #9 0x0000743077097b5a start_thread ./nptl/pthread_create.c:444:8
          #10 0x00007430771285fc clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0

Initially noticed on a slightly earlier version of rust nightly, which didn't print the warnings (sorry I didn't have LLVM installed at this point)

= note: PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
          Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
          0  libLLVM-17-rust-1.77.0-nightly.so 0x000076446d456c57 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 39
          1  libLLVM-17-rust-1.77.0-nightly.so 0x000076446d45707b
          2  libc.so.6                         0x0000764469242990
          3  libc.so.6                         0x000076446937d8b7
          4  rust-lld                          0x00005d13cb704884
          5  libLLVM-17-rust-1.77.0-nightly.so 0x000076446d40d6d1
          6  libLLVM-17-rust-1.77.0-nightly.so 0x000076446d40d5a2
          7  libLLVM-17-rust-1.77.0-nightly.so 0x000076446d40cbf2
          8  libLLVM-17-rust-1.77.0-nightly.so 0x000076446d38e320
          9  libc.so.6                         0x0000764469297b5a
          10 libc.so.6                         0x00007644693285fc

I've looked at https://llvm.org/docs/HowToSubmitABug.html and will try to create a minimum reproducible program for this, but that may not be possible/feasible (but I figured I should file this anyways).

Outside of that, please let me know how I can help further with this.

matt-duch commented 3 months ago

It seems this is tied to compilation options on the rust side.

This works:

wasm-pack build --release
cargo build -p my-app --release --target wasm32-unknown-unknown

This does not:

wasm-pack build --dev
cargo build -p my-app --target wasm32-unknown-unknown

So, it looks like this is an issue with debug builds, but release builds don't trigger this.