Keine Absicherung gegen volle Datenspeicher - Druckversion +- Deutsches Simutransforum (https://simutrans-forum.de/mybb) +-- Forum: Simutrans (https://simutrans-forum.de/mybb/forumdisplay.php?fid=3) +--- Forum: Bugs und Probleme (https://simutrans-forum.de/mybb/forumdisplay.php?fid=11) +---- Forum: behobene Bugs (https://simutrans-forum.de/mybb/forumdisplay.php?fid=12) +---- Thema: Keine Absicherung gegen volle Datenspeicher (/showthread.php?tid=1824) |
Keine Absicherung gegen volle Datenspeicher - Gotthardlok - 14-08-2006 Simutrans-Version: 0.89.xx PAK-Set (+zusätzliche PAK-Dateien): egal Betriebssystem: Linux Fehler (möglichst genaue Beschreibung): Simutrans merkt nicht, wenn Festplatten etc. voll sind und das Speichern von Spielständen fehlschlägt, es übergibt den Prozess dem System, welches dann irgendwie versucht, das ganze abzufangen bzw. irgendwo zu cachen o.ä. Verhalten (Absturz, Einfrieren, ...): Simutrans läuft weiter, kann aber kaum mehr angesprochen werden, da das System mit Speichern überlastet ist; kill -9 ist meist der einzige Ausweg. Wunsch: Schreiben des logs auf die Festplatte sollte unterdrückt werden können, wenn die Standardausgabe verfügbar ist (bei Linux wohl die Regel). - prissi - 14-08-2006 Das Problem ist, das unter allen modernen Betriebssystemen der Speicher nie als "voll" gemeldet wird. Das System gibt munter weiter "Handles" aus, in der Hoffnung, wenn man das wirklich braucht, dann wird schon wieder was da sein. Im Prinzip sollte Simutrans geordnet abbrechen, falls der Speicher alle ist. (Na gut, es sollte stehen "Fatal error: OUT OF MEMORY!". Das mit dem Speichern von Spielständen muss ich noch ausprobieren. Allerdings sollte eigentlich auch die zlib (die das eigentliche Speichern übernimmt) eine Fehlermeldung zurückgeben. Ich vermute daher, dass Simutrans nicht hängt, sondern die zlib, die erst beim Finalen gclose() anfängt, den Spielstand zu komprimieren und zu schreiben. (Ist das nicht schön, wenn man die Verantwortung abschieben kann ... ) Ich werde mir mal die Dokumentataion der zlib ansehen, fürchte aber, da ist wenig zu machen. Das log auf Platte kann man unter Linux auf mehrere Arten aussschalten. Die einfachste ist -log 0 -debug order nur -debug, dann sollte es nur am Bildschirm erscheinen. Jedenfalls versucht Simutrans, dann nur "stderr" zu öffnen, was nur besagten Fehlerkanal öffnen sollte. - Gotthardlok - 19-08-2006 ./simutrans -log 0 -debug schaltet das Schreiben auf die Festplatte nicht aus; ./simutrans -debug bringt das gewünschte Ergebnis. Festplatte voll - kein Check - HaJo4 - 05-05-2007 Simutrans-Version: 99.11 PAK-Set (+zusätzliche PAK-Dateien): pak64 Betriebssystem: Win Fehler (möglichst genaue Beschreibung): Beim Speichern von Spielen, sowie bei Screenshots wird nicht getestet ob noch genug Platz auf der Platte vorhanden ist, bzw. ob das speichern erfolgreich war. Verhalten (Absturz, Einfrieren, ...): Die Dialogbox "Spielstand wurde gespeichert" bzw. "Screenshot gespeichert" erscheint, obwohl Platte voll + die Savegame/Sceenshot- Dateien leer sind. - prissi - 05-05-2007 Liegt nicht an Simutrans, sondern an Windows: Das behauptet nämlich, die Platte ist noch nicht leer und nimmt die Daten trotzdem an und packt sie in einen Cache in der irren Hoffnung, doch noch schreiben zu können. (Alledings tritt dieser Fall eh meist nie ein, weil schon vorher diverse Windowsrelevante Funktionen ihren Gesit aufgeben). Beim Savegame könnte (und sollte) auch die libz Fehler melden; aber auch das klappt nie. Aber ich werde einen Check für den vorhandenen Speicher hinzufügen. - HaJo4 - 05-05-2007 Zitat:Original von prissiDie Daten/Screenshots müssen ja nicht auf der Systemplatte liegen, z.B. EigeneDaten auf D: oder SimuTrans auf USBstick. Zitat:Beim Savegame könnte (und sollte) auch die libz Fehler melden; aber auch das klappt nie.Neues Savegame erst mit Dummynamen speichern, checken, dann erst altes Savegame löschen/umbenennen ? - Wurzelgnom - 16-12-2007 Gibs bei diesem Problem was neues? |