diff --git a/lib/locking.py b/lib/locking.py
index 6ba74f2ea5c6159e07778af7b44c5037f1fbdf1c..103d645012bf13a48f5892f16af0040c8b774f7d 100644
--- a/lib/locking.py
+++ b/lib/locking.py
@@ -775,7 +775,9 @@ class LockSet:
   def _release_and_delete_owned(self):
     """Release and delete all resources owned by the current thread"""
     for lname in self._list_owned():
-      self.__lockdict[lname].release()
+      lock = self.__lockdict[lname]
+      if lock._is_owned():
+        lock.release()
       self._del_owned(name=lname)
 
   def __names(self):