C and C++


CONCURRENCY.LOCK.NOLOCK : ロック取得の欠如

要旨

関数内でロックがリリースされていますが、その前に同じ関数内でロックを取得していません。

プロパティ

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

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

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

#include <pthread.h>

pthread_mutex_t LockA;

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

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

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