[GastForen Programmierung/Entwicklung AppleScript error number -108

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

error number -108

Goar
Beiträge gesamt: 395

17. Jun 2011, 09:12
Beitrag # 1 von 7
Bewertung:
(4835 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

habe eben ein Script zur Bearbeitung verschiedener xml-Dateien fertiggestellt (AppleScript-Editor 2.3, AppleScript 2.1.2).
Dabei habe ich zwei xml-Dateien benutzt, eine mit 250.000 Zeichen, eine mit 1 Mio Zeichen.

Bei allen Entwicklungsschritten wurden alle Skriptabläufe ordnungsgemäß ausgeführt.
Nachdem der letzte Schritt fertig gescriptet war, wird zwar die kleinere Datei ordentlich abgearbeitet, die größere brachte aber nur die Meldung »error "Kein Speicher mehr verfügbar." number -108« Die kannte ich noch nicht. (In unserem Quark-Forum hat auch schon jemand damit Bekanntschaft gemacht, eine Lösung habe ich dort nicht gefunden.)
Einige Versuche brachten diese Fehlermeldung, alle weiteren führten zum Absturz des ScriptEditors.

Auf einer Apple-Support-Seite finde ich unter »Storage Allocator Errors«:
-108 memFullErr Ran out of memory [not enough room in heap zone]
Und was mach’ ich jetzt? Kann ich irgendwo auf die heap zone noch einen Hieb drauflegen, damit wieder enough room drin ist? Ups, diese Supportseite bezieht sich auf System 9 …

Testweise habe ich das Script »gedrittelt« und die große Datei nacheinander mit den drei Scriptteilen bearbeitet: so klappt es. Das ist natürlich nur eine Krücke und löst nicht das Problem.

Weiß jemand Rat?
X

error number -108

Goar
Beiträge gesamt: 395

9. Jul 2011, 10:50
Beitrag # 2 von 7
Beitrag ID: #475611
Bewertung:
(4704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,


inzwischen habe ich eine Ursache gefunden: eine Endlos-repeat-Schleife (die Bedingung für exit repeat wurde nie erfüllt).

Alle Events eines Scripts werden aufgezeichnet, ganz gleich, ob man sie im Script anzeigen lässt oder nicht. Und wenn die bearbeitete Textmenge groß genug ist, kann man in der Aktivitätsanzeige (Dienstprogramm) beobachten, wie der belegte Speicherplatz zunimmt. Kein Wunder also, dass die Endlosschleife den Speicher relativ schnell vollkriegt.

Wenn der Fehler wieder auftaucht, werde ich zunächst meine repeat-Schleifen kontrollieren.


als Antwort auf: [#473838]

error number -108

Goar
Beiträge gesamt: 395

15. Jul 2011, 18:59
Beitrag # 3 von 7
Beitrag ID: #476077
Bewertung:
(4639 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
es geht weiter:


Bei der Arbeit mit größeren Dateien, diesmal ca. 500.000 Zeichen sind ungeschickte repeat-Formulierungen aber nur die halbe Wahrheit.

In meinem aktuellen Skript sind viele Schritte auszuführen. Laut Aktivitätsanzeige belegt der ScriptEditor nach dem Öffnen des Scripts 17 MB Speicher, nach dem kompletten Scriptdurchlauf 1,6 GB. Der wird auch nicht freigegeben, wenn ich das Script schließe.

Zum Ende eines zweiten Komplettdurchlaufs stürzt der ScriptEditor aus unerklärlichen Gründen ohne Fehlernummer ab (schaltet sich selber aus).

Hat jemand eine Ahnung, wie ich nach Skriptablauf die Speicherbelegung von 1,6 GB wieder auf 17 MB zurückführen kann, ohne die Anwendung zu schließen, vielleicht sogar aus dem Script heraus?

Wenn das nicht möglich ist, fürchte ich, dass das ein Systemfehler ist; jedenfalls kann ich in dieser hartnäckigen Speicherblockierung nichts Sinnvolles entdecken.

Oder bin ich hier mit dieser Sache im falschen Forum? Wer weiß dafür ein geeignetes?

Zuversichtliche Grüße


als Antwort auf: [#475611]

error number -108

Hans Haesler
  
Beiträge gesamt: 5826

16. Jul 2011, 20:59
Beitrag # 4 von 7
Beitrag ID: #476119
Bewertung:
(4599 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

auch in einem geeigneteren Forum wird Dir niemand helfen können, wenn Du Deinen Code nicht zeigst.

Gruss, Hans


als Antwort auf: [#476077]

error number -108

Goar
Beiträge gesamt: 395

17. Jul 2011, 21:59
Beitrag # 5 von 7
Beitrag ID: #476144
Bewertung:
(4555 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

nur um einem Missverständnis vorzubeugen: Mit einem geeigneteren Forum meinte ich kein anderes AppleScript-Forum, sondern eher eins, das sich mit Systemfragen beschäftigt.

Deine Frage nach dem Code hat mich angeregt, eine Textreihe mit unterschiedlich umfangreichen Scripts durchzuführen.

Versuchsablauf (die MB-Angaben lese ich aus der Aktivitätsanzeige ab, sobald sie sich beruhigt hat):
Nach jedem Script-Duchlauf beende ich den AppleScript-Editor und starte ihn wieder, mit leerem Fenster 9,5 MB
ohne Fenster 7,9 MB
Script Heaptest_1.scpt geöffnet 11,8 MB

Allgemeiner Script-Aufbau:
Alle Heaptest-Scripts nehmen Text aus einem TextWrangler-Dokument und speichern ihn in eine Variable
Was das Script mit dem Text macht, gebe ich beim jeweiligen Versuch an.
Am Ende wird der bearbeitete Text aus der Variablen in das TextWrangler-Dokument zurückgespeichert.

Als Beispiel Heaptest_9.scpt (v9):

Code
tell application "TextWrangler" 
activate
set allText to contents of document 1
end tell

set allText to (change "[[:blank:]]+$" into "" in allText with regexp) -- WZ + tab vor return del
set allText to (change return into "∂" in allText) -- Umgehung return
set allText to (change "∂+" into return in allText with regexp) -- Mehrfach-Umgehung -> return
set allText to (change " +" into space in allText with regexp)
set allText to (change " " & tab into tab in allText with regexp)
set allText to (change " - " into " – " in allText)
set allText to (change "^-(.+)-$" into "–\\1–" in allText with regexp)
set allText to (change "^(Siehe)" into "@GS:\\1" in allText with regexp)
set allText to (change "^([A-Z -]{3})" into "@Rubrik:\\1" in allText with regexp)

set allText to (change {"<fs>montags<fe>", "<fs>dienstags<fe>", "<fs>mittwochs<fe>", "<fs>donnerstags<fe>", "<fs>freitags<fe>", "<fs>samstags<fe>", "<fs>sonntags<fe"} into {"<fs>Montag<fe>", "<fs>Dienstag<fe>", "<fs>Mittwoch<fe>", "<fs>Donnerstag<fe>", "<fs>Freitag<fe>", "<fs>Samstag<fe>", "<fs>Sonntag<fe>"} in allText)

tell application "TextWrangler"
activate
set contents of document 1 to allText
end tell


v1 führt eine change-Zeile mit regexp aus: 50,8 MB
v2 geöffnet 11,9 MB
v2 führt zwei change-Zeilen aus (eine mit, eine ohne regexp) 69,6 MB

Im Folgenden beende ich den AppleScript-Editor und öffne die Scripts direkt mit Doppelklick:
(MB-Angaben jeweils nach der Ausführung)
v3 mit 3 change-Zeilen (2 mit regexp) 84,4 MB
v4 mit 6 change-Zeilen (4 mit regexp) 120,8 MB
v5 mit 9 change-Zeilen (7 mit regexp) 152,4 MB
v6 mit 18 change-Zeilen (16 mit regexp) 202,4 MB
v7 mit Doppelklick geöffnet 12,5 MB
v7 mit 27 change-Zeilen (2 ohne regexp) 375,5 MB

v8 wie v5 + eine repeat-Schleife, mit einer find-text-Zeile (mit regexp) als exit-Bedingung
solange der gesuchte Text gefunden wird, wird eine change-Zeile mit regexp ausgeführt.
2 Durchgänge der repeat-Schleife-> 195,1 MB

v9 wie v5 + einer change-Zeile mit einer Such- und einer Ersetzenliste von jeweils 7 Elementen 165,1 MB
anschließend die Events anzeigen lassen 176,4 MB
wieder auf »Ergebnis« umgeschaltet 176,5 MB

Der Test bringt für mich nichts Neues: je mehr Textbearbeitungsaufgaben das Script zu erfüllen hat, desto mehr Speicherplatz wird belegt. Vielleicht muss man etwas anderes testen.
Die Frage bleibt, warum der Speicherplatz nach Ablauf des Scripts nicht wieder freigegeben wird. Kann die Ursache im Script liegen?
Oder sollte ich den Entwickler der Satimage.osax mal danach fragen?

Mit herzlichen Grüßen


als Antwort auf: [#476119]

error number -108

Hans Haesler
  
Beiträge gesamt: 5826

17. Jul 2011, 22:45
Beitrag # 6 von 7
Beitrag ID: #476146
Bewertung:
(4544 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

danke für die Beispiele. Doch um das Problem nachvollziehen zu können, sollte man auch über eine der Schwergewichts-Dateien verfügen.

Das einzige was mir auffällt: Beim "find text" könnten mit "with all occurrences" alle Vorkommen auf einmal gefunden werden. Dann wäre es nicht notwendig, den Befehl immer wieder auszuführen.

Aber weil die anderen "change text"-Befehle die Aufhäufung verursachen, käme es vermutlich auf dasselbe hinaus.

Deshalb finde ich Deine Idee gut: Den Emmanuel Levy kontaktieren. Vielleicht kennt er eine Lösung des Problems.

Gruss, Hans


als Antwort auf: [#476144]

error number -108

Goar
Beiträge gesamt: 395

3. Sep 2011, 17:42
Beitrag # 7 von 7
Beitrag ID: #479472
Bewertung:
(4089 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

vor einigen Tagen bekam ich eine Antwort:

Zitat On my computer, find text does not retain memory (within Smile).
There is a new build of Satimage.osax corresponding to my test at http://www.satimage.fr/...ompanion_osaxen.html.
(build 366)
However, I fear that the problem may be in AppleScript Editor.
With the same script, the heap of AppleScript Editor increases by about 100 Kbytes while Smile's heap is stable.

François Delyon.

Daraufhin entdeckte ich – spät, aber immerhin –, dass meine bisherige Skripterweiterung build 360 war und nur für OS10.5 gedacht. Inzwischen habe ich aber 10.6. Gegen Ende des Jahres kommt das besagte Skript wieder zum Einsatz, ich werde die Aktivitäts-Anzeige im Auge behalten und berichten.


als Antwort auf: [#476146]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!