Доступ или изменение разделяемых данных вызывают несогласованное состояние
Этот дефект возникает, когда вы получаете доступ или изменяете общий объект внутри обработчика сигнала.
Когда вы задаете функцию обработчика сигналов для доступа или изменения общего объекта, обработчик обращается или изменяет общий объект, когда он получает сигнал. Если другая функция уже обращается к общему объекту, эта функция вызывает условие расы и может оставить данные в несогласованном состоянии.
Чтобы получить доступ или изменить общие объекты внутри обработчика сигнала, проверяйте, что объекты являются безблокировочными атомарными, или, если они являются целыми числами, объявляйте их как volatile sig_atomic_t
.
Группа: Программирование |
Язык: C | C++ |
По умолчанию: On для рукописного кода, off для сгенерированного кода |
Синтаксис командной строки
: SIG_HANDLER_SHARED_OBJECT
|
Влияние: Средний |
ИДЕНТИФИКАТОР CWE: 364, 413 |
Find defects (-checkers)
| Function called from signal handler not asynchronous-safe
| Signal call from within signal handler