Skip to content

Commit 7643a6e

Browse files
sawenzelclaude
andcommitted
Fix of a hang in ITSClusterTask
This commit fixes a hang observed in the MC nightlies since 11. August 2026. The patch corrects upon findings of a debug session which surfaced that - ITSTracksClustersQC never returns. - It keeps its semaphore, so the other timeframes never run. - The QC finalisation stalls and the GRID watchdog kills the job. - The task aborts inside free() while it is destroyed. - The crash handler then deadlocks, so the process never exits. The destructor deletes the dcol maps in the inner barrel branch. For layers 0 to 2 this frees hDcolMapOBSor and hDcolMapOBEor at index -3, -2 and -1. They belong in the outer barrel branch. startOfCycle resets the same histograms without a null check. createAllHistos skips disabled layers, so they can be null. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent b63cdd9 commit 7643a6e

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

Modules/ITS/src/ITSClusterTask.cxx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ ITSClusterTask::~ITSClusterTask()
5555
delete hClusterCenterMap[iLayer];
5656
delete hLongClustersPerChip[iLayer];
5757
delete hMultPerChipWhenLongClusters[iLayer];
58-
delete hDcolMapOBSor[iLayer - NLayerIB];
59-
delete hDcolMapOBEor[iLayer - NLayerIB];
6058
}
6159

6260
else {
6361
delete hLongClustersPerStave[iLayer - NLayerIB];
62+
delete hDcolMapOBSor[iLayer - NLayerIB];
63+
delete hDcolMapOBEor[iLayer - NLayerIB];
6464
}
6565
delete hClusterSizeLayerSummary[iLayer];
6666
delete hClusterTopologyLayerSummary[iLayer];
@@ -131,7 +131,9 @@ void ITSClusterTask::startOfCycle()
131131
if (nCycle % nResetCycle == 0) {
132132
hDcolMapIBEor->Reset();
133133
for (int i = 0; i < NLayerOB; i++) {
134-
hDcolMapOBEor[i]->Reset();
134+
if (hDcolMapOBEor[i]) {
135+
hDcolMapOBEor[i]->Reset();
136+
}
135137
}
136138
}
137139

0 commit comments

Comments
 (0)