You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Disclaimer: It is entirely possible that this is in fact an issue of k4FWCore, but I observed it first when using k4MarlinWrapper and the converters, so opening here first.
In short PodioOutput seg faults when trying to fill its internal data tree, when a wrapped Marlin processor has no LCEvent. This seems a bit reminiscent of #36.
A minimal reproducer looks like this. The input file for this is the muons.slcio that is downloaded to test/inputFiles/
fromGaudi.Configurationimport*fromConfigurablesimport (
LcioEvent,
MarlinProcessorWrapper,
PodioOutput,
Lcio2EDM4hepTool,
k4DataSvc,
)
algList= []
evtSvc=k4DataSvc("EventDataSvc")
read=LcioEvent()
read.Files= ["muons.slcio"]
edmConvTool=Lcio2EDM4hepTool("LCIO2EDM4hep")
edmConvTool.convertAll=Truemonitor=MarlinProcessorWrapper("monitor")
monitor.ProcessorType="Statusmonitor"monitor.Lcio2EDM4hepTool=edmConvTooloutput=PodioOutput("EDM4hepOutput", filename="output.edm4hep.root")
output.outputCommands= ["keep *"]
algList.append(read)
algList.append(monitor)
algList.append(output)
fromConfigurablesimportApplicationMgrApplicationMgr(
TopAlg=algList,
EvtSel="NONE",
EvtMax=11, # THIS IS THE PROBLEM, muons.slcio has only 10 eventsExtSvc=[evtSvc],
OutputLevel=WARNING
)
running this via k4run makes the whole thing seg-fault in PodioOutput. There are some warnings before that, that at least hint at the fact, that the event loop is terminated one event too late, i.e. it looks like the event in which LcioEvent detects, that it has no events left, is still run. All the MarlinProcessorWrappers handle that gracefully, but for some reason the PodioOutput seems to run into some invalid memory access. From the stacktrace, the culprit is: https://github.com/key4hep/k4FWCore/blob/e4b846e4e25fa3967fdbb1cf4ec02de8ad8bca8a/k4FWCore/components/PodioOutput.cpp#L137
As a side note: removing the output algorithm from the algorithms to run, results in a graceful termination, but even then, there is a warning about a nullptr LCIO event:
[...]Saving status: 1Saving status: 1monitor WARNING LCIO Event reading returned nullptr, so MarlinProcessorWrapper won't executeEventLoopMgr SUCCESS Terminating event processing loop due to scheduled stop[ MESSAGE "monitor"] Statusmonitor::end() monitor processed 10 events in 0 runs
The output when segfaulting is the same, up to the line where the EventLoopMgr gracefully terminates.
The text was updated successfully, but these errors were encountered:
Disclaimer: It is entirely possible that this is in fact an issue of k4FWCore, but I observed it first when using k4MarlinWrapper and the converters, so opening here first.
In short
PodioOutput
seg faults when trying to fill its internal data tree, when a wrapped Marlin processor has noLCEvent
. This seems a bit reminiscent of #36.A minimal reproducer looks like this. The input file for this is the
muons.slcio
that is downloaded totest/inputFiles/
running this via
k4run
makes the whole thing seg-fault inPodioOutput
. There are some warnings before that, that at least hint at the fact, that the event loop is terminated one event too late, i.e. it looks like the event in whichLcioEvent
detects, that it has no events left, is still run. All theMarlinProcessorWrapper
s handle that gracefully, but for some reason thePodioOutput
seems to run into some invalid memory access. From the stacktrace, the culprit is:https://github.com/key4hep/k4FWCore/blob/e4b846e4e25fa3967fdbb1cf4ec02de8ad8bca8a/k4FWCore/components/PodioOutput.cpp#L137
As a side note: removing the
output
algorithm from the algorithms to run, results in a graceful termination, but even then, there is a warning about anullptr
LCIO event:The output when segfaulting is the same, up to the line where the
EventLoopMgr
gracefully terminates.The text was updated successfully, but these errors were encountered: