Ein schwerwiegendes Problem bei sperrbasierten Synchronisationsmethoden ist das Auftreten von Verklemmungen (englisch: deadlocks). Tabelle 12.12 zeigt ein Beispiel.
| Schritt | T1 | T2 | Bemerkung |
| 1. | BOT | ||
| 2. | lockX( A ) | ||
| 3. | BOT | ||
| 4. | lockS( B ) | ||
| 5. | read( B ) | ||
| 6. | read( A ) | ||
| 7. | write( A ) | ||
| 8. | lockX( B ) | T1 muß warten auf T2 | |
| 9. | lockS( A ) | T2 muß warten auf T1 | |
| 10. | ... | ... |
|
Eine präzise, aber auch teurere - Methode zum Erkennen von Verklemmungen basiert auf dem sogenannten Wartegraphen . Seine Knoten entsprechen den Transaktionen. Eine Kante existiert von Ti nach Tj , wenn Ti auf die Freigabe einer Sperre von Tj wartet. Bild 12.4 zeigt ein Beispiel.
Es gilt der Satz: Die Transaktionen befinden sich in einem Deadlock genau dann, wenn der Wartegraph einen Zyklus aufweist.
Eine Verklemmung wird durch das Zurücksetzen einer Transaktion aufgelöst: