14-08-2006, Monday-23:00:23
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.
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.