AthSequencer and CoreDumpSvc: Delay timer creation until first use
AthSequencer and CoreDumpSvc both exploit Athena::AlgorithmTimer
to abort the job on timeout. While I'm not convinced to the internal implementation of Athena::AlgorithmTimer
with the use of timer_create
, any timer implementation will require a new thread to be created. In the current implementation the timers were instantiated in the constructors of AthSequencer and CoreDumpSvc, meaning the extra thread (in this case timer_helper_thread spawned by timer_create) was created very early in the job. This poses risks for multi-process jobs, as extra threads existing before fork may lead to undefined/buggy behaviour. The issue was discovered in ATR-19792.
In this MR, I delay the creation of these timers until their first use, which in the case of jobs I tested means they are never created (thus the extra thread is never started).
Asking for explicit approval from @ssnyder or @tsulaia or @fwinkl (please click the Approve button)