diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
index be53cc7ffc75e2e351667bc3143f7e8dfe05b61c..340d945796bcc5cb81db9ab830a436cb2c5185c0 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
@@ -439,10 +439,15 @@ namespace armarx::armem::server::obj::instance
                                        const Ice::Current&)
     {
         objpose::ObjectPosePredictionResultSeq results;
-        for (const auto& request : requests)
+        // TODO(@phesch): Only fetch the required data in the lock, perform the predictions
+        // locally in this function's thread.
+        segment.doLocked([this,&requests,&results]()
         {
-            results.push_back(segment.predictObjectPose(request));
-        }
+            for (const auto& request : requests)
+            {
+                results.push_back(segment.predictObjectPose(request));
+            }
+        });
         return results;
     }