Komfortabler Dateimanager mit vielen Funktionen

Erster Treffer

By Sven on 04.06.2008 - 10:00 in Entwicklung

Letzte Woche hatte Ralf mir von einem Absturz in SpeedCommander berichtet, der während der Deinstallation eines Windows-Updates auftrat. Anhand des mitgelieferten Mini-Speicherabbilds konnte ich erkennen, dass der Absturz während einer Dateisystemaktualisierung auftrat, und zwar während der Bearbeitung der Datei ‘ntldr’. Der eigentliche Absturz erfolgte in der Windows-Funktion StrCmpI beim Test auf eine bestimmte Erweiterung.

Erst kam mir das etwas merkwürdig vor, da diese Funktion zum Erweiterungstest ja sehr häufig verwendet wird. Beim anschließenden manuellen Aufruf mit dem Dateinamen ‘ntldr’ erkannte ich dann das Problem. Ich hatte die Dokumentation zu PathFindExtension nicht korrekt gelesen und den Rückgabewert nur auf einen NULL-Zeiger geprüft und nicht auch noch auf einen leeren String.

Damit wurde der zurückgegebene Zeiger auch bei einer nicht vorhandenen Erweiterung um eins erhöht (um den Punkt zu überspringen) und fleißig gegen eine Liste mit bekannten Erweiterungen verglichen. Im normalen Betrieb war der nachfolgende Speicherbereich wohl immer gut gefüllt und damit gültig. Im minimierten Zustand räumt Windows aber immer wieder Speicher frei, was dann zur Zugriffsverletzung führte.

Ohne Mini-Speicherabbild wäre die Fehlersuche sehr viel schwieriger geworden, weil die wichtigen Begleitumstände unbekannt bleiben. Die neue Funktion hat sich also schon gelohnt.

Es gibt 2 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

  1. Oliver sagt:

    Bei Treibern ist das sogar die einzige Methode überhaupt an Infos zu kommen. Nur eines darf man nicht vergessen: Symbole sichern! Bei großen Projekten lohnt sich auch ein sog. “Source Server” um immer die entsprechenden Builds parat zu haben.

  2. Sven sagt:

    Die Symboldateien werden bei mir automatisch im Make-Skript gesichert. Das mit dem Source Server werde ich mir mal anschauen, danke für den Tip!

Top