Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Keine Absicherung gegen volle Datenspeicher
#1
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).
Zitieren
#2
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.
Zitieren
#3
./simutrans -log 0 -debug schaltet das Schreiben auf die Festplatte nicht aus;
./simutrans -debug bringt das gewünschte Ergebnis.
Zitieren
#4
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.
Es gibt viel Huhn. Backen wir's an !
Zitieren
#5
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.
Zitieren
#6
Zitat:Original von prissi
Allerdings tritt dieser Fall eh meist nie ein, weil schon vorher diverse Windowsrelevante Funktionen ihren Geist aufgeben).
Die 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 ?
Es gibt viel Huhn. Backen wir's an !
Zitieren
#7
Gibs bei diesem Problem was neues?
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste