Задача пытается уничтожить мьютекс в заблокированном состоянии
Этот дефект возникает, когда задача уничтожает мьютекс после его блокировки (и до его разблокировки). Блокировка и уничтожение могут происходить в одной задаче или различных задачах.
Мьютекс заблокирован, чтобы защитить общие переменные от параллельного доступа. Если мьютекс уничтожен в заблокированном состоянии, защита не применяется.
Чтобы исправить этот дефект, уничтожите мьютекс только после того, как вы разблокируете его. Это хорошая практика проекта, чтобы:
Инициализируйте мьютекс перед созданием потоков, где вы используете мьютекс.
Уничтожить мьютекс после присоединения к потокам, которые вы создали.
На панели Result Details вы видите два события: блокировка и уничтожение мьютекса и задачи, которые инициировали события. Чтобы перейти к соответствующей линии в исходном коде, щелкните событие.
Группа: Параллелизм |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки: DESTROY_LOCKED |
Влияние: Средний |
ИДЕНТИФИКАТОР 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)