Seien Sie vorsichtig beim Schließen der Griffe. Es ist aufgrund des Handle-Recyclings sogar noch gefährlicher als man denkt. Wenn Sie das Datei-Handle schließen und das Programm etwas anderes öffnet, wird das ursprüngliche Datei-Handle, das Sie geschlossen haben, möglicherweise für "etwas anderes" wiederverwendet. Und nun raten Sie mal, was passiert, wenn das Programm fortfährt und denkt, es arbeitet an der Datei (deren Handle Sie geschlossen haben), obwohl dieses Datei-Handle jetzt auf etwas anderes verweist.
Angenommen, ein Suchindexdienst hat eine Datei zum Indizieren geöffnet, ist jedoch vorübergehend hängen geblieben und Sie möchten die Datei löschen, sodass Sie das Schließen des Handles (unklug) erzwingen. Der Suchindexdienst öffnet seine Protokolldatei, um einige Informationen aufzuzeichnen, und das Handle für die gelöschte Datei wird als Handle für die Protokolldatei wiederverwendet. Die festgefahrene Operation wird schließlich abgeschlossen, und der Suchindexdienst beendet nun das geöffnete Handle, schließt jedoch versehentlich das Handle für die Protokolldatei.
Der Suchindexdienst öffnet eine andere Datei, beispielsweise eine Konfigurationsdatei zum Schreiben, damit ein dauerhafter Status aktualisiert werden kann. Das Handle für die Protokolldatei wird als Handle für die Konfigurationsdatei wiederverwendet. Der Suchindexdienst möchte einige Informationen protokollieren, sodass er in seine Protokolldatei schreibt. Leider wurde das Protokolldatei-Handle geschlossen und das Handle für seine Konfigurationsdatei wiederverwendet. Die protokollierten Informationen gehen in die Konfigurationsdatei ein und beschädigen diese.
Währenddessen wurde ein anderes Handle, das Sie zwangsweise geschlossen haben, als Mutex-Handle wiederverwendet, um zu verhindern, dass Daten beschädigt werden. Wenn das ursprüngliche Dateihandle geschlossen wird, wird das Mutexhandle geschlossen und der Schutz vor Datenbeschädigung geht verloren. Je länger der Dienst ausgeführt wird, desto beschädigter werden seine Indizes. Irgendwann bemerkt jemand, dass der Index falsche Ergebnisse zurückgibt. Und wenn Sie versuchen, den Dienst neu zu starten, schlägt dies fehl, da die Konfigurationsdateien beschädigt wurden.
Sie melden das Problem der Firma, die den Suchindexdienst erstellt, und sie stellen fest, dass der Index beschädigt ist, die Protokolldatei auf mysteriöse Weise die Protokollierung gestoppt hat und die Konfigurationsdatei mit Garbage überschrieben wurde. Einige arme Techniker haben die hoffnungslose Aufgabe, herauszufinden, warum der Dienst seine Indizes und Konfigurationsdateien beschädigt, ohne zu wissen, dass die Ursache für die Beschädigung das Schließen eines Handles ist.