Forum moved to if-forum.org
Autor Nachricht
<  I7 (Mac) + GerX = out of memory?
ChrisW
BeitragVerfasst am: Sa, 20 Nov 2010 - 12:07  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

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 hat folgendes geschrieben:
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 hat folgendes geschrieben:
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):

Code:
"Sobald es schneit" by Christoph Winkler

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.
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Sa, 20 Nov 2010 - 16:35  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

ChrisW hat folgendes geschrieben:
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

Use MAX_LINESPACE of 10500.

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.


Zuletzt bearbeitet von ChristianB am Sa, 20 Nov 2010 - 23:32, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChrisW
BeitragVerfasst am: Sa, 20 Nov 2010 - 19:10  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

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:

Code:
!% $MAX_ARRAYS=1500
!% $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!
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: So, 21 Nov 2010 - 11:14  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

ChrisW hat folgendes geschrieben:
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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mario Donick
BeitragVerfasst am: So, 28 Nov 2010 - 15:24  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 14.02.2009
Beiträge: 49
Wohnort: Rostock

Das Setzen des höheren Wertes direkt in GerX hat auf jeden Fall geholfen. :)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  Inform & Glulx

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05