Semaphore wird nicht mehr frei

Moin !

in IPS 4.1 beobachte ich, dass ein zyklisches Skript den Semaphore nun seit über 10 Tagen nicht mehr freigegeben hat. Benutzt habe ich am Anfang:

if(!IPS_SemaphoreEnter("PC_Met_Radar", 10 /* sehr kurz warten */)) {
	echo "läuft ja schon";
 return; //Läuft bereits

und am Ende als letzte Zeile:

IPS_SemaphoreLeave("PC_Met_Radar");

das führt nur noch zur Ausgabe von „läuft ja schon“

führe ich den leave-Befehl aus, erhalte ich sinngemäß eine Fehlermeldung, dass die Semaphore nicht vorhanden ist.

Ich habe diese Semaphore von mehreren Skripten benutzt, die sich nicht in die Quere kommen sollen. In der Liste der ausgeführten Skripte sehe ich nicht, dass aber genau dieses Skript seit dem 4.5. „hängt“

Jemand eine Idee, wie ich damit umgehen kann (außer IPS neu zu starten) ?

Ich befürchte, dass dies ein Fehler sein muss. Ich würde nur gerne wissen, wodurch dieser provoziert wird? Denn im Normalfall wird die Semaphore immer nach dem Skriptende wieder freigegeben!

Hast du mal in der Spezialansicht -> PHP Informationen geschaut, ob evtl ein Thread rot ist und hängt? Das könnte dann eine Erklärung sind.

Lösen wirst du es wohl nur über einen Neustart können.

paresy

Hatte ich letztes auch. Ein Modul nutzt die Semaphore und beim ModulUpdate hat es sich dann alle Threads belegt.
Oder es ist abgestürzt. Ohne ersichtlichen Grund im Log.
Michael

Jo, Modul updates hatte ich auch gemacht.

Vielleicht hilft noch der HInweis, dass dieses hängende Script ein recht lange arbeitendes

IPS_ExecuteEx("…",false,true,1);

enthält ? Außerdem fummelt das Script am Medienordner. Der Allgemeinheit kann ich es nicht zeigen, da es Passwörter eines kostenpflichtigen Wetterdienstes enthält.