[GastForen Programmierung/Entwicklung AppleScript error number -108

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

error number -108

Goar
Beiträge gesamt: 389

17. Jun 2011, 09:12
Beitrag # 1 von 7
Bewertung:
(4775 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: 389

9. Jul 2011, 10:50
Beitrag # 2 von 7
Beitrag ID: #475611
Bewertung:
(4644 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: 389

15. Jul 2011, 18:59
Beitrag # 3 von 7
Beitrag ID: #476077
Bewertung:
(4579 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: 5818

16. Jul 2011, 20:59
Beitrag # 4 von 7
Beitrag ID: #476119
Bewertung:
(4539 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: 389

17. Jul 2011, 21:59
Beitrag # 5 von 7
Beitrag ID: #476144
Bewertung:
(4495 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: 5818

17. Jul 2011, 22:45
Beitrag # 6 von 7
Beitrag ID: #476146
Bewertung:
(4484 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: 389

3. Sep 2011, 17:42
Beitrag # 7 von 7
Beitrag ID: #479472
Bewertung:
(4029 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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/