Mutexes Mutex objects are used to protect shared data structures from being concurrently accessed. If a mutex object is destroyed while a thread is blocked waiting for that mutexthe lock, critical sections and shared data are no longer protected.
...
The behavior of a program is undefined if it destroys a
mutex
object owned by any thread or a thread terminates while owning amutex
object.
This statement implies Similar wording exists for std::recursive_mutex
, std::timed_mutex
, std::recursive_timed_mutex
, and std::shared_timed_mutex
. These statements imply that destroying a mutex object while a thread is waiting on it is undefined behavior.
...
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
CON50-CPP | Medium | Probable | High | P4 | L3 |
Automated Detection
Tool | Version | Checker | Description |
---|---|---|---|
| |||
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...
[ISO/IEC 14882-2014] | Subclause 30.4.1, "Mutual exclusionMutex Requirements" |
...