Skip to content

Segfault when scheduler in VERBOSE mode

Switching the scheduler output level to VERBOSE causes a segfault in the creation of the corresponding debug messages:

#6 0x00007f2cfceaf020 in concurrency::DecisionNode::printState(std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, AlgsExecutionStates&, std::vector<int, std::allocator<int> > const&, unsigned int const&) const () from /workdir/gaudi2/build.x86_64-slc6-gcc62-opt/lib/libGaudiHive.so #7 0x00007f2cfcec2b4c in PrecedenceSvc::printState[abi:cxx11](EventSlot&) const () from /workdir/gaudi2/build.x86_64-slc6-gcc62-opt/lib/libGaudiHive.so #8 0x00007f2cfce3f801 in AvalancheSchedulerSvc::dumpSchedulerState(int) () from /workdir/gaudi2/build.x86_64-slc6-ut gcc62-opt/lib/libGaudiHive.so #9 0x00007f2cfce48f9d in AvalancheSchedulerSvc::promoteToScheduled(unsigned int, int, EventContext*) () from /workdir/gaudi2/build.x86_64-slc6-gcc62-opt/lib/libGaudiHive.so

This segfault seems to require multiple event slots, and sub-event slots. Increasing the number of slots and sub-slots (and total events) increases the likelihood of the segfault, which can also (rarely) manifest as an out-of-range exception.

Easily demonstrated by tweaking the config of GaudiHive/options/BasicViewTest.py

Confirmed that it does not occur if dumpSchedulerState() is edited to immediately return rather than executing.

Edited by Benjamin Michael Wynne
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information