C and C++


CONCURRENCY.C_THREAD.ISD : Inappropriate Storage Duration

要旨

A variable of one of the following types is declared as a local or thread local.

プロパティ

クラス名 Inappropriate Storage Duration
日本語クラス名 Inappropriate Storage Duration
クラス分類 信頼性 (reliability)
ニーモニック CONCURRENCY.C_THREAD.ISD
カテゴリー
MisraC2023 MisraC2023:22.13 Thread objects, thread synchronization objects and thread-specific storage pointers shall have appropriate storage duration
Misra2012 Misra2012:22.13 Thread objects, thread synchronization objects and thread-specific storage pointers shall have appropriate storage duration
CWE CWE:662 Improper Synchronization
CERT-C CERT-C:CON34-C Declare objects shared between threads with appropriate storage durations
対応言語 C のみ利用可能です。 C++ は利用できません。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Inappropriate Storage Duration"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

#include <threads.h>

_Thread_local mtx_t m_tl; /* 'Inappropriate Storage Duration' warning issued here */

_Thread_local int i_tl;            /* ok: type is not thrd_t, mtx_t, cnd_t, or tss_t */

static mtx_t m_static;             /* ok: duration is not thread or automatic */

void c_thread_isd(void){
    mtx_t m_l;            /* 'Inappropriate Storage Duration warning' issued here */
    static mtx_t m_sl;             /* ok: duration is not thread or automatic */

    /* ... */
}

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

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