PDA

View Full Version : Schwerwiegendes TexMemory-Problem (fatal ERROR)



sharpType
07-09-2009, 20:37
Hallo,

sicherlich bekommt der eine oder andere mit das ich gerade ziemlich am basteln bin mit meiner Arbeit. Jetzt hab ich warscheinlich, bin mir aber nicht sicher, ein ziemlich großes Problem. :(

Ich kompiliere mein Dokument mit folgenden Befehlen einer Batch-Datei:



pdflatex diplomarbeit_dsu
makeglossaries diplomarbeit_dsu
pdflatex diplomarbeit_dsu
makeglossaries diplomarbeit_dsu
bibtex diplomarbeit_dsu
bibtex On
pdflatex diplomarbeit_dsu
pdflatex diplomarbeit_dsu


Jetzt habe ich mal alles zusammenkopiert und wollte die gesamte! Arbeit kompilieren. Jetzt kriege ich folgenden FATAL ERROR:




! TeX capacity exceeded, sorry [main memory size=1500000].
\Hy@FixNotFirstPage ... {\copy \AtBeginShipoutBox
}
l.166 oSet(
topBdr, "LineStyle", new object[1] { ExcelConstants.D...
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.


Here is how much of TeX's memory you used:
35428 strings out of 95290
596678 string characters out of 1182994
1500000 words of memory out of 1500000
34702 multiletter control sequences out of 110000
131317 words of font info for 105 fonts, out of 3000000 for 5000
51 hyphenation exceptions out of 8191
57i,16n,100p,3597b,9283s stack positions out of 5000i,500n,10000p,200000b,50000s
! ==> Fatal error occurred, no output PDF file produced!


Ich befürchte jetzt habe ich wirklich ein Problem. Jetzt habe ich versucht, da ich davon mal gelesen habe, dass das durch alles mögliche zustande kommen kann, den Fehler einzugrenzen und meine die Stelle gefunden zu haben bzw. den Abschnitt. Kommentiere ich den aus, dann läuft die Batch durch. Kommentiere ich alles andere mal aus und nur den Problemabschnitt ein und kompiliere dann funktioniert es aber AUCH!:confused:

Lediglich funktioniert es NIE, wenn ich alles kompiliere mit dem (zuerst vermuteten) Problemabschnitt, der jedoch aber auch alleine kompiliertbar ist.:(
Das war natürlich das Ausschlussverfahren, aber das hat nicht hingehauen.

Und aussteigen tut er beim letzten! aufruf von pdftex! allerdings muss die batch datei mit den aufrufen genau so sein und auch in der anzahl sonst fehlt immer irgendwas an referenzen. Ich habe nicht großartig was an meinem Dokument geändert, gestern hat es noch funktioniert.

Kann es denn sein, das der Problemabschnitt alleine kompilierbar ist, da er ja sowieso beim letzten aufruf von pdftex erst aussteigt? Ich kann das Dokument im Gesamten ja schon kompilieren, jedoch reicht ein aufruf von pdftex ja nicht.

Ich muss den Fehler irgendwie behoben kriegen, sonst bin ich geliefert :(

bobmalaria
07-09-2009, 20:41
hi,

1) irgendwo rechnet eines deiner konstrukte im kreis

2) bibtex8 statt bibtex verwenden. eventuell noch bibtex8 mit option --wolfgang aufrufen.

gruss

u_fischer
07-09-2009, 20:43
Keine Panik, main memory gehört zu den Größen, die auch in korrekten Dokumenten mal überlaufen können.

Erzähl mal welches TeX-System du nutzt, dann wird dir jemand verraten, wie man dort main memory raufsetzt.

sharpType
07-09-2009, 20:43
was passiert dann?

also so?

bibtex8 --wolfgang

in der batch statt nur bibtex docname?

sharpType
07-09-2009, 20:45
Panik ist gut, ich sitz hier in der Firma und dachte ich kompilier mal eben schnell alles und schau mir mal das gesamtergebis an und dann krieg ich so ne Meldung und man siehe (auf die Uhr guckt) oje oje..

Ich nutze miktex 2.7 und technixcenter 1.0 stable

bobmalaria
07-09-2009, 20:46
hi,

schau hier im punkt 1.1 der readmehttp://www.ctan.org/tex-archive/biblio/bibtex/8-bit/.

aufruf müsste so funktionieren

bibtex8 --wolfgang dateiname

sharpType
07-09-2009, 20:50
Ich kompiliere gerade x mal und studiere das Fehlerverhalten. Ich versuch das gleich mal mit wolfgang. Kann es denn sein, das eine Anweisung falsch ist? Zb Klammer vergessen oder so? Dann würde er doch eigentlich meckern....

u_fischer
07-09-2009, 20:52
Schau in die Doku des animate-Paketes unter "Bugs". Dort ist beschrieben wie man auf Dauer main_memory raufsetzt.

Kurzfristig müsste es auch mit
pdflatex --extra-mem-top=2000000 <file>
gehen.

bobmalaria
07-09-2009, 20:52
hi,

eigentlich ist es schon richtig. siehe den link den ich dir geschickt habe. hier noch wie man miktex aufbohren kann

http://docs.miktex.org/manual/runtimeparams.html

sharpType
07-09-2009, 20:54
Ich kann nicht so ganz folgen. Wenn mein Dokument richtig ist und es durch mein Schreiben noch größer wird, krieg ich dann noch mehr Probleme oder sowas wird zum Alltag? (angenommen mein dokument ist korrekt)

Sollte ich noch weiter auskommentieren und eine Fehlerzeile suchen?

u_fischer
07-09-2009, 21:04
In main_memory sind die Definitionen gespeichert. Wenn du viele Pakete benutzt, viele \labels setzt, oder z.B. in xskak viele Schachpartien speicherst, kann es überlaufen. TeX ist halt alt und erweitert seinen Speicher nicht dynamisch (was auch sein Gutes hat, weil es bei Fehlern irgendwann stoppt).

Also schau erstmal, ob das Hochsetzen von main_memory das Problem löst.

sharpType
07-09-2009, 21:07
ok ich gebe gleich rückmeldung. bisher sieht es eher so aus das es an irgendeinem teilabschnitt liegt....

sharpType
07-09-2009, 21:47
Verflucht es klappt! :eek: :eek:

Ich bin so glücklich. Es klappt mit:



Mode con cols=100 lines=40
TITLE ### Erzeugung des LateX-Dokumentes ###
@echo off
CLS
COLOR 17
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 diplomarbeit

CLS
COLOR 20
ECHO MAKEGLOSSARIES-RUN
ECHO =======================================
makeglossaries diplomarbeit

CLS
COLOR 17
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 diplomarbeit

CLS
COLOR 20
ECHO MAKEGLOSSARIES-RUN
ECHO =======================================
makeglossaries diplomarbeit

CLS
COLOR 47
ECHO BIBTEX-RUN (MAINDOC)
ECHO =======================================
bibtex diplomarbeit

CLS
COLOR 47
ECHO BIBTEX-RUN (ON)
ECHO =======================================
bibtex On

CLS
COLOR 17
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 diplomarbeit

CLS
COLOR 4
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 diplomarbeit



Ganz ehrlich? Ich danke euch so sehr, meine nerven sind am Ende, aber es geht. Was soll man nur ohne euch machen? Wenn meine Arbeit fertig ist, geb ich glaub ich erstmal einen aus.

Nichts desto trotz eine kurze Erläuterung und ich muss einiges fragen, damit ich das viell. auch mal weitergeben kann.

Ich habe ja vorher mal herumgesucht (auch wenn mir Panik auf der Stirn geschrieben stand) und geschaut, wer noch so das Problem hat. Dann habe ich 2 stunden auskommentiert, bis ich irgendwann mal das auskommentierte wieder (bis zu dem zeitpunkt ohne fehler) einkommentiert habe und gemerkt habe das das erneut nicht geht, obwohl ich den abschnitt eigentlich als Fehlerlos definiert habe (gerade durch das auskommentieren). Und außerdem lief der vermutete Problemsektor ja auch ohne den Rest des Dokumentes. Das war also eine gute Diagnose -> Speicherproblem.

Jetzt meine fragen, die mir wichtg sind:

kurz vorher: Auf der Seite steht ja "Extra space for large TeX data structures: boxes, glue, breakpoints, et al." Wenn ich das richtig interpretiere (mein englisch:), dann trifft das genau auf mich zu. Mein Dokument ist mega "hübsch", aber voll mit boxen und so ein kram.

1. Was ist wenn ich jetzt weiter schreibe, platzt irgendwann wieder der Speicher? Muss ich deswegen zu sehen das ich zum Ende komme? Angenommen ich würde das Dokument nochmal verdoppeln, was dann? (nur angenommen)

2. Wie ist meine Batch-Datei für den kompletten Durchlauf für ein fertiges Dokument zu beurteilen? Fehlt viel. noch ein Durchlauf oder müsste das reichen? (Fehlende Referenzen habe ich nach dem Batch-Durchlauf keine)

3. Wenn ich meine DA abgebe, reicht es wenn ich die Batch (s. oben) EINMAL durchlaufen lasse oder wäre es besser zur Sicherheit nochmal einen PDFTex durchlauf zu starten? Diese Frage stelle ich, weil ich ja irgendwie nur im TechnixCenter sehe, ob ich 0 Fehler, 0 Warnungen habe, in der log Datei sehe ich nur den Fatal error und richtige Fehler eben. Wie kann ich aus der log datei erkennen, wieviele Warnunge etc. ich habe. Ich lasse nach der Batch datei deswegen nochmal ein Durchlauf mit Technixcenter starten, damit ich sehen ob ich wirklich 0 Fehler 0 Warnungen habe.

4. Reicht die Änderung der MemoryCapacity per Parameterübergabe wie in der Batch-Datei oben oder sollte ich irgendwas in der besagten ini ändern? Kommt das aufs gleiche raus? Weil Bobmalaria sagte "kurzfristig" würde reichen

5. Was ist mit dem Herrn Wolfgang :) also mit der Option. Die habe ich nicht benötigt. Wäre es sicherer, wenn ich zusätzlich auch bibtex mit dem speicherparameter bzw bibtex8 statt bibtex benutzte, auch wenn es ohne funktioniert?

6. Ihr seit die Besten !

Viele Grüße und ich muss erstmal schlafen, das war zu viel eben gerade für meine Nerven ;)


Ein großes Dankeschön nochmal!

Gruß
D.

u_fischer
08-09-2009, 10:01
"Extra space for large TeX data structures: boxes, glue," ist --extra-mem-bot, --extra-mem-top ist für "chars, tokens, et al.". Jede neue Definition (z.B. jeder label ) nutzt diesen Speicher. Wenn er wieder vollläuft, muss du ihn halt wieder vergrößern.

Abgesehen davon: Es kann immer alles mögliche schiefgehen (ich hatte letzthin einen Festplattencrash). Also wenn sich deine Arbeit dem Ende nähert: Mache Sicherheitskopien. Lass die Finger vom Updateknopf. Erstelle in regelmäßigen Abständen eine Komplettversion. Mache Probedrucke diverser Seiten (besonders solche mit Bildern). Sobald du eine Version hast, von der du meinst, dass du sie im Notfall abgeben könntest, drucke sie aus und lege sie an einen sicheren Ort. Gestalte dir deinen Zeitplan so, dass du Luft für unerwartete Probleme hast. Dann musst du dir jetzt keine Gedanken über bibtex8 u.ä. machen.