C and C++


CONCURRENCY.LOCK.NOUNLOCK : Missing Lock Release

Summary

A lock was acquired in the body of a function, but not released before the function returned.

Properties

Class Name Missing Lock Release
Significance style
Mnemonic CONCURRENCY.LOCK.NOUNLOCK
Categories
MisraC2023 MisraC2023:22.16 All mutex objects locked by a thread shall be explicitly unlocked by the same thread
Misra2012 Misra2012:22.16 All mutex objects locked by a thread shall be explicitly unlocked by the same thread
CWE CWE:667 Improper Locking
CERT-C CERT-C:CON01-C Acquire and release synchronization primitives in the same module, at the same level of abstraction
CERT-CPP CERT-CPP:CON51-CPP Ensure actively held locks are released on exceptional conditions
JPL JPL:9 Place restrictions on the use of semaphores and locks.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Missing Lock Release"

Triggering Functions

Missing Lock Release warnings can be triggered by the following functions.

Example

#include <pthread.h>

pthread_mutex_t LockA;

void nounlock(void){
    pthread_mutex_lock(&LockA);
    return;    /* 'Missing Lock Release' warning issued here */
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.