Bei Nutzung von FHEMWEB stürzt FHEM nach einigen Sekunden ab.

Begonnen von Markus Bloch, 13 Juni 2013, 21:21:30

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo zusammen,

ich habe seit dem gestrigen Update massive Probleme mit FHEM, dabei stürzt FHEM während der Benutzung des Web-Interfaces regelmäßig ab. Als Fehlermeldung kommt dann:


 Can't use an undefined value as an ARRAY reference at /usr/share/fhem/FHEM/98_autocreate.pm line 140



Allerdings konnte ich mir diesen Fehler nicht erklären, und an dem genannten Modul wurde auch nichts verändert. In der Annahme es sei ein Konfigurationsfehler habe ich mal mein autocreate in der fhem.cfg auskommentiert und FHEM neugestartet. Nun kam plötzlich:


 Can't use an undefined value as an ARRAY reference at /usr/share/fhem/FHEM/91_watchdog.pm line 75.


In beiden Dateien lautet die betreffende Zeile in der notify-Fn:


  my $max = int(@{$dev->{CHANGED}});


in meiner fhem.log sind die letzten Zeilen immer:

ZitatUnknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair peerBulk press raw regBulk regSet reset sign statusRequest toggle unpair
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair peerBulk press raw regBulk regSet reset sign statusRequest toggle unpair

Nun steh ich da irgendwie gerade auf dem Schlauch, da ich mir keinen Reim daraus machen kann. fhem.pl wurde ja seit mehreren Tagen nicht verändert und watchdog/autocreate ebenfalls nicht.

Dieser Absturz tritt auch nur dann auf, wenn man im Webinterface rumsurft. Sobald ich FHEM starte und kein Webinterface aufrufe, läuft es ohne Probleme.

Kann hier von euch jemand helfen?

Vielen Dank

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Da hat ein Modul ein CHANGED Eintrag in $hash bzw. $defs{xxx} angelegt, was kein Array ist.
Mit "attr global verbose 5" muesste man rauskriegen welcher Modul das war.

Die Zeilen aus dem Log kann ich nicht erklaeren, ich tippe auf lokale Modifikation irgendeines Moduls.

Markus Bloch

Hallo Rudi,

hier einmal das fhem.log in Verbose 5:


2013.06.14 16:53:42 4: Connection accepted from FHEMWEB:192.168.179.21:49347
2013.06.14 16:53:42 4: Connection accepted from FHEMWEB:192.168.179.21:49348
2013.06.14 16:53:42 4: Connection accepted from FHEMWEB:192.168.179.21:49349
2013.06.14 16:53:42 4: Connection accepted from FHEMWEB:192.168.179.21:49350
2013.06.14 16:53:42 4: Connection accepted from FHEMWEB:192.168.179.21:49351
2013.06.14 16:53:42 4: Connection accepted from FHEMWEB:192.168.179.21:49352
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49347 GET /
2013.06.14 16:53:42 4: WEB: redirecting / to /fhem
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49347 GET /fhem
2013.06.14 16:53:42 4: /fhem / RL: 915 / text/html; charset=UTF-8 / Content-Encoding: gzip
 /
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49347 GET /fhem/pgm2/style.css
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49349 GET /fhem/pgm2/fhemweb.js
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49348 GET /fhem/pgm2/svg.js
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49350 GET /fhem/images/default/icoEverything.png
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49350 GET /fhem/images/default/fhemicon.png
2013.06.14 16:53:42 4: HTTP FHEMWEB:192.168.179.21:49350 GET /fhem?room=all&XHR=1&inform=1
2013.06.14 16:53:52 5: HMLAN_Send:  LANCUL I:K
2013.06.14 16:53:52 5: HMLAN_Parse: LANCUL V:03C1 sNo:IEQ0244559 d:174270 O:C26BB2 t:039E96F9 IDcnt:000B
2013.06.14 16:53:54 5: YAMAHA_AVR: execute on AV_Receiver: <YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>
2013.06.14 16:53:54 4: CustomGetFileFromURL http://192.168.179.32/YamahaRemoteControl/ctrl: Got data, length: 1012
2013.06.14 16:53:54 5: YAMAHA_AVR: got response for AV_Receiver: <YAMAHA_AV rsp="GET" RC="0"><Main_Zone><Basic_Status><Power_Control><Power>Standby</Power><Sleep>Off</Sleep></Power_Control><Volume><Lvl><Val>-415</Val><Exp>1</Exp><Unit>dB</Unit></Lvl><Mute>Off</Mute></Volume><Input><Input_Sel>AirPlay</Input_Sel><Input_Sel_Item_Info><Param></Param><RW>RW</RW><Title> AirPlay </Title><Icon><On>/YamahaRemoteControl/Icons/icon067.png</On><Off></Off></Icon><Src_Name>AirPlay</Src_Name><Src_Number>1</Src_Number></Input_Sel_Item_Info></Input><Surround><Program_Sel><Current><Straight>On</Straight><Enhancer>On</Enhancer><Sound_Program>2ch Stereo</Sound_Program></Current></Program_Sel><_3D_Cinema_DSP>Auto</_3D_Cinema_DSP></Surround><Sound_Video><Tone><Bass><Val>0</Val><Exp>1</Exp><Unit>dB</Unit></Bass><Treble><Val>0</Val><Exp>1</Exp><Unit>dB</Unit></Treble></Tone><Direct><Mode>Off</Mode></Direct><HDMI><Standby_Through_Info>Off</Standby_Through_Info><Output><OUT_1>On</OUT_1></Output></HDMI><Adaptive_DRC>Auto</Adaptive_DRC></Sound_Video></Basic_Status></Main_Zone></YAMAHA_AV>
2013.06.14 16:53:54 4: YAMAHA_AVR: GetStatus-Request returned: <YAMAHA_AV rsp="GET" RC="0"><Main_Zone><Basic_Status><Power_Control><Power>Standby</Power><Sleep>Off</Sleep></Power_Control><Volume><Lvl><Val>-415</Val><Exp>1</Exp><Unit>dB</Unit></Lvl><Mute>Off</Mute></Volume><Input><Input_Sel>AirPlay</Input_Sel><Input_Sel_Item_Info><Param></Param><RW>RW</RW><Title> AirPlay </Title><Icon><On>/YamahaRemoteControl/Icons/icon067.png</On><Off></Off></Icon><Src_Name>AirPlay</Src_Name><Src_Number>1</Src_Number></Input_Sel_Item_Info></Input><Surround><Program_Sel><Current><Straight>On</Straight><Enhancer>On</Enhancer><Sound_Program>2ch Stereo</Sound_Program></Current></Program_Sel><_3D_Cinema_DSP>Auto</_3D_Cinema_DSP></Surround><Sound_Video><Tone><Bass><Val>0</Val><Exp>1</Exp><Unit>dB</Unit></Bass><Treble><Val>0</Val><Exp>1</Exp><Unit>dB</Unit></Treble></Tone><Direct><Mode>Off</Mode></Direct><HDMI><Standby_Through_Info>Off</Standby_Through_Info><Output><OUT_1>On</OUT_1></Output></HDMI><Adaptive_DRC>Auto</Adaptive_DRC></Sound_Video></Basic_Status></Main_Zone></YAMAHA_AV>
2013.06.14 16:53:54 5: Triggering AV_Receiver (5 changes)
2013.06.14 16:53:54 5: Notify loop for AV_Receiver power: standby
2013.06.14 16:53:54 5: Update structure 'Gesamte_Wohnung' to off because device AV_Receiver has changed
2013.06.14 16:53:54 5: Triggering Gesamte_Wohnung (1 changes)
2013.06.14 16:53:54 5: Notify loop for Gesamte_Wohnung off
2013.06.14 16:53:54 5: SET: Unknown argument ?, choose one of on off volume:slider,-80,1,16 input:audio,av1,av2,av3,av4,av5,av6,airplay,hdmi1,hdmi2,hdmi3,hdmi4,netradio,server,tuner,usb,v-aux,ipod_usb mute:on,off remoteControl:setup,up,down,left,right,return,option,display,enter scene:scene1,scene2,scene3,scene4 statusRequest
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair peerBulk press raw regBulk regSet reset sign statusRequest toggle unpair
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear down getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair pct:slider,0,1,100 peerBulk press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Unknown argument ?, choose one of clear getConfig getRegRaw getSerial inhibit off on on-for-timer on-till pair peerBulk press raw regBulk regSet reset sign statusRequest toggle unpair



Um sicher zu gehen das alle Module und Dateien sauber sind, habe ich alle Module direkt frisch aus dem SVN gezogen.

Ich habe in 98_autocreate.pm über der genannten Zeile ein Log-Befehl zur Ausgabe des betreffenden Device Namens (AV_Receiver => 71_YAMAHA_AVR.pm) und dem Inhalt von $hash->{CHANGED} (undefined). Dies tritt immer beim Update der structure Gesamte_Wohnung. In YAMAHA_AVR verwende ich allerdings ausschließlich die readingFn's um Events zu triggern und Readings zu aktualisieren.

Desweiteren habe ich an dem Modul hinsichtlich Readings schön länger nichts mehr geändert.

Kannst du mir einen Tip geben, wie man den Fehler eingrenzen kann?

Vielen Dank

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Ich hab soeben mal bei FHEMWEB longpoll deaktiviert und nun läuft es wieder stabil. Sobald ich longpoll einschalte stürzt FHEM wieder ab.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Longpoll in FHEMWEB greift genauso auf CHANGED zurueck wie alle anderen (FileLog/etc), FHEMWEB ist nicht die Ursache.

Sonst wuerde ich die Yamaha Instanz aus dem structure nehmen, und pruefen, ob es daran liegt.
Danach waere wichtig zu wissen, mit welchem Kommando oder Event das Problem ausgeloest wird.
Danach wuerde ich im Yamaha Get oder Set ein zusaetzliches Log einbauen, der die Parameter ausgibt. Und weitere Log-Zeilen, wo man $hash->{CHANGED} ausgibt, um festzustellen, an welcher Stelle diese Variable zu undef wird.

Entweder sollte es nicht existieren, oder ein Array sein.

Angelegt, aber mit undef als Wert fuehrt zum Absturz.

Markus Bloch

Hallo Rudi,

vielen Dank für die Tipps. Werde ich nächste Woche einmal ausprobieren.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Habe mich heute mal rangesetzt und wie von Rudi vorgeschlagen an verschiedenen Stellen Logausgaben eingefügt.

Ende vom Lied war, das ich in der SetFn nicht immer ein readingsEndUpdate() aufrufe obwohl immer ein readingsBeginUpdate gestartet wird.

dadurch führte der nächste reguläre Status Update zu diesem Fehler.

Habe ich soeben im SVN gefixet.

Vielen Dank an Rudi für die Hilfe.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)