PI stürzt bei häufigen

Hast Skripte mit denen du das Problem irgendwie reproduzierbar machen kannst?

paresy

Hi Paresy,

muss ich leider bestätigen. Es ist zwar SEHR VIEL BESSER geworden, vereinzelt tritt der Effekt aber weiter auf.

Falls ich so ein „Verursacher-Script“ finde, werde ich es Dir senden. Momentan sieht es aber mehr nach „zufällig“ aus.

herbert

Hm,

ich konnte bis jetzt nichts wieder „hängen“ lassen.
Läuft noch alles rund.

lg Thomas

Abend,

Ich habe ebenfalls das Problem, dass mein Skript noch hängt und ich konnte das auf eine Warning zurückführen, die ich nicht unterdrückt habe.

Mein Skript prüft ob ein Event schon da ist und wertet dann aus ob False oder eine ID zurück kommt. Allein die Abfrage ob das Event vorhanden ist reicht aus um das PHP Skript in die ewigen Jadgründe zu befördern.


<?
  $evID = IPS_GetEventIDByName("Off_Event", $_IPS['SELF']);
?>

Sobald ich die Warning unterdrücke geht es:


<?
  $evID = @IPS_GetEventIDByName("Off_Event", $_IPS['SELF']);
?>

VG
Michael

Bei mir läuft es seit Tagen absolut störungsfrei.

Gibt es eigentlich eine Möglichkeit, sich in IPS direkt eine neue Version für den RasPi anzeigen zu lassen ?

Hallo paresy,

das Script, das Probleme gemacht hat (hier aus dem Forum, setzt Dämmerungswerte), läuft inzwischen problemlos. Abstürze oder Hänger konnte ich damit nicht mehr produzieren.

Grüße, Gerhard

Es ist verrückt: Genau 10min nach dem Absetzen des Beitrags ist IPS wieder hängengeblieben.
Ich hatte davor noch ein update gemacht - vor diesem update hatte ich gar keine Abstürze.

Nun sind die Hänger bei mir wieder in alter Härte da :mad:

immerhin kann ich ein Script ausmachen, das die Abstürze auslöst:

<?
$id_info = IPS_GetObject(IPS_GetParent($_IPS['SELF']));

if ($a=@request($id_info['ObjectName'],'version')){
echo $a;
	IPS_SetScriptTimer($_IPS['SELF'], 10);
	if ($subitem=@IPS_GetObjectIDByName("Version",$_IPS['SELF'] )){
	   setvaluestring($subitem,$a);
	}
	else{
	   $subitem=IPS_CreateVariable(3);
	   IPS_SetName($subitem, "Version");
	   IPS_SetParent($subitem, $_IPS['SELF']);
	   setvaluestring($subitem,$a);
	}
	if ($subitem=@IPS_GetObjectIDByName("Status",$_IPS['SELF'] )){
	   setvalueboolean($subitem,true);
	}
	else{
	   $subitem=IPS_CreateVariable(0);
	   IPS_SetName($subitem, "Status");
	   IPS_SetParent($subitem, $_IPS['SELF']);
	   setvalueboolean($subitem,true);
	}
}
else{
	IPS_SetScriptTimer($_IPS['SELF'], 60);
   setvalueboolean($subitem,false);
	exit;
}

if (!$a=@request($id_info['ObjectName'],'pin get RELAIS1')) $a="?";
if (!$a=@request($id_info['ObjectName'],'io get port 2')) $a="?";

//$a="port2 : 0x10";
//echo (decbin(substr($a,8)+0))."
";
//if ((substr($a,8)+0) & pow(2,$i)) echo "Ja"; else echo "Nein";

for ($i=0;$i<8;$i++){
	if ($subitem=@IPS_GetObjectIDByName("Relais".($i+1),$_IPS['SELF'] )){
	   setvalueboolean($subitem,((substr($a,8)+0) & pow(2,$i))!=0);
	}
	else{
	   $subitem=IPS_CreateVariable(0);
	   IPS_SetName($subitem, "Relais".($i+1));
	   IPS_SetParent($subitem, $_IPS['SELF']);
	   setvalueboolean($subitem,((substr($a,8)+0) & pow(2,$i))!=0);
	}
}

if (!$a=@request($id_info['ObjectName'],'adc get')) $a="?";

if ($subitem=@IPS_GetObjectIDByName("adc",$_IPS['SELF'] )){
   setvaluestring($subitem,$a);
}
else{
   $subitem=IPS_CreateVariable(3);
   IPS_SetName($subitem, "adc");
   IPS_SetParent($subitem, $_IPS['SELF']);
   setvaluestring($subitem,$a);
}

function request($ip, $request) {
$rs = fsockopen($ip, 2701);
if (!$rs) {
	$response = "Kann Verbindung nicht aufbauen!";
}
else {
	$response ="";
	$request = "!" . $request . "
";
	fputs($rs, $request);
	while (!feof($rs)) {
		$response .= fgets($rs, 128);
	}
	fclose($rs);
	}
return $response;
}
?>

damit polle ich die Zustände der Relais meiner 3 NetIO. Es wird zyklisch alle 10s aufgerufen. Spätestens nach 10-20min ist IPS dann weg, bis ich ein „killall php“ mache.

Deaktiviere ich jedoch meinen LCN-Konfigurator, z.B. indem ich die Kopplung zum PCHK trenne, läuft das auch ohne Absturz.länger durch.

Kann ich irgendwie an die IPS Version vom 13.10. kommen ?

Ja Tom,

schau unter „/var/cache/apt/archives“ nach.

lg thomas - der das neue noch testen muss.

Muss ich leider bestätigen - seit heutigem UPDATE alle „HÄNGER“ wieder da :mad::mad::mad::mad:

Hätte ich mal Deinen Post vor den Updates gelesen :loveips::loveips::loveips:

@Paresy: Kann es sein, dass ein Rücksichern von …/usr/share/symcon/. nicht aureicht?? Genau dieser Fehler woanders steckt?

Ich bin wieder auf die 135 gegangen. Einfach im archives dpkg -i <paket> das vom 10.10. installieren.

Hi TomW,

DANKE. Für andere IPSler: Pfad ist: /var/cache/apt/archives.

herbertf :):):slight_smile:

Fix dafür kommt nachher. Da ist irgendwas schief gelaufen :rolleyes:

paresy

Hi Paresy,

ich bin jetzt wieder auf die „scheinbar“ funktionierende Version gewechselt.

In dieser kann ich aber auch einen Fehler reproduzieren:

IPS_SetScripttimer($_IPS['SELF'], $Delay_3);

wobei $Delay_3 ein IntegerWert (90) ist. In Script 39590 habe ich obige Zeile 21 um 10:52:19 aktiviert (bis dahin hatte ich diese Zeile auskommentiert).

Im LOG erscheint dann folgendes - nachdem ich mit sudo killall php (um 10:53:30) - die hängenden Threads gekillt habe:

Hoffentlich hilf Dir das.

HerbertF

Abend,

Das Warning Problem ist mit der heutigen Version jetzt weg. Soweit schon mal Danke!

Ich kann allerdings noch ein paar weitere Probleme sehen:

Das Setup:

Folgendes Skript:


<?
  $evID = IPS_GetEventIDByName("Off_Event", $_IPS['SELF']);
  echo "
Event ID". $evID ."
";

if ($_IPS['SENDER'] == 'Variable') {
	$evID = IPS_GetEventIDByName("Off_Event", $_IPS['SELF']);
  	echo "
Event ID". $evID ."
";

}
?>

Funktioniert einwandfrei, solang es manuell ausgeführt wird. Sobald das aber über das Event gestartet wird, kriegt das Skript keine Werte mehr für die Event ID.

Das gibt dann folgenden Fehler:

Außerdem will ich in meinem eigentlichen Skript danach das Event bearbeiten. Er findet dann aber folgende Funktion nicht:

Fatal error: Call to undefined function IPS_SetEventCyclicTimeBounds()

VG
MIchael

Hi Paresy,

im anderen „Linux-Fehler_Thread“ habe ich gelesen, dass Du an den Archiv-Fehlern arbeitest.

Hast Du denn die SetScriptTimer und Cycle-Event … Probleme aus diesem Thread auch in Arbeit?

UND ZUM SCHLUSS: ICH HABE AUF ALLEN 5 PI-SYSTEMEN SEIT TAGEN KEINEN EINZIGEN SCRIPT-Hänger (welcher ursprünglich ja mal diesen Thread verursachte)

herbert

Die habe ich leider nicht verstanden. Bist du dir sicher, dass da nicht zufällig irgendwo ein Leerzeichen am Ende im Skript die „Ausgabe“ verursacht? Hast du eine Anleitung wie ich den Fehler einwandfrei reproduzieren kann?

paresy

Hi Paresy,

scheinbar ist es doch so, dass der IPS_SetScripTimer Befehl sich in der Raspberry Version anders verhält.

Es tut mir leid, aber

IPS_SetScriptTimer(39590,25);

bringt genau obigen Fehler, nämlich sieh Anhang:

Wobei 39590.ips.php das Script und 11989 das Ereignis, also der ScriptTimer ist.

herbertf

Hallo,

seit heute habe ich wieder Script-Abstürze (reproduzierbar) mit einem modifizierten ‚Astro‘-Script. Wenn ich darin 2 eigene Ereignisse aktualisiere, läuft es, bei mehr kommt der Absturz und symcon beendet sich. Wenn ich in der Ausführung einen sleep-Befehl einbaue, bleibt das Script hängen.
Beim Absturz kommt die Meldung;socket_error.JPG

Grüße, Gerhard

Kannst du das Skript so reduzieren, dass ich es bei mir auch nachstellen könnte?

paresy