C and C++


CONCURRENCY.LOCK.NOLOCK : Missing Lock Acquisition

Summary

A lock is released in the body of a function, but was not previously acquired in the same function.

Properties

Class Name Missing Lock Acquisition
Significance style
Mnemonic CONCURRENCY.LOCK.NOLOCK
Categories
MisraC2023 MisraC2023:22.17 No thread shall unlock a mutex or call cnd_wait() or cnd_timedwait() for a mutex it has not locked before
Misra2012 Misra2012:22.17 No thread shall unlock a mutex or call cnd_wait() or cnd_timedwait() for a mutex it has not locked before
CWE CWE:413 Improper Resource Locking
  CWE:832 Unlock of a Resource that is not Locked
CERT-C CERT-C:CON01-C Acquire and release synchronization primitives in the same module, at the same level of abstraction
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 Acquisition"

Triggering Functions

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

Example

#include <pthread.h>

pthread_mutex_t LockA;

void nolock(void){
    pthread_mutex_unlock(&LockA);   /* 'Missing Lock Acquisition' warning issued here */
    return;
}

Relevant Configuration File Parameters

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