Задача пытается уничтожить взаимное исключение в заблокированном состоянии
Этот дефект происходит, когда задача уничтожает взаимное исключение после того, как это заблокировано (и прежде чем это будет разблокировано). Блокировка и разрушение могут произойти в той же задаче или различных задачах.
Взаимное исключение заблокировано, чтобы защитить совместно используемые переменные от параллельного доступа. Если взаимное исключение уничтожается в заблокированном состоянии, защита не применяется.
Чтобы зафиксировать этот дефект, уничтожьте взаимное исключение только после того, как вы разблокируете его. Это - хорошая практика проекта к:
Инициализируйте взаимное исключение прежде, чем создать потоки, где вы используете взаимное исключение.
Уничтожьте взаимное исключение после присоединения потоков, которые вы создали.
На панели Result Details вы видите два события, блокировку и разрушение взаимного исключения и задачи, которые инициировали события. Чтобы перейти к соответствующей линии в вашем исходном коде, кликните по событию.
Группа: параллелизм |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: DESTROY_LOCKED |
Удар: носитель |
ID CWE: 667, 826 |
Configure multitasking manually
| Data race
| Data race including atomic operations
| Data race through standard library function call
| Deadlock
| Double lock
| Double unlock
| Find defects (-checkers)
| Missing lock
| Missing unlock
| Target processor type (-target)
| Tasks (-entry-points)