C and C++


CONCURRENCY.LOCK.NOUNLOCK : ロック解放の欠如

要旨

関数内でロックが取得されていますが、関数からリターンする前にリリースされていません。

プロパティ

クラス名 Missing Lock Release
日本語クラス名 ロック解放の欠如
クラス分類 スタイル (style)
ニーモニック CONCURRENCY.LOCK.NOUNLOCK
カテゴリー
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.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Missing Lock Release"

ワーニングを引き起こす関数

以下の関数で引き起こされます。

#include <pthread.h>

pthread_mutex_t LockA;

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

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。