When `pthread_mutex_destroy` is used to release mutex, `pthread_mutex_lock_internal` is used, which results in the increase of `uxmutexehold` and no recovery base priority
@@ -593,6 +593,15 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex)
return EBUSY;
}
+ if (mux->type == PTHREAD_MUTEX_RECURSIVE) {
+ res = xSemaphoreGiveRecursive(mux->sem);
+ } else {
+ res = xSemaphoreGive(mux->sem);
+ }
+ if (res != pdTRUE) {
+ assert(false && "Failed to release mutex!");
+
vSemaphoreDelete(mux->sem);
free(mux);