Hi,
@Maddis, bei der Umstellung auf Sommerzeit gab es noch keinen eWombat und das 'Problem' betrifft alle eMules (zumindestens alle, die Slugfiller's SafeHash verwenden)
Umgehen kann man das nur indem man die Windows Uhr nicht ändert, bzw. vor dem Wombatstart wieder zurückstellt
Beim schreiben einer Part Datei fügt der eWombat/eMule die Zeit dieser Aktion in die Part-Datei ein (Timestamp). Bei einem Neustart wird bei jeder Part-Datei diese Timestamp mit der Zeit der Letzten Modifikation der Datei (wird über Windows ermittelt) verglichen, sind diese Zeiten unterschiedlich geht SafeHash davon aus, das die Datei von einem anderen Programm geändert wurde (oder z.b. mit einer anderen Part getauscht) und ermittelt den Hash neu, da es sich ja um eine andere/geänderte Datei handeln könnte.
Das kann man recht gut simulieren, indem man nach Beendigung des eWombats die Systemzeit verstellt und den eWombat neu startet...
Das wirkliche Problem an der Sache ist:
Eigentlich sollte sich die Zeit der letzten Modifikation der Datei nicht ändern, egal ob diese (von der Windows-Uhr aus gesehen) in der Zukunft oder der Vergangenheit liegt, solange man die Datei nicht ändert. Aber die API-Funktion zum ausslesen der Änderungszeiten einer Datei liefern nach einer Uhrzeit-Änderung andere Werte als vorher, ohne das die Datei wirklich geändert wurde...
Das zweite Problem (Hallo Gucky):
Der SafeHash ist so konzipiert, das er im Hintergrund, schön brav, ohne den eWombat/eMule grossartig auszubremsen, die Datei Hashes neu anlegen/überprüfen kann (macht er immer, wenn ein neuer Chunk gedownloaded wurde oder eine Datei zum Share hinzugefügt wurde).
Wenn jetzt aber alle Dateien im Download beim Start neu gehasht werden müssen, wird für jede Datei ein neuer Hashthread gestartet der auf die Platte zugreift. Wenn jetzt mehrere Dateien gleichzeitig gehasht werden, kommen sich die Plattenzugriffe gegenseitig ins gehege und die Geschichte zieht sich in die Länge und kann (genügend gleichzeitige Hash Threads vorrausgesetzt) den eWombat/eMule oder sogar das ganze Windows ziemlich nach unten ziehen. Beim eWombat äussert sich das in 'Keine Rückmeldung' im Taskmanager und im einbruch des Uploads (der startet ja von alleine) bis zum Stillstand da die Socket Meldungen von Windows nicht mehr abgearbeitet werden können.
Ich habe aber schon eine Idee wie ich die ganze Geschichte entschärfen kann, das werde ich aber erst in die 0.064D einbauen...
cu
Darkwolf