rui314 / mold

Mold: A Modern Linker 🦠
MIT License
14.17k stars 464 forks source link

crash: assertion failed elf/input-sections.cc:445 #994

Open jcelerier opened 1 year ago

jcelerier commented 1 year ago

Title says it all...

ld.mold: /usr/src/debug/mold/mold/elf/input-sections.cc:445: bool mold::elf::InputSection<E>::record_undef_error(mold::elf::Context<E>&, const mold::elf::ElfRel<E>&) [with E = mold::elf::X86_64]: Assertion `sym.file' failed.
$ ld.mold --version
mold 1.10.1 (040180f933d33fa246f9d2961c2d6e8b74241463; compatible with GNU ld)

What can I do to give an useful debug information ? Here's my complete mold invocation:

"/usr/bin/ld.mold" --build-id --eh-frame-hdr -m elf_x86_64 -shared -o plugins/libscore_plugin_faust.so /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../lib64/crti.o /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1/crtbeginS.o -L/usr/lib -L/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1 -L/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/bin/../lib -L/lib -L/usr/lib --no-undefined -soname libscore_plugin_faust.so src/plugins/score-plugin-faust/CMakeFiles/score_plugin_faust.dir/Faust/EffectModel.cpp.o src/plugins/score-plugin-faust/CMakeFiles/score_plugin_faust.dir/score_plugin_faust.cpp.o -rpath /home/jcelerier/build-developer-mold-qt6/plugins:/home/jcelerier/libs/qt6.5-reldeb/lib:/home/jcelerier/build-developer-mold-qt6/3rdparty/libossia/src:/opt/portaudio/lib:/home/jcelerier/build-developer-mold-qt6/3rdparty/libossia/wiiuse/src: plugins/libscore_plugin_media.so /usr/local/lib/libfaust.a -ldl -lz -lLLVM-15 3rdparty/libossia/3rdparty/libsamplerate/libsamplerate.a 3rdparty/libsndfile/libsndfile.a plugins/libscore_plugin_engine.so plugins/libscore_plugin_dataflow.so plugins/libscore_plugin_audio.so plugins/libscore_plugin_scenario.so plugins/libscore_plugin_transport.so plugins/libscore_plugin_automation.so plugins/libscore_plugin_curve.so /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6OpenGL.so.6.5.0 plugins/libscore_plugin_library.so plugins/libscore_lib_process.so plugins/libscore_lib_inspector.so plugins/libscore_lib_localtree.so plugins/libscore_plugin_deviceexplorer.so plugins/libscore_lib_device.so plugins/libscore_lib_state.so plugins/libscore_lib_base.so /usr/lib/libxkbcommon.so 3rdparty/libossia/src/libossia.so /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6WebSockets.so.6.5.0 /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6SerialPort.so.6.5.0 /opt/portaudio/lib/libportaudio.so -ljack /usr/lib/libasound.so -lpthread /usr/lib/libSDL2-2.0.so.0.2600.3 3rdparty/QCodeEditor/libQCodeEditor.a /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6Widgets.so.6.5.0 /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6StateMachine.so.6.5.0 /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6Gui.so.6.5.0 /usr/lib/libGLX.so /usr/lib/libOpenGL.so /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6Qml.so.6.5.0 /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6Network.so.6.5.0 /home/jcelerier/libs/qt6.5-reldeb/lib/libQt6Core.so.6.5.0 -ldl -lm -lm -rpath-link /home/jcelerier/libs/qt6.5-reldeb/lib:/home/jcelerier/build-developer-mold-qt6/plugins:/home/jcelerier/build-developer-mold-qt6/3rdparty/libossia/wiiuse/src -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1/crtendS.o /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../lib64/crtn.o

I can send all the related .so / .a ?

with lld I have a few missing symbols in my build:


ld.lld: error: undefined symbol: registerForeignFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
>>> referenced by score_plugin_faust.cpp:41 (/home/jcelerier/score/src/plugins/score-plugin-faust/score_plugin_faust.cpp:41)
>>>               src/plugins/score-plugin-faust/CMakeFiles/score_plugin_faust.dir/score_plugin_faust.cpp.o:(auto do_registerCustomForeignFunction<char [8]>(char const (&) [8]))
>>> referenced by score_plugin_faust.cpp:41 (/home/jcelerier/score/src/plugins/score-plugin-faust/score_plugin_faust.cpp:41)
>>>               src/plugins/score-plugin-faust/CMakeFiles/score_plugin_faust.dir/score_plugin_faust.cpp.o:(auto do_registerCustomForeignFunction<char [6]>(char const (&) [6]))
>>> referenced by score_plugin_faust.cpp:41 (/home/jcelerier/score/src/plugins/score-plugin-faust/score_plugin_faust.cpp:41)
>>>               src/plugins/score-plugin-faust/CMakeFiles/score_plugin_faust.dir/score_plugin_faust.cpp.o:(auto do_registerCustomForeignFunction<char [7]>(char const (&) [7]))
>>> referenced 21 more times

ld.lld: error: undefined symbol: llvm::Function::addAttribute(unsigned int, llvm::Attribute::AttrKind)
>>> referenced by llvm_code_container.cpp
>>>               llvm_code_container.cpp.o:(LLVMInstVisitor::visit(DeclareFunInst*)) in archive /usr/local/lib/libfaust.a
>>> referenced by llvm_code_container.cpp
>>>               llvm_code_container.cpp.o:(LLVMInstVisitor::visit(DeclareFunInst*)) in archive /usr/local/lib/libfaust.a

ld.lld: error: undefined symbol: llvm::AttributeList::addAttribute(llvm::LLVMContext&, unsigned int, llvm::Attribute::AttrKind) const
>>> referenced by llvm_code_container.cpp
>>>               llvm_code_container.cpp.o:(LLVMInstVisitor::visit(FunCallInst*)) in archive /usr/local/lib/libfaust.a
>>> referenced by llvm_code_container.cpp
>>>               llvm_code_container.cpp.o:(LLVMInstVisitor::visit(FunCallInst*)) in archive /usr/local/lib/libfaust.a
>>> referenced by llvm_code_container.cpp
>>>               llvm_code_container.cpp.o:(LLVMInstVisitor::visit(FunCallInst*)) in archive /usr/local/lib/libfaust.a
>>> referenced 1 more times

ld.lld: error: undefined symbol: llvm::raw_string_ostream::~raw_string_ostream()
>>> referenced by llvm_dynamic_dsp_aux.cpp
>>>               llvm_dynamic_dsp_aux.cpp.o:(llvm_dynamic_dsp_factory_aux::write(std::ostream*, bool, bool)) in archive /usr/local/lib/libfaust.a
>>> referenced by llvm_dynamic_dsp_aux.cpp
>>>               llvm_dynamic_dsp_aux.cpp.o:(llvm_dynamic_dsp_factory_aux::writeDSPFactoryToBitcode[abi:cxx11]()) in archive /usr/local/lib/libfaust.a
>>> referenced by llvm_dynamic_dsp_aux.cpp
>>>               llvm_dynamic_dsp_aux.cpp.o:(llvm_dynamic_dsp_factory_aux::writeDSPFactoryToIR[abi:cxx11]()) in archive /usr/local/lib/libfaust.a
>>> referenced 6 more times

ld.lld: error: undefined symbol: llvm::TargetMachine::getTargetIRAnalysis()
>>> referenced by llvm_dynamic_dsp_aux.cpp
>>>               llvm_dynamic_dsp_aux.cpp.o:(llvm_dynamic_dsp_factory_aux::initJIT(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)) in archive /usr/local/lib/libfaust.a
[1]    25443 exit 1     "/usr/bin/ld.lld" --build-id --eh-frame-hdr -m elf_x86_64 -shared -o         
ksco commented 1 year ago

I can send all the related .so / .a ?

You could use --repro to generate a reproducible .tar file, and upload it here.