IPS (1.0) hängt bei Start

Hallo,
ich habe einen schon lange bestehenden, aber schwer zu fassenden Fehler endlich ein wenig eingrenzen können.

Das Fehlerbild:
Beim Start von IPS hängt es sich auf (keine Reaktion mehr bzgl. Scriptverarbeitung, Threads bleiben in der Warteschlange stehen, meist keine Fehlermeldung) oder IPS kommt in einen undefinierten Zustand (ständig durchlaufende, sich zyklisch wiederholende Fehlermeldungen, auch keine Scriptverarbeitung mehr)

Dieser Fehler tritt ca. ein- bis viermal im Monat auf und immer nur bei Start von IPS, nie im laufenden Betrieb. Auffallend auch: Je komplexer die Anwendung wird, je häufiger tritt der Fehler offenbar auf.

Besonders ärgerlich:
(1) Das tägliche Backup durch Pulse (aktiviert per Win-Scheduler, bei mir tgl. um um 5:51 früh) wird dadurch „unattraktiv“ da ja „fehlerverursachend“ (auch wenn Pule da gar nichts für kann, passiert bei Neustart NACH Pulse-Einsatz) - eine gefährliche Sichtweise, siehe Folgendes:

(2) Die hängenden Threads verhindern ein sauberes Runterfahren der ansonsten noch intakten IPS - IPS muß im Task-Manager gekillt werden, aber durch den Versuch des „normalen“ Herunterfahrens ist die Settings.xml bereits teilweise neu geschrieben worden. Durch die endlos hängenden Threads, auf die gewartet wird, kommt der Schreibprozess aber nie zu einem sauberen Ende --> zerschossene settings.xml. Wehe, man hat da kein zeitnahes Backup, z.B. tgl. per Pulse generiert!

Fehlervermutung:
Bei den durchlaufenden Fehlermeldungen sieht man leider nur noch Folgefehler. Heute jedoch (glaube ich) habe ich endlich eine Meldung zum Primärfehler „fangen“ können: Der PHP-Interpreter stürzt bei Versuchen zur Scriptabarbeitung im Startmoment ab, während IPS-Komponenten noch nicht bereit sind zu deren Abarbeitung.

Meiner Meinung nach passiert das deshalb, weil in der Startsequenz zu früh die Abarbeitung von Variablenevents und PHP-Scripts freigegeben wird, bzw. keine oder eine unwirksame Verriegelung in der Startsequenz erfolgt.

Die Liste der Threads zeigt, dass dort variablengetriggerte Scripts „hängen“. Auffallend: An erster Stelle steht (hier sogar doppelt) ein Event zum Annehmen einer Register-Variable, die bei mir den gesamten Funkverkehr mitzeichnet --> sehr große Datenmengen. Und das gleich mehrfach.

Im „Verbose“-Log hängt IPS aber noch ein paar Schritte vor „IPS ready“. Der manuelle Neustart von IPS nach Kill per Task-Scheduler zeigt dann in diesem Zusammenhang auch sehr Interessantes:

Meine Jalousien werden abhängig von Sonnenaufgang und Tageszeit geöffnet. Weil dabei die Queue regelmäßig volläuft, passiert das je Etage um 5 Minuten versetzt. Passiert das aber „nachträglich“, gibt es keine 5min-Verzögerung.

Bei manuellem Neustart von IPS unter Beobachtung des Verbose-Log-Screens fingen die Jalousien exakt bei der gleichen Log-Ausgabe bereits an zu arbeiten, die als letzte um 5:53 vor dem Fehler noch angezeigt wurde. Das „IPS ready“ erschien erst gut 20sec später! Und erst dann kamen auch erstmals „Queue is running full“-Meldungen, obwohl die Funkbefehle längst raus waren. Auch die Logmeldung bzgl. der Abarbeitung vom Script „IPS-Startup“ kam erst viel später! Es wird also abgearbeitet NACHDEM bereits variablengetriggerte Scriptbearbeitung stattfand.

Offenbar führt das vorzeitige Auslösen von Scripts bei großen Inhalten (Register-Variable) dann zu derart heftigen Problemen, dass der PHP-Interpreter wegfliegt.

Im IPS-Shoutdown-Script wird die IPS-Variable, die den Inhalt der Reg-Variable hält, übrigens geleert, damit deren Binär-Inhalt keine Probleme beim Start und Interpretation der settings.xml auslösen. Das ist also als Ursache auszuschließen.

Wenn ich mit meiner Vermutung richtig liege, kann die Lösung nur in der spezifischen Freigabe der Variablen-Events- und Scriptabarbeitung zu einem definierten Zeitpunkt der Startsequenz liegen, der nach endgültigem Hochfahren des Systems (Variablenevents: und Abarbeitung der IPS-Startup) liegt.

Inwieweit das nun noch für V2.0 relevant ist…? Zumindest dürfte dort eine ähnliche Verriegelung der Freigabe von Events und Scriptabarbeitung innerhalb der Startsequenz ebenso wichtig sein.

Gruß Gerd

ips_error_start2.GIF

Hallo Gerd

…ein Event zum Annehmen einer Register-Variable, die bei mir den gesamten Funkverkehr mitzeichnet --> sehr große Datenmengen…

Merkwürdige Phänomene hatte ich auch mal, als ich eine RegVar per APPEND "voll"geschrieben hatte.

Seit ich dann die Variable auf OVERWRITE gestellt und die Daten OnUpdate in eine Text-Datei geschrieben habe, hatte ich keine Probleme mehr.

Gruss, Andreas

hmmm… bei mir steht die auch auf APPEND. Das läßt als eigentliche Fehlerursache vermuten, dass da irgendwas mit überlaufenden Datenmengen in Variablen im Startmoment noch nicht klarkommt. Denn später gehts ja problemlos. Und: Es waren ja mehrere RegVar-Events nacheinander. Vielleicht macht die Summe erst den Überlauf aus, also erst nach mehreren Appends ist Grenze überschritten. Kann in dem Moment noch nicht auf Variablenverwaltung zugegriffen werden oder so (weil noch startend), dann knallts…