Hver deltager i dødvandet har en ressource, som den anden har brug for. Forestil dig for eksempel to transaktioner, T1 og T2. T1 har låst ressource A, og T2 har låst ressource B. T1 har brug for ressource B for at fuldføre, men den kan ikke få den, før T2 slipper låsen. På samme måde har T2 brug for ressource A for at fuldføre, men den kan ikke få det, før T1 slipper låsen. Dette skaber et dødvande.
Det, der adskiller en fantom-deadlock fra en normal deadlock, er, at deltagerne ikke er opmærksomme på hinanden. De prøver bare hver især at gøre deres egne ting, men de blokerer uforvarende hinanden.
Phantom deadlocks er svære at opdage, fordi de ikke er forårsaget af et enkelt fejlpunkt. De er forårsaget af selve systemets distribuerede natur. Som følge heraf kan de være meget svære at løse.
En måde at løse phantom deadlocks på er at øge antallet af låse i systemet. Dette gør det mindre sandsynligt, at to transaktioner skal låse de samme ressourcer på samme tid. En anden måde at løse phantom deadlocks på er at bruge timeouts. Hvis en transaktion ikke frigiver en lås efter et vist tidsrum, afbrydes den, og låsen frigives.
Phantom deadlocks er en sjælden begivenhed, men de kan være et alvorligt problem, når de opstår. Ved at forstå, hvad de er, og hvordan du kan løse dem, kan du hjælpe med at holde dine distribuerede systemer kørende.