Skip to content
Snippets Groups Projects

Protection against calling G4ThreadInitTool::terminateThread without having called initThread

All threads resolved!
@@ -114,12 +114,22 @@ void G4ThreadInitTool::initThread()
//-----------------------------------------------------------------------------
void G4ThreadInitTool::terminateThread()
{
ATH_MSG_INFO("terminateThread ==> tbb thread 0x" <<
ATH_MSG_DEBUG("terminateThread ==> tbb thread 0x" <<
std::hex << pthread_self() << std::dec);
// Geant4 worker finalization
G4RunManager::GetRunManager()->RunTermination();
auto runMgr = G4RunManager::GetRunManager();
+1
ATH_MSG_INFO("G4RunManger ptr" << runMgr);
if(runMgr) {
runMgr->RunTermination();
ATH_MSG_INFO("terminateThread ==> safely called G4AtlasWorkerRunManager::RunTermination for tbb thread 0x" <<
std::hex << pthread_self() << std::dec);
}
else {
ATH_MSG_WARNING("skipping attempt to call terminateThread for tbb thread 0x" <<
std::hex << pthread_self() << std::dec <<
" without having first called initThread.");
}
// Atomic decrement number of initialized threads
+1
m_nInitThreads--;
}
Loading