Do not delete the mutex, while it is being locked by other thread.
---
src/base/os_defs.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/base/os_defs.c b/src/base/os_defs.c
index 83458c208..6c45eda0d 100644
--- a/src/base/os_defs.c
+++ b/src/base/os_defs.c
@@ -428,8 +428,14 @@ unsigned int ncs_os_lock(NCS_OS_LOCK *lock,
NCS_OS_LOCK_REQUEST request,
break;
}
case NCS_OS_LOCK_RELEASE:
- if (pthread_mutex_destroy(&lock->lock) != 0)
- return (NCSCC_RC_FAILURE);
+ /* Before destroying make sure not locked by any other thread */
+ if (pthread_mutex_trylock(&lock->lock) == 0) {
+ pthread_mutex_unlock(&lock->lock);
+ if (pthread_mutex_destroy(&lock->lock) != 0)
+ return (NCSCC_RC_FAILURE);
+ } else {
+ return NCSCC_RC_FAILURE;
+ }
break;
case NCS_OS_LOCK_LOCK:
--
2.17.1
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel