Задача пытается уничтожить взаимное исключение в заблокированном состоянии
Разрушение заблокированного взаимного исключения происходит, когда задача уничтожает взаимное исключение после того, как это заблокировано (и прежде чем это будет разблокировано). Блокировка и разрушение могут произойти в той же задаче или различных задачах.
Взаимное исключение заблокировано, чтобы защитить совместно используемые переменные от параллельного доступа. Если взаимное исключение уничтожается в заблокированном состоянии, защита не применяется.
Чтобы зафиксировать этот дефект, уничтожьте взаимное исключение только после того, как вы разблокируете его. Это - хорошая практика проекта к:
Инициализируйте взаимное исключение прежде, чем создать потоки, где вы используете взаимное исключение.
Уничтожьте взаимное исключение после присоединения потоков, которые вы создали.
На панели 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)