diff --git a/geom/geom/src/TGeoBoolNode.cxx b/geom/geom/src/TGeoBoolNode.cxx
index a8ec0c68ad670188f423be52f4424b0391c9579c..63452d6c62d7741b7fd488e67f30ad1ff677803f 100644
--- a/geom/geom/src/TGeoBoolNode.cxx
+++ b/geom/geom/src/TGeoBoolNode.cxx
@@ -83,6 +83,7 @@ TGeoBoolNode::ThreadData_t& TGeoBoolNode::GetThreadData() const
 //______________________________________________________________________________
 void TGeoBoolNode::ClearThreadData() const
 {
+   TThread::Lock();
    std::vector<ThreadData_t*>::iterator i = fThreadData.begin();
    while (i != fThreadData.end())
    {
@@ -91,6 +92,7 @@ void TGeoBoolNode::ClearThreadData() const
    }
    fThreadData.clear();
    fThreadSize = 0;
+   TThread::UnLock();
 }
 
 //______________________________________________________________________________
diff --git a/geom/geom/src/TGeoManager.cxx b/geom/geom/src/TGeoManager.cxx
index 1f0905b6aa80ffa4215d4d4a8371adffcd7d99ec..315fc2f7dec67b1efbaaed926d8f99ac7da3c751 100644
--- a/geom/geom/src/TGeoManager.cxx
+++ b/geom/geom/src/TGeoManager.cxx
@@ -366,6 +366,7 @@ TGeoManager::ThreadData_t& TGeoManager::GetThreadData() const
 //______________________________________________________________________________
 void TGeoManager::ClearThreadData() const
 {
+   TThread::Lock();
    std::vector<ThreadData_t*>::iterator i = fThreadData.begin();
    while (i != fThreadData.end())
    {
@@ -377,6 +378,7 @@ void TGeoManager::ClearThreadData() const
    TIter next(fVolumes);
    TGeoVolume *vol;
    while ((vol=(TGeoVolume*)next())) vol->ClearThreadData();
+   TThread::UnLock();
 }
 
 //_____________________________________________________________________________
diff --git a/geom/geom/src/TGeoPatternFinder.cxx b/geom/geom/src/TGeoPatternFinder.cxx
index 88ef570af27785a92c32ef3e98a8f77fdb32461f..9319332cfe04ca80080e989253fb4a1d3c365c54 100644
--- a/geom/geom/src/TGeoPatternFinder.cxx
+++ b/geom/geom/src/TGeoPatternFinder.cxx
@@ -90,6 +90,7 @@ TGeoPatternFinder::ThreadData_t& TGeoPatternFinder::GetThreadData() const
 //______________________________________________________________________________
 void TGeoPatternFinder::ClearThreadData() const
 {
+   TThread::Lock();
    std::vector<ThreadData_t*>::iterator i = fThreadData.begin();
    while (i != fThreadData.end())
    {
@@ -98,6 +99,7 @@ void TGeoPatternFinder::ClearThreadData() const
    }
    fThreadData.clear();
    fThreadSize = 0;
+   TThread::UnLock();
 }
 
 //_____________________________________________________________________________
diff --git a/geom/geom/src/TGeoVolume.cxx b/geom/geom/src/TGeoVolume.cxx
index 9ce6da0ba736791fe2b90811964f5dd60ae4c512..86111d8a78d6ab7bd6ebbe59e01e5af000ad046f 100644
--- a/geom/geom/src/TGeoVolume.cxx
+++ b/geom/geom/src/TGeoVolume.cxx
@@ -2495,6 +2495,7 @@ TGeoVolumeAssembly::ThreadData_t& TGeoVolumeAssembly::GetThreadData() const
 //______________________________________________________________________________
 void TGeoVolumeAssembly::ClearThreadData() const
 {
+   TThread::Lock();
    TGeoVolume::ClearThreadData();
    std::vector<ThreadData_t*>::iterator i = fThreadData.begin();
    while (i != fThreadData.end())
@@ -2504,6 +2505,7 @@ void TGeoVolumeAssembly::ClearThreadData() const
    }
    fThreadData.clear();
    fThreadSize = 0;
+   TThread::UnLock();
 }
 
 //______________________________________________________________________________
diff --git a/geom/geom/src/TGeoVoxelFinder.cxx b/geom/geom/src/TGeoVoxelFinder.cxx
index c6b9c1c02590276a08a16972e62734f6157504d6..a6014df00be2239b000a59985484e3a49d3472f9 100644
--- a/geom/geom/src/TGeoVoxelFinder.cxx
+++ b/geom/geom/src/TGeoVoxelFinder.cxx
@@ -90,6 +90,7 @@ TGeoVoxelFinder::ThreadData_t& TGeoVoxelFinder::GetThreadData(Int_t tid) const
 //______________________________________________________________________________
 void TGeoVoxelFinder::ClearThreadData() const
 {
+   TThread::Lock();
    std::vector<ThreadData_t*>::iterator i = fThreadData.begin();
    while (i != fThreadData.end())
    {
@@ -98,6 +99,7 @@ void TGeoVoxelFinder::ClearThreadData() const
    }
    fThreadData.clear();
    fThreadSize = 0;
+   TThread::UnLock();
 }