C and C++


CONCURRENCY.LOCK.NESTED : Nested Locks

Summary

A lock is acquired while another lock is held.

Properties

Class Name Nested Locks
Significance style
Mnemonic CONCURRENCY.LOCK.NESTED
Categories
CWE CWE:413 Improper Resource Locking
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="Nested Locks"

Triggering Functions

Nested Locks warnings can be triggered by the following functions.

Example

#include <pthread.h>

pthread_mutex_t LockA;
pthread_mutex_t LockB;

void nested_locks(void){
    pthread_mutex_lock(&LockA);
    pthread_mutex_lock(&LockB);    /* 'Nested Locks' warning issued here */
    /* ... operate on locked data */
    pthread_mutex_unlock(&LockB);
    pthread_mutex_unlock(&LockA);
}

Notes

Deadlock cannot occur if no thread ever holds more than one lock at a time.

Relevant Configuration File Parameters

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