[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt CS3 / Win: Error 27 -> Stack overrun

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

CS3 / Win: Error 27 -> Stack overrun

hstoessel
Beiträge gesamt: 27

26. Mär 2010, 11:29
Beitrag # 1 von 3
Bewertung:
(2256 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich habe eine etwas spezielle Konstellation mit InDesign Javascripts, ich beschreibs mal kurz.

Ich habe ein Plugin, das eine Aktion zum Aktualisieren von Inhalten in InDesign beinhaltet. Diese Aktion des Plugins wird extern via ein Javascript angestossen werden. Dieses Javascript läuft als Idle, d.h. es aktiviert periodisch diese Aktion und aktualisiert den Inhalt in InDesign. Dies funktioniert auch problemlos.
Nun habe ich die Situation, dass die interne Aktion zum Aktualiseren wiederum ein Javascript ausführt (via RunScriptFile im SDK), ein anderes als das oben erwähnte. D.h. es laufen eigentlich zwei Javascripte (zwei Jacvascriptfiles) gleichzeitig, das Idle-Script und ein anderes, zusätzliches Script. Dies führt nun zu Problemen. Die Aktion im Plguin wird ausgelöst, aber sobald diese das zweite Script ausführt erhalte ich den Error 27, stack overrun.

Ich hab verischt, das mit #targetengine zu lösen, d.h. ich habe zwei unterschiedliche target engines definiert. Geht nicht. Immer dieselbe Fehlermeldung.

So wie ich das verstehe sollte ich 2 Javascripts gleichzeitig in eigenen Umgebungenen (engine, stack, ...?) laufen lassen.

- Kann ich das irgendwie lösen?
- Wenn ja wie?

Danke für jeden Hinweis.
Hans
X

CS3 / Win: Error 27 -> Stack overrun

Dirk Becker
Beiträge gesamt: 181

27. Mär 2010, 09:24
Beitrag # 2 von 3
Beitrag ID: #437864
Bewertung:
(2226 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe gerade die SDKs durchgesehen, RunScriptFile gibt es nicht. Gemeint ist wohl IScriptRunner::RunFile ...

Unter CS3 liegt das Interface noch direkt auf dem kJavaScriptMgrBoss, also dem für alle Engines zuständigen globalen Objekt. Wenn auf der Ebene bereits ein Script ausgeführt wird, kann man halt kein weiteres nachschieben - Stichwort "nicht reentrant".

Bei CS4 ist IScriptRunner auf das separate Objekt der Engine gewandert. Einfachster Ansatz wäre damit wohl Umstieg auf CS4, oder vielleicht gleich auf CS5.

Wenn das so nicht möglich ist (ich habe gerade erst selber ein Plugin für CS2 neu entwickelt) muss man die Scripte umstrukturieren. RunFile kommt immer mit dem zusätzlichen Aufwand, dass das Script neu übersetzt werden muss. Statt dessen würde ich die (unveränderlichen) Scripts nur einmalig als Startup Script installieren, und mit RunScript nur den direkten Aufruf aus dem Plugin auslösen.

Falls RunScript noch immer nicht verschachtelbar ist (also das gleiche Problem), dann geht auf jeden Fall InvokeFunction - man müsste den "callback" des zweiten Plugins nur vorher als solche Funktion registrieren. Die EventListener arbeiten nach diesem Prinzip.

Wenn das zweite Script dynamisch generiert ist, kann man sich dabei mit einer Minimalfunktion als Callback behelfen und das eigentliche Script aus der JavaScript Umgebung heraus mit $.evalfile() ausführen.

Die dritte Alternative wäre die verzögerte Ausführung des zweiten Scripts - einfach in einer Warteschlange zurückstellen bis IScriptRunner::IsScriptRunning wieder false liefert, und/oder gleich in einem weiteren IdleTask abarbeiten.


als Antwort auf: [#437784]

CS3 / Win: Error 27 -> Stack overrun

Dirk Becker
Beiträge gesamt: 181

28. Mär 2010, 18:51
Beitrag # 3 von 3
Beitrag ID: #437896
Bewertung:
(2200 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nachtrag / entsprechend der Diskussion im englischen Scripting Forum:

Ich habe nicht selber überprüft, ob RunFile wirklich so ein Problem mit Reentranz hat. Ich weiss nur, dass im ScriptRunner Buch geführt wird, wenn ein Script läuft. Ob das jetzt wirklich zur Fehlermeldung 27 führt? Vielleicht handelt es sich auch um eine echte Rekursion, etwa dass das zweite Script sich immer wieder (auch indirekt durch das Plugin) selbst aufruft.

Wenn das soweit überprüft ist, schlage ich vor die Diskussion ins SDK Forum zu verlagern, es hat ja mit Scripting nur indirekt zu tun.

Dirk


als Antwort auf: [#437864]

Aktuell

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/