[FUIP][gelöst] Aufruf FUIP bringt FHEM zum Absturz

Begonnen von Bort76, 14 April 2019, 10:57:45

Vorheriges Thema - Nächstes Thema

Bort76

Hallo Thorsten,

seit ein paar Tagen habe ich ein ernstes Problem: Der Aufruf von FUIP killt bei mir FHEM.
Der letzte Log-Eintrag ist dabei eigentlich (manchmal fehlt er auch) immer:

Not a HASH reference at ./FHEM/lib/FUIP/View/ViewTemplate.pm line 343.


Aus dem in der Folge erfassten Verbose 5 - Log lassen sich die folgenden, eigentlich erstmal harmlosen 2 Blöcke noch zusätzlich sporadisch finden:

2019.04.12 16:30:46 1: PERL WARNING: Use of uninitialized value in hash element at FHEM/lib/FUIP/View.pm line 329.
2019.04.12 16:38:55 1: PERL WARNING: Use of uninitialized value $device in hash element at FHEM/lib/FUIP/Model.pm line 191.

2019.04.13 09:41:54 1: PERL WARNING: Use of uninitialized value $devName in hash element at FHEM/lib/FUIP/Model.pm line 296.
2019.04.13 09:41:54 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 2708.
2019.04.13 09:41:54 1: PERL WARNING: Use of uninitialized value $devName in hash element at FHEM/lib/FUIP/Model.pm line 316.


Mein Problem ist, dass das Ganze nicht reproduzierbar ist - ein FHEM-Restart hilft nie, ein Reboot meistens. Jedenfalls bis gestern, jetzt lässt sich FUIP auch nach mehreren Reboots garnicht mehr aufrufen, ohne FHEM unmittelbar zu killen.

Nach den (ignorierten) paar Mal habe ich angefangen, Schritt für Schritt Views zu löschen; jedoch ohne Erfolg - es bleibt unberechenbar und nicht nachvollziehbar.

Alles was ich zwischen dem gestern noch laufenden und heute nicht mehr zu mobilisierendem FUIP gemach habe, war ein Update (10_CUL_HM.pm,37_harmony.pm,74_HusqvarnaAutomower.pm,98_Installer.pm,98_MSwitch.pm,98_todoist.pm,HMConfig.pm,Meta.pm) / shutdown restart sowie an ein paar DOIF's zu arbeiten, die allerding keinerlei Bezug zur Oberfläche haben.

Ich hoffe Du kannst mir einen Tipp geben, wo ich mit dem Suchen nach der Ursache anfangen kann. Tausend Dank schon mal im Vorraus  :)

Thorsten Pferdekaemper

Hi,
ich muss mir dazu mal das Coding genau anschauen. Kannst Du mir mal die FUIP_....cfg-Datei geben?
Hast Du die neuste Version von FUIP? (FUIP News sollte 12.04.2019 anzeigen.)
Gruß,
   Thorsten
FUIP

Bort76

#2
Hallo Thorsten,

vielen Dank für Deine schnelle Antwort - meine Verzweiflung hat mich mittlerweile in die Bearbeitung der config getrieben - ich hatte eine benutzdefinierte View, wo ich keine Defaults bei den Variablen in einem PopUp hinterlegt hatte.
Ich hatte die View und ihre Verwendungen aus der Datei direkt gelöscht und konnte FUIP wieder aufrufen. Nach dem Neuanlegen über die Oberfläche, diesmal mit defaults auch im PopUp, lief es immernoch.

Die Config habe ich Dir angehängt, nur falls das ein Pyrrhussieg gewesen sein sollte - wie gesagt, die klare Reproduzierbarkeit fehlt.
Edit: War es - ohne weiteres Zutun ist FHEM nach einem Aufruf von FUIP wieder weg....

BTW - wäre es möglich, auf benutzerdefinierten Views PopUps zu ermöglichen?

Edit2: Auch wenn's vermutlich irrelevant ist:

philipp@Server-Automation:~$ sudo service fhem status
[sudo] Passwort für philipp:
● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
   Active: deactivating (stop-sigterm) (Result: exit-code) since Sun 2019-04-14 11:53:26 CEST; 14s ago
  Process: 357 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)
Main PID: 466 (code=exited, status=255)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/fhem.service
           ├─692 /usr/bin/perl fhem.pl fhem.cfg
           └─693 /usr/bin/perl fhem.pl fhem.cfg

Apr 14 11:52:47 Server-Automation systemd[1]: Starting FHEM Home Automation...
Apr 14 11:52:48 Server-Automation systemd[1]: Started FHEM Home Automation.
Apr 14 11:53:26 Server-Automation systemd[1]: fhem.service: Main process exited, code=exited, status=255/n/a

Thorsten Pferdekaemper

Hi,
ich habe mal Dein .cfg ausprobiert. Wenn ich versuche, die View Templates aufzurufen, dann bekomme ich

Can't call method "getStructure" on unblessed reference at ./FHEM/lib/FUIP/View/ViewTemplInstance.pm line 54.

Das ist jedenfalls mal ein Anhaltspunkt, aber ich muss da noch weiterforschen. Allerdings wahrscheinlich erst heute Abend...

Zitat von: Bort76 am 14 April 2019, 11:51:29
BTW - wäre es möglich, auf benutzerdefinierten Views PopUps zu ermöglichen?
Du meinst wahrscheinlich View Templates. Das geht schon, genauso wie in normalen Zellen.
Gruß,
   Thorsten
FUIP

Bort76

#4
Egal wann - echt herzlichsten Dank für Deine Hilfe!!! :-) Ich finde den Verursacher einfach nicht...

Zitat von: Thorsten Pferdekaemper am 14 April 2019, 14:58:54
Du meinst wahrscheinlich View Templates. Das geht schon, genauso wie in normalen Zellen.
Sorry für meine Nomenklaturschlamperei  ;)
Wenn ich mir beispielsweise ein Multi-State-Symbol als View-Template anlege, kann das in der Oberfläche genutzt, momentan nicht Ausgangspunkt für ein Popup sein, die Option fehlt. Mal wäre ein Popup schön, mal unnütz...
Klar kann man das zweimal - einmal mit, einmal ohne - anlegen.... aber ich habe darüber hinaus den Verdacht, dass es eines der Popups innerhalb der View-Templates ist, dass mich matt setzt.

Thorsten Pferdekaemper

Hi,
soweit ich das jetzt analysiert habe ist das Problem, dass Du ein View Template auf einem Popup benutzt, welches zur Definition eines (anderen) View Templates gehört. Oder anders:
VTempl A -> Popup -> VTempl B.
Das funktioniert mal, mal funktioniert es nicht. Es kommt darauf an, ob View Template A oder B zuerst geladen wird, worauf Du keinen Einfluss hast. Es ist auch egal, in welcher Reihenfolge die in der cfg-Datei stehen.
(Den Fall ohne Popup dazwischen kann FUIP, nur das mit dem Popup halt nicht so richtig.)
Ich werde das reparieren, aber das bekomme ich heute Abend nicht mehr hin.
Gruß,
   Thorsten 
FUIP

Thorsten Pferdekaemper

Hi,
das war jetzt doch nicht ganz so kompliziert zu lösen. Es war schwieriger, das erstmal zu finden...
Kannst Du mal testen?

Die andere Sache mit dem Popup habe ich jetzt kapiert. Das geht tatsächlich nicht. Man kann sozusagen das Popup-Feld nicht zur Variablen machen. Wenn Du das haben willst, dann mach' dazu bitte einen neuen Thread auf.

Gruß,
   Thorsten
FUIP

Bort76

Hallo Thorsten,

Danke, dass Du Dir für das Problem soviel Zeit ans Bein gebunden hast - bislang läuft es auch nach mehreren Versuchen immer und stabil ohne jede Fehlermeldung.

Das mit den Poups mach ich in einem eigenen Thread, ist aber, glaube, noch simpler....

Benni

#8
Hallo Thorsten,


2019.04.15 17:29:08 1: FUIP ERROR: ViewTemplInstance with non-blessed View Template
Problem: at ./FHEM/lib/FUIP/View/ViewTemplInstance.pm line 60
FUIP::ViewTemplInstance::getStructure('FUIP::ViewTemplInstance=HASH(0x9ee31d0)') called at ./FHEM/42_FUIP.pm line 378
FUIP::getViewClassesSingle('FUIP::ViewTemplInstance=HASH(0x9ee31d0)', 'HASH(0x982a898)') called at ./FHEM/42_FUIP.pm line 400
FUIP::getViewClassesSingle('FUIP::View::Html=HASH(0x9ee3440)', 'HASH(0x982a898)') called at ./FHEM/42_FUIP.pm line 439
FUIP::getViewDependencies('HASH(0x97f06d0)', 'home', 'js') called at ./FHEM/42_FUIP.pm line 458
FUIP::renderHeaderHTML('HASH(0x97f06d0)', 'home') called at ./FHEM/42_FUIP.pm line 661
FUIP::renderPage('HASH(0x97f06d0)', 'home', 1) called at ./FHEM/42_FUIP.pm line 1939
FUIP::getFuipPage('HASH(0x97f06d0)', '') called at ./FHEM/42_FUIP.pm line 2180
FUIP::CGI('/uitest/') called at ./FHEM/01_FHEMWEB.pm line 925
main::FW_answerCall('/fhem/uitest/') called at ./FHEM/01_FHEMWEB.pm line 567
main::FW_Read('HASH(0x82504d0)') called at fhem.pl line 3698
main::CallFn('WEB_192.168.178.135_53893', 'ReadFn', 'HASH(0x82504d0)') called at fhem.pl line 745


Ist das das selbe Problem?

FHEM schmiert beim Aufruf meiner FUIP-Oberfläche direkt ab!
Einziger Kommentar ist obiger Log-Eintrag.

Habe eben (15.04./17:15) ein komplettes FHEM-Update durchgeführt (FHEM, fhemtabletui und fuip).
Seither tritt das Phänomen auf.

Werde erst mal mein Backup wiederherstellen.

UPDATE: Hmmm.... Eben mein Backup eingespielt, und auch da ist das Problem vorhanden. Somit habe ich jetzt keinen Zeitpunkt auf den ich das erstmalige Auftreten des Problems festlegen kann.

UPDATE2: Mit wiederhergestelltem Backup erhalte ich nur noch folgenden Logeintrag vor dem Absturz:


Can't call method "getStructure" on unblessed reference at ./FHEM/lib/FUIP/View/ViewTemplInstance.pm line 54.


Ich bin mir aber sicher, dass es heute morgen noch funktioniert hat, zumindest war ein Goto Start-URL auf meinem Tablet mit Fully kein Problem. Das führt aber jetzt auch zu o.g. Meldung mit anschließendem Absturz. Btw. es ist egal, von welchem Browser oder welchem Device aus.

UPDATE 3: Was mich am meisten stutzig macht ist, dass das Wiedereinspielen meines Backups das Problem nicht behebt.
Ich habe jetzt aus lauter Verzweiflung sogar den FHEM-Server einmal komplett durchgestartet. Wie erwartet aber ohne Erfolg.

@Thorsten: Wenn du miene fuip-Config für die Analyse brauchst, kann ich dir die gerne zukommen lassen.


gb#

Thorsten Pferdekaemper

Zitat von: Benni am 15 April 2019, 17:37:08
@Thorsten: Wenn du miene fuip-Config für die Analyse brauchst, kann ich dir die gerne zukommen lassen.
Ja bitte...
Gruß,
   Thorsten
FUIP

Benni

#10
Zitat von: Thorsten Pferdekaemper am 15 April 2019, 20:50:59
Ja bitte...
Gruß,
   Thorsten

config im Anhang (Kennwort kommt gleich per PN)!

Datei entfernt, hat ihren Zweck ja bereits erfüllt.

Thorsten Pferdekaemper

Hi Benni,
das schmiert bei mir auch ab, d.h. ich kann das Problem nachvollziehen. Wenigstens etwas...
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
also... Es gibt ein View Template "EG_Licht", aber verwendet wird auch EG-Licht, welches es nicht gibt. Das dürfte eigentlich nicht passieren. (Außer jemand hat an der .cfg-Datei herumgeschraubt.) Ich muss jetzt aber nochmal nachsehen, ob das nicht doch irgendwie passieren kann.
Folgendes sind TODOs für mich:
1. Nachsehen, ob beim Rename für View Templates vielleicht nicht in die Dialoge abgetaucht wird.
2. FUIP bei solchen Fehlern stabiler machen. (Z.B. bei fehlenden View Templates was anderes reinschreiben.)

Damit Du weitermachen kannst, kannst Du einfach mal in der .cfg-Datei "EG-Licht" durch "EG_Licht" ersetzen. Dann noch ein "set uiTest load" und es müsste gehen.

Gruß,
   Thorsten


FUIP

Benni

Hallo Thorsten,

danke für's Debuggen! Hat perfekt geklappt!  :)
Jetzt kann ich zumindest mein Wand-Tablet mal wieder aktivieren, die Frau wird sich freuen!  8)

Zitat von: Thorsten Pferdekaemper am 16 April 2019, 15:19:33
1. Nachsehen, ob beim Rename für View Templates vielleicht nicht in die Dialoge abgetaucht wird.

Jetzt erinnere ich mich: FUIP hat da mal irgendwas wegen unzulässiger Zeichen im Namen "gemeckert" und da habe ich diverse ViewTemplates dann umbenannt. Kann sein, dass das auch dabei war.

Wie auch immer!
Vielen Dank nochmal für den schnellen (!) Support!

gb#

Thorsten Pferdekaemper

Zitat von: Benni am 15 April 2019, 17:37:08
UPDATE 3: Was mich am meisten stutzig macht ist, dass das Wiedereinspielen meines Backups das Problem nicht behebt.
Das liegt wahrscheinlich daran, dass Du seit dem Umbenennen von EG-Licht keinen Neustart und kein "set ... load" gemacht hast. Das eigentliche Problem ist (oder war), dass beim Laden der FUIP...cfg das View Template EG-Licht nicht mehr gefunden wurde. Vorher (also vor dem Neustart) war das erstmal egal, da sozusagen das alte View Template noch an der Instanz hing.


Zitat von: Thorsten Pferdekaemper am 16 April 2019, 15:19:33
1. Nachsehen, ob beim Rename für View Templates vielleicht nicht in die Dialoge abgetaucht wird.
2. FUIP bei solchen Fehlern stabiler machen. (Z.B. bei fehlenden View Templates was anderes reinschreiben.)
Das müsste jetzt erledigt sein. Das "Rename" sollte jetzt besser klappen und falls nicht, dann sollte es zumindest keine Abstürze mehr geben.
Alles Weitere siehe FUIP News.

Gruß,
    Thorsten
FUIP