信号ハンドラー内でのデータ アクセスの共有
共有データへのアクセスまたは変更による不整合状態の発生
説明
この欠陥は、信号ハンドラー内の共有オブジェクトへのアクセスまたは変更を行った場合に発生します。
リスク
共有オブジェクトへのアクセスまたは変更を行う信号ハンドラー関数を定義する場合、ハンドラーは信号を受け取ると共有オブジェクトへのアクセスまたは変更を行います。他の関数が既にその共有オブジェクトにアクセス中の場合、その関数が競合状態を発生させ、データが不整合状態になる可能性があります。
修正方法
信号ハンドラー内の共有オブジェクトへのアクセスまたは変更を行うには、オブジェクトがロック制御不要のアトミックであることをチェックするか、オブジェクトが整数の場合は volatile sig_atomic_t
として宣言します。
例
結果情報
グループ: プログラミング |
言語: C | C++ |
既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: SIG_HANDLER_SHARED_OBJECT
|
影響度: Medium |
バージョン履歴
R2017b で導入