IF-Forum

» IF-Forum - Autorencafé - Schreiben! - I7 (Mac) + GerX = out of memory?
AntwortenNeues ThemaNeue Umfrage

I7 (Mac) + GerX = out of memory?

Geschrieben um 13:07 am 20.11.2010 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Erstmal vorneweg zu den Begleitumständen: Ich benutze Inform 7 zu Hause auf einem Windows-Rechner, nehme mein aktuelles Projekt bei längeren Reisen aber auf dem MacBook mit und bearbeite es dann mit Inform 7 auf Mac OS X. Bisher klappte das einwandfrei.

Aktuell kompiliert das Projekt auf dem Mac aber nur als z-Code. Sobald ich es auf Glulx umstelle, erhalte ich folgende Fehlermeldungen:

Inform 7:

Inform 6 ran out of memory: The memory setting MAX_PROP_TABLE_SIZE (which is 30000 at present) has been exceeded.

Der Inform-6-Compiler aber:

Fatal error: The memory setting MAX_LINESPACE (which is 10000 at present) has been exceeded.

Verwirrend, weil das im Grunde zwei unterschiedliche Meldungen sind. Der Witz ist aber, dass Inform 7 auf dem Mac das im Zusammenhang mit GerX und Glulx aktuell bei mir immer produziert, selbst bei folgendem Minimalprojekt (das ich auf dem Mac angefangen und nie unter Windows bearbeitet habe):



Include German by Team GerX.

Garten is a room.```

Um es noch etwas komplizierter zu machen: Unter Windows tritt der Fehler weder beim Minimalprojekt noch bei meinem eigentlichen Projekt auf. Unter Mac OS tritt er nur im Zusammenhang mit GerX auf, größere englische Spiele wie Sand-dancer kompilieren einwandfrei.

Nun lässt sich der "Fehler" zwar umgehen, indem man MAX_LINESPACE auf irgendwas deutlich höheres stellt. Aber ist es nicht trotzdem eigentümlich, dass man hier nach drei Zeilen Quellcode an eine Obergrenze stößt, die man in englischsprachigen Projekten oder in Inform 7 unter Windows nicht erreicht?

Im Inform-Bugtracker hab ich nichts dazu passendes finden können. Eine Neuinstallation von Inform 7 (samt Löschen des kompletten Extensions-Ordners) und GerX hat nicht geholfen. Inform 7 ist auf beiden Plattformen in der Version 6F95, GerX in der Version 3/101114.

Da ich von beiden keine früheren Versionen vorrätig habe, konnte ich leider nicht ausprobieren, ab welchen Versionen der Fehler auftritt.

Hat sonst vielleicht jemand der Anwesenden noch einen Mac? Wäre interessant zu sehen, ob das nur bei mir auftritt oder ein generelles Problem ist.
Geschrieben um 17:35 am 20.11.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

ChrisW:

Unter Windows tritt der Fehler weder beim Minimalprojekt noch bei meinem eigentlichen Projekt auf. Unter Mac OS tritt er nur im Zusammenhang mit GerX auf, größere englische Spiele wie Sand-dancer kompilieren einwandfrei.

Ich habe die Fehlermeldungen auf einem iMac reproduzieren können. Warum sich das Mac-Inform anders verhält als das Windows-Inform, ist mir nicht klar. Es ist jedoch denkbar dass für 6F95 andere Standardwerte für die Memory-Settings angewendet wurden als in den vorigen Versionen. Die Standardwerte wurden für Glulx vor nicht allzu langer Zeit mal auf zeitgemäße Größe gebracht; möglich, dass der MAX_LINESPACE von 10000 der alte Wert ist und eigentlich schon ein höherer Wert der Standard ist. (Ich weiß gerade nicht, wie man das z.B. für Windows herausfinden kann.)

Das Problem ist eindeutig der MAX_LINESPACE. Die Fehlermeldung, die sich auf MAX_PROP_TABLE_SIZE bezieht, scheint irrelevant zu sein (und ist wohl ein Inform-Fehlermeldungs-Bug).

Ich gehe davon aus, dass ein Minimalspiel + GerX in Hinblick auf MAX_LINESPACE etwas mehr Ressourcen verschleudern als Sand-dancer pur. (Edit: Ein Minimalspiel mit GerX ist zwar wesentlich kleiner als Sand-dancer, aber MAX_LINESPACE bezieht sich auf die Anzahl der "Grammar-Lines", das sind die Satzmuster, die zum Parsen von Kommandos dienen. Davon gibt es in der deutschen Erweiterung deutlich mehr als im englischen Original, etwa dreimal so viele.) Der MAX_LINESSPACE von 10000 wird jedenfalls leicht überschritten. Schon eine kleine Anhebung auf

blue

löst das Problem für ein Minimalspiel + GerX. Für größere Spiele müsste wohl ein entsprechend höherer Wert gewählt werden.

Geschrieben um 20:10 am 20.11.2010 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Wenn man Inform 7 anweist, die Build-Dateien beim Beenden nicht gleich aufzuräumen, kann man in die auto.inf schauen. Da legen die Windows- und die Mac-Version gleichermaßen fest:



!% $MAX_CLASSES=200

!% $MAX_VERBS=255

!% $MAX_LABELS=10000

!% $MAX_ZCODE_SIZE=100000

!% $MAX_STATIC_DATA=180000

!% $MAX_PROP_TABLE_SIZE=200000

!% $MAX_INDIV_PROP_TABLE_SIZE=20000

!% $MAX_STACK_SIZE=65536

!% $MAX_SYMBOLS=20000

!% $MAX_EXPRESSION_NODES=256```

Keine Rede von MAX_LINESPACE. Also scheint Inform 7 das nicht direkt festzulegen, sondern den jeweiligen Inform-6-Compiler entscheiden zu lassen. Und die MAX_PROP_TABLE_SIZE ist weit größer, als Inform in seiner eigenen Fehlermeldung vorgaukelt.

Aber gut. Wenn man das Problem durch eigenes Setzen von MAX_LINESPACE aus der Welt schaffen kann, dann hat sich das für mich jetzt erledigt. Ich hatte nur einen möglichen Bug auf "unserer" Seite des Codes befürchtet, deshalb meine Nachfrage.

Wie immer vielen Dank für die schnelle Hilfe!
Geschrieben um 12:14 am 21.11.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

ChrisW:

Keine Rede von MAX_LINESPACE. Also scheint Inform 7 das nicht direkt festzulegen, sondern den jeweiligen Inform-6-Compiler entscheiden zu lassen.

So sieht's wohl aus. Ich habe mal im aktuellen I6-Compiler-Quellcode gestöbert: Es gibt drei verschiedene Standard-Speichereinstellungen, die den unterschiedlichen Plattformen zugewiesen werden: LARGE, SMALL und HUGE. Für Windows und Linux ist HUGE der Standard, wo MAX_LINESPACE auf 16000 gesetzt wird, für Mac OS X wird LARGE hergenommen und MAX_LINESPACE auf 10000 gesetzt. Das wurde vielleicht tatsächlich einfach übersehen.

Edit: Es ist unproblematisch, die Standardeinstellung für MAX_LINESPACE auf 16000 direkt in GerX festzusetzen. Der Autor kann trotzdem noch den Wert nachträglich ändern. Deshalb denke ich, dass wir einen Wert von 16000 ab der nächsten Version als Standard setzen werden, damit Mac-Nutzer keine Probleme bekommen. Für alle anderen wird sich dadurch nichts ändern.

Geschrieben um 16:24 am 28.11.2010 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

Das Setzen des höheren Wertes direkt in GerX hat auf jeden Fall geholfen. :)

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz