diff --git a/src/algorithm/CNDFS.cpp b/src/algorithm/CNDFS.cpp
index 9e095d4589d34956a6094223130fa26453862d22..63543cd18c3d096f90beaa57f52725c888313b45 100644
--- a/src/algorithm/CNDFS.cpp
+++ b/src/algorithm/CNDFS.cpp
@@ -121,8 +121,8 @@ void CNDFS::computeSuccessors(myState_t *state) {
     if (state->succState == SuccState::built) return;
     std::unique_lock lk(mMutexStatus);
     if (state->succState == SuccState::beingbuilt) {
-        mMutexStatus.unlock();
         mDataCondWait.wait(lk, [state] { return state->succState == SuccState::built; });
+        mMutexStatus.unlock();
         return;
     }
     state->succState = SuccState::beingbuilt;