Segfault in EventView bookkeeping
ATLAS HLT tests with views are intermittently failing, and the same stack trace has been produced by both myself and Charles:
..snip..
at /cvmfs/sft.cern.ch/lcg/releases/gcc/6.2.0-2bc78/x86_64-slc6-gcc62-opt/include/c++/6.2.0/bits/unordered_map.h:851
#4 EventSlot::addSubSlot (nodeName=..., viewContext=..., this=0x25edc880) at /build2/atnight/localbuilds/nightlies/master/build/src/GAUDI/GaudiHive/src/EventSlot.h:57
#5 AvalancheSchedulerSvc::<lambda()>::operator() (__closure=<optimized out>) at /build2/atnight/localbuilds/nightlies/master/build/src/GAUDI/GaudiHive/src/AvalancheSchedulerSvc.cpp:1143
#6 std::_Function_handler<StatusCode(), AvalancheSchedulerSvc::scheduleEventView(const EventContext*, const string&, std::unique_ptr<EventContext>)::<lambda()> >::_M_invoke(const std::_Any_data &) (
__functor=...) at /cvmfs/sft.cern.ch/lcg/releases/gcc/6.2.0-2bc78/x86_64-slc6-gcc62-opt/include/c++/6.2.0/functional:1726
#7 0x00007f57c19c397c in std::function<StatusCode ()>::operator()() const (this=this@entry=0x7f5799432d80)
at /cvmfs/sft.cern.ch/lcg/releases/gcc/6.2.0-2bc78/x86_64-slc6-gcc62-opt/include/c++/6.2.0/functional:2136
#8 0x00007f57c19c8f30 in AvalancheSchedulerSvc::activate (this=0x276ea200) at /build2/atnight/localbuilds/nightlies/master/build/src/GAUDI/GaudiHive/src/AvalancheSchedulerSvc.cpp:389
#9 0x00007f57c19c9259 in AvalancheSchedulerSvc::<lambda()>::operator() (__closure=<optimized out>)
at /build2/atnight/localbuilds/nightlies/master/build/src/GAUDI/GaudiHive/src/AvalancheSchedulerSvc.cpp:81
..snip..
The line in question (EventSlot.h:57) is auto search = subSlotsByNode.find( nodeName );
This suggests that the subSlotsByNode map is still being modified and read concurrently.
I have yet to demonstrate this in a simpler test than the ATLAS HLT menu tests.
Regards, Ben
Edited by Benjamin Michael Wynne