Skip to content

ROOT 6.24 breaks Alice O2 due to symbol confusion with system llvm 11 #8180

@davidrohr

Description

@davidrohr

Compile Alice O2 with ROOT 6.24 and run a simulation, but I get crashes which apparently come due to symbol confusion with my system llvm 11. Here is a stack trace:

0x00007fffee8b09a4 in llvm::detail::UniqueFunctionBase<llvm::Expected<unsigned long>>::CallbacksHolder<llvm::orc::LegacyRTDyldObjectLinkingLayer::ConcreteLinkedObject<std::shared_ptr<llvm::RuntimeDyld::MemoryManager> >::getSymbolMaterializer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda()#1}, llvm::orc::LegacyRTDyldObjectLinkingLayer::ConcreteLinkedObject<std::shared_ptr<llvm::RuntimeDyld::MemoryManager> >::getSymbolMaterializer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda()#1}, void>::Callbacks () from /usr/lib/llvm/11/lib64/libLLVM-11.so
(gdb) bt
#0  0x00007fffee8b09a4 in llvm::detail::UniqueFunctionBase<llvm::Expected<unsigned long>>::CallbacksHolder<llvm::orc::LegacyRTDyldObjectLinkingLayer::ConcreteLinkedObject<std::shared_ptr<llvm::RuntimeDyld::MemoryManager> >::getSymbolMaterializer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda()#1}, llvm::orc::LegacyRTDyldObjectLinkingLayer::ConcreteLinkedObject<std::shared_ptr<llvm::RuntimeDyld::MemoryManager> >::getSymbolMaterializer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda()#1}, void>::Callbacks () from /usr/lib/llvm/11/lib64/libLLVM-11.so
#1  0x00007fffe3871543 in std::_Function_handler<llvm::Expected<unsigned long> (), llvm::orc::LazyEmittingLayer<llvm::orc::LegacyIRCompileLayer<cling::IncrementalJIT::RemovableObjectLinkingLayer, llvm::orc::SimpleCompiler> >::EmissionDeferredModule::find(llvm::StringRef, bool, llvm::orc::LegacyIRCompileLayer<cling::IncrementalJIT::RemovableObjectLinkingLayer, llvm::orc::SimpleCompiler>&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /usr/lib/root/6.24/lib/libCling.so
#2  0x00007fffe38610dd in cling::IncrementalExecutor::getPointerToGlobalFromJIT(llvm::StringRef) const () from /usr/lib/root/6.24/lib/libCling.so
#3  0x00007fffe37e8176 in cling::Interpreter::Interpreter(int, char const* const*, char const*, std::vector<std::shared_ptr<clang::ModuleFileExtension>, std::allocator<std::shared_ptr<clang::ModuleFileExtension> > > const&, bool, cling::Interpreter const*) () from /usr/lib/root/6.24/lib/libCling.so
#4  0x00007fffe3738a79 in TCling::TCling(char const*, char const*, char const* const*) () from /usr/lib/root/6.24/lib/libCling.so
#5  0x00007fffe373a9a1 in CreateInterpreter () from /usr/lib/root/6.24/lib/libCling.so
#6  0x00007ffff05eaafd in TROOT::InitInterpreter() () from /usr/lib/root/6.24/lib/libCore.so.6.24
#7  0x00007ffff05eafdf in ROOT::Internal::GetROOT2() () from /usr/lib/root/6.24/lib/libCore.so.6.24
#8  0x00007ffff06eee6c in TClass::GetClass(std::type_info const&, bool, bool, unsigned long, unsigned long) () from /usr/lib/root/6.24/lib/libCore.so.6.24
#9  0x00007ffff3529838 in o2::conf::ConfigurableParamHelper<o2::conf::KeyValParam>::putKeyValues (tree=0x5555556a24a0, this=0x7ffff35743e0 <o2::conf::KeyValParam::sInstance>) at /home/qon/alice/sw/SOURCES/O2/dev/0/Common/Utils/include/CommonUtils/ConfigurableParamHelper.h:138
#10 o2::conf::ConfigurableParam::initPropertyTree () at /home/qon/alice/sw/SOURCES/O2/dev/0/Common/Utils/src/ConfigurableParam.cxx:265
#11 0x00007ffff3529953 in o2::conf::ConfigurableParam::initialize () at /home/qon/alice/sw/SOURCES/O2/dev/0/Common/Utils/src/ConfigurableParam.cxx:357
#12 0x00007ffff352fbc5 in o2::conf::ConfigurableParam::updateFromFile (configFile="", paramsList="", unchangedOnly=unchangedOnly@entry=false) at /home/qon/alice/sw/SOURCES/O2/dev/0/Common/Utils/src/ConfigurableParam.cxx:386
#13 0x0000555555564294 in o2sim_init (asservice=<optimized out>) at /home/qon/alice/sw/SOURCES/O2/dev/0/run/../macro/o2sim.C:54
#14 0x00005555555673c3 in o2sim (asservice=asservice@entry=false) at /home/qon/alice/sw/SOURCES/O2/dev/0/run/../macro/o2sim.C:230
#15 0x000055555555f5bf in main (argc=-38592, argv=<optimized out>) at /home/qon/alice/sw/SOURCES/O2/dev/0/run/o2sim.cxx:30

This is on 64 bit Gentoo Linux compiling ROOT myself with GCC 10.2.
I assume the llvm11 is pulled in by libgandiva of apache-arrow, which links to my system llvm.

I do not see this problem with ROOT 6.22.08 (setup identical otherwise), so I assume it might be to the bump of the LLVM version in ROOT.
So far I have tried the 6.24.00 tag and the v6-24-00-patches branch, both with the same result.

For reference, we had very similar issues quite a while ago, which was fixed by #4689, although perhaps now it is the other way around, with ROOT linking to my llvm11 symbols.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions