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