Thread Liste auslesbar?

Hallo,

bei mir ist gestern der Fall aufgetreten, dass einige Threads sich nicht beendet haben. Dadurch wurden auch einige Semaphoren nicht mehr freigegeben, so dass das ein oder andere Programm nicht mehr lief …:frowning:

Nun möchte ich gerne versuchen, die Threads zu überwachen, um im Fehlerfall Gegenmaßnahmen (Meldung, Reboot etc.) durchführen zu können.

Daher meine Frage: lässt sich die Threadliste irgendwie auslesen?

Viele Grüße

Burkhard

Moin,

so kannst du die Thread Liste auslesen:

IPS_GetScriptThreadList()

Das gibt dir ein Array mit den ThreadIDs zurück.

Gruß,
gucky

Besten Dank!

So funktioniert es:

Define ('MAX_RUNTIME', 300); // maximale Laufzeit in s

//sleep (MAX_RUNTIME + 1); //zu Testzwecken

//print_r (IPS_GetScriptThreads(IPS_GetScriptThreadList()));
foreach (IPS_GetScriptThreads(IPS_GetScriptThreadList()) as $Thread){
	$ScriptID = $Thread['ScriptID'];
	if ($ScriptID > 0){
		if ((time()-$Thread['StartTime']) > MAX_RUNTIME) {
			.....
		}
	}
}

Würde es nicht Sinn machen, die Funktionen IPS_GetScriptThreadList und IPS_GetScriptThreads zu dokumentieren? Mir hätte es geholfen:loveips:

Viele Grüße

Burkhard

Das ist eine schöne Lösung, gleich eingebaut. Hängende Threads sehe ich wieder öfters auch bei mir und ohne SNMP, meist CURL-Json Abfragen. Könntest das Script in die Sammlung von dem User mit dem Papagei als Userbild aufnehmen… :slight_smile:

Hallo,

seit einigen Monaten kämpfe ich mit hängenden Threads. Inzwischen habe ich den Verursacher so weit eingegrenzt, dass ich behaupten kann, dass es mit den WAC_ Funktionen zusammenhängen muss.

Insbesondere das Kommando WAC_Reset kommt manchmal nicht zurück und dann hängt der Thread. Anschließend bleiben auch alle anderen Threads hängen, die ein WAC Kommando aufrufen.

Handelt es sich hier um ein IPS oder Windows Problem? Gibt es eventuell eine Umgehungsmöglichkeit (außer Neustart:D)?

Viele Grüße

Burkhard

Sofern du WAC_Reset nutzt, nutzt du eh einen Workaround für Probleme mit deinem Soundkartentreiber… Somit gehe ich eher davon aus, dass die Treiber das eigentliche Problem sind.

paresy

Diese Seite ist eine gute Fundgrube in Bezug auf IPS Funktionen die sonst nirgends dokumentiert sind : http://www.tdressler.net/ipsymcon/doc_intern/html/globals_0x69.html

Hallo paresy,

der Einsatz von WAC_Reset ist eher eine Verzweiflungstat. Bei mir hat IPS immer wieder (ca. einmal pro Tag) Probleme, eine Datei abzuspielen. Es äußert sich darin, dass der Thread einfach hängen bleibt. Wenn das Problem auftritt, bleiben auch nachfolgende Threads, die auf die Playerinstanz zugreifen wollen, hängen:(
Selbst die Konsole bleibt hängen, wenn man versucht, die Instanz zu öffnen/bearbeiten.

Der Treiber scheint jedoch weiterhin zu funktionieren, da man über die Soundausgabe weiterhin Sound ausgeben kann.

Wenn ich dann den IPS Service kille und neu starte, geht alles wieder …

Schon sehr seltsam. Kann ich zur Fehlereingrenzung noch etwas ausprobieren?

Viele Grüße

Burkhard

Magst du mal die Beta #3786 ausprobieren? Ich hatte da eine kleine Änderung bzgl. des MediaPlayer eingebaut. Evtl. hilft es?

paresy

Sieht bislang gut aus.

Mit Beta #3786 tritt seit drei Tagen der Hänger nicht mehr auf.:loveips:

Gruß

Burkhard

Leider doch zu früh gefreut :frowning:

Das Problem besteht auch in der aktuellen Version noch.

Gruß

Burkhard