...
Deadlock prevents multiple threads from progressing, thus halting the executing program. A denial-of-service attack is possible because the attacker can force deadlock situations. Deadlock is likely to occur in multithreaded programs that manage multiple shared resources.
Recommendation | Severity | Likelihood |
|---|
Detectable | Repairable | Priority | Level |
|---|---|---|---|
POS51-C | Low | Probable | No |
No |
P2 | L3 |
Automated Detection
| Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Astrée |
| Supported: Astrée reports all potential deadlocks. | |||||||
| CodeSonar |
| CONCURRENCY.LOCK.ORDER | Conflicting lock order | ||||||
| Helix QAC |
| C1772, C1773 | |||||||
| Klocwork |
| CONC.DL |
| |||||||||
| Parasoft C/C++test |
| CERT_C-POS51-a | Do not acquire locks in different order | ||||||
| Polyspace Bug Finder |
|
Call sequence to lock functions cause two tasks to block each other
Related Guidelines
| CERT C: Rule POS51-C | Checks for deadlock (rule fully covered) |
Related Guidelines
Key here (explains table format and definitions)
Taxonomy | Taxonomy item | Relationship |
|---|---|---|
| CERT C |
| LCK07-J. Avoid deadlock by requesting and releasing locks in the same order |
| Prior to 2018-01-12: CERT: Unspecified Relationship |
CERT-CWE Mapping Notes
Key here for mapping notes
CWE-764 and POS51-C/POS35-C
Independent( CWE-764, POS51-C, POS35-C)
CWE-764
...
is about semaphores, or objects capable of being locked multiple times. Deadlock arises from multiple locks being acquired in a cyclic order, and generally does not arise from semaphores or recursive mutexes.
Bibliography
| [Barney 2010] | pthread_mutex tutorial |
| [Bryant 2003] | Chapter 13, "Concurrent Programming" |
...
...