Skip to content

Segmentation violation when running hltGetConfiguration with option -output full #47697

@mmusich

Description

@mmusich

I was trying to answer the question from Andrea at: cms-sw/cmssw#37207 (comment) using the following script in CMSSW_15_0_2_patch1:

#!/bin/bash -ex

hltGetConfiguration /dev/CMSSW_15_0_0/GRun \
   --globaltag 150X_dataRun3_HLT_v1 \
   --data \
   --unprescale \
   --output full \
   --max-events 100 \
   --eras Run3_2024 --l1-emulator uGT --l1 L1Menu_Collisions2024_v1_3_0_xml \
   --input /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root \
   > hltData.py

cmsRun hltData.py >& hltData.log

(using "full" output module, which according to important note in the SWGuideGlobalHLT section should probe the issue) and I got a segmentation fault:

Thread 1 (Thread 0x7f51ff429540 (LWP 597176) "cmsRun"):
#0  0x00007f51fef015bf in poll () from /lib64/libc.so.6
#1  0x00007f51f8c543b7 in edm::service::InitRootHandlers::stacktraceFromThread() () from /cvmfs/cms.cern.ch/el9_amd64_gcc12/cms/cmssw/CMSSW_15_0_2/lib/el9_amd64_gcc12/pluginFWCoreServicesPlugins.so
#2  0x00007f51f8c545b4 in sig_dostack_then_abort () from /cvmfs/cms.cern.ch/el9_amd64_gcc12/cms/cmssw/CMSSW_15_0_2/lib/el9_amd64_gcc12/pluginFWCoreServicesPlugins.so
#3  <signal handler called>
#4  0x00007f51e4de1d9f in clang::StringLiteralParser::init(llvm::ArrayRef<clang::Token>) () from /cvmfs/cms.cern.ch/el9_amd64_gcc12/cms/cmssw-patch/CMSSW_15_0_2_patch1/external/el9_amd64_gcc12/lib/libCling.so
#5  0x00007f51e1f41605 in clang::Sema::ActOnStringLiteral(llvm::ArrayRef<clang::Token>, clang::Scope*) () from /cvmfs/cms.cern.ch/el9_amd64_gcc12/cms/cmssw-patch/CMSSW_15_0_2_patch1/external/el9_amd64_gcc12/lib/libCling.so
#6  0x0000000000000000 in ?? ()

using minimal and all I don't see the issue.
As per documentation:

  • --output all : default, all output modules are retained
  • --output none : all output modules are removed
  • --output minimal : all output modules are removed, a single one is added which just keeps trigger-related outputs (e.g. HLT results, L1T objects)
  • --output full : all output modules are removed, a single one is added which saves everything

in the case that crashes, the PoolOutputModule is configured as:

# add a single "keep *" output
process.hltOutputFull = cms.OutputModule( "PoolOutputModule",
    fileName = cms.untracked.string( "output.root" ),
    fastCloning = cms.untracked.bool( False ),
    dataset = cms.untracked.PSet(
        dataTier = cms.untracked.string( 'RECO' ),
        filterName = cms.untracked.string( '' )
    ),
    outputCommands = cms.untracked.vstring( 'keep *' )
)
process.FullOutput = cms.EndPath( process.hltOutputFull )
process.schedule.append( process.FullOutput )

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions