diff --git a/objectstore/BackendVFS.cpp b/objectstore/BackendVFS.cpp
index 6072c023020fd4b098bcba7af2c51e126fa59314..95e056e4843392962e9a784fd7230783085fec35 100644
--- a/objectstore/BackendVFS.cpp
+++ b/objectstore/BackendVFS.cpp
@@ -207,6 +207,11 @@ BackendVFS::Parameters* BackendVFS::getParams() {
 
 void BackendVFS::ScopedLock::release() {
   if (!m_fdSet) return;
+#ifdef DEBUG_PRINT_LOGS
+  if (m_fd==-1) {
+    std::cout << "Warning: fd=-1!" << std::endl;
+  }
+#endif
   ::flock(m_fd, LOCK_UN);
   ::close(m_fd);
   m_fdSet = false;
@@ -226,6 +231,8 @@ BackendVFS::ScopedLock * BackendVFS::lockHelper(
     exception::Exception ex;
     ex.getMessage() << "In BackendVFS::lockHelper(): Failed to open file " << path <<
       ": " << errnoStr;
+    // fd=-1, so there will be no need to close the file (when *ret will be destroyed).
+    ret->m_fdSet=false;
     throw ex;
   }
 
@@ -236,6 +243,12 @@ BackendVFS::ScopedLock * BackendVFS::lockHelper(
       ": " << errnoStr;
     throw ex;
   }
+  
+#ifdef DEBUG_PRINT_LOGS
+  if (ret->m_fd==-1) {
+    std::cout << "Warning: fd=-1!" << std::endl;
+  }
+#endif
 
   return ret.release();
 }
diff --git a/tests/helgrind.suppr b/tests/helgrind.suppr
index de742601b4c407731b4eff34466e30139d666e5b..0228b4deff695412f9228ac51fa20f4bbbbc3033 100644
--- a/tests/helgrind.suppr
+++ b/tests/helgrind.suppr
@@ -199,3 +199,12 @@
    fun:main
 }
 
+{
+   pthread_destroy_castor
+   Helgrind:Race
+   fun:my_memcmp
+   fun:pthread_mutex_destroy
+   fun:_ZN6castor6server5MutexD1Ev
+   ...
+}
+