Schon seit Monaten, trotz regelmäßiger Updates, bekomme ich nach Neustart fhem im log:
PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Meta.pm line 2039.
jemand eine Idee?
Danke
Bei mir seit einiger Zeit (ca. 25.5.2020) auch - nur eine Zeile später:
PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Meta.pm line 2040.
Leider habe ich auch bisher keine Lösung gefunden. FHEM ist auf dem aktuellen Stand.
stacktrace anschalten, dann erfährt man mehr und man kommt vielleicht der Ursache auf die Spur
Stacktrace hat aus meiner Sicht aber dazu auch keinen Hinweis:
2020.07.27 07:44:02 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Meta.pm line 2040.
2020.07.27 07:44:02 1: stacktrace:
2020.07.27 07:44:02 1: main::__ANON__ called by /opt/fhem/FHEM/Meta.pm (2030)
2020.07.27 07:44:02 1: FHEM::Meta::__GetMetadata called by /opt/fhem/FHEM/Meta.pm (643)
2020.07.27 07:44:02 1: (eval) called by /opt/fhem/FHEM/59_Weather.pm (36)
2020.07.27 07:44:02 1: main::BEGIN called by /opt/fhem/FHEM/Meta.pm (0)
2020.07.27 07:44:02 1: (eval) called by /opt/fhem/FHEM/Meta.pm (0)
2020.07.27 07:44:02 1: (eval) called by fhem.pl (2625)
2020.07.27 07:44:02 1: (eval) called by fhem.pl (2624)
2020.07.27 07:44:02 1: main::CommandReload called by fhem.pl (2010)
2020.07.27 07:44:02 1: main::LoadModule called by fhem.pl (2067)
2020.07.27 07:44:02 1: main::CommandDefine called by fhem.pl (1254)
2020.07.27 07:44:02 1: main::AnalyzeCommand called by fhem.pl (1105)
2020.07.27 07:44:02 1: main::AnalyzeCommandChain called by configDB.pm (746)
2020.07.27 07:44:02 1: main::_cfgDB_Execute called by configDB.pm (445)
2020.07.27 07:44:02 1: main::cfgDB_ReadAll called by fhem.pl (612)
Zitat von: nog76 am 27 Juli 2020, 07:58:07
Stacktrace hat aus meiner Sicht aber dazu auch keinen Hinweis:
doch...
2020.07.27 07:44:02 1: main::__ANON__ called by /opt/fhem/FHEM/Meta.pm (2030)
2020.07.27 07:44:02 1: FHEM::Meta::__GetMetadata called by /opt/fhem/FHEM/Meta.pm (643)
2020.07.27 07:44:02 1: (eval) called by /opt/fhem/FHEM/59_Weather.pm (36)Das Weather Modul versucht, Meta.pm zu laden, danach versucht, Meta.pm, bestimmte Daten im Weather Modul zu finden, die offenbar nicht vorhanden sind.
Das Problem wird also aller Wahrscheinlichkeit nach vom Weather Modul verursacht.
Habe das Weather-Modul nun rausgeworfen - nun verlagert sich der Fehler in DBLog:
2020.07.27 11:13:50 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Meta.pm line 2040.
2020.07.27 11:13:50 1: stacktrace:
2020.07.27 11:13:50 1: main::__ANON__ called by /opt/fhem/FHEM/Meta.pm (2030)
2020.07.27 11:13:50 1: FHEM::Meta::__GetMetadata called by /opt/fhem/FHEM/Meta.pm (643)
2020.07.27 11:13:50 1: (eval) called by (eval 25) (1)
2020.07.27 11:13:50 1: main::BEGIN called by /opt/fhem/FHEM/Meta.pm (0)
2020.07.27 11:13:50 1: (eval) called by /opt/fhem/FHEM/Meta.pm (0)
2020.07.27 11:13:50 1: (eval) called by /opt/fhem/FHEM/93_DbLog.pm (22)
2020.07.27 11:13:50 1: (eval) called by fhem.pl (2636)
2020.07.27 11:13:50 1: (eval) called by fhem.pl (2635)
2020.07.27 11:13:50 1: main::CommandReload called by fhem.pl (2021)
2020.07.27 11:13:50 1: main::LoadModule called by fhem.pl (2078)
2020.07.27 11:13:50 1: main::CommandDefine called by fhem.pl (1254)
2020.07.27 11:13:50 1: main::AnalyzeCommand called by fhem.pl (1105)
2020.07.27 11:13:50 1: main::AnalyzeCommandChain called by configDB.pm (746)
2020.07.27 11:13:50 1: main::_cfgDB_Execute called by configDB.pm (445)
2020.07.27 11:13:50 1: main::cfgDB_ReadAll called by fhem.pl (612)
ich habe das Thema in die Entwicklung weitergereicht: https://forum.fhem.de/index.php/topic,113149.0.html
Ich habe sowohl 59_Weather.pm als auch 93_DbLog.pm neben anderen Modulen, die Meta.pm laden, im Einsatz.
Meta.pm ist natürlich vorhanden.
Kann bei mir keine der hier beschriebenen Meldungen feststellen.
Hallo zusammen :)
Ich weiß hier wurde länger nichts mehr geschrieben.
Aber ich bekomme aktuell den gleichen Fehler (nach Neuinstallation Raspi + FHEM und allen aktuellen Updates sowie einer sehr ausgedünnten Config).
2021.04.11 20:52:17 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Meta.pm line 2040.
2021.04.11 20:52:17 1: stacktrace:
2021.04.11 20:52:17 1: main::__ANON__ called by /opt/fhem/FHEM/Meta.pm (2030)
2021.04.11 20:52:17 1: FHEM::Meta::__GetMetadata called by /opt/fhem/FHEM/Meta.pm (643)
2021.04.11 20:52:17 1: (eval) called by (eval 28) (1)
2021.04.11 20:52:17 1: main::BEGIN called by /opt/fhem/FHEM/Meta.pm (0)
2021.04.11 20:52:17 1: (eval) called by /opt/fhem/FHEM/Meta.pm (0)
2021.04.11 20:52:17 1: (eval) called by ./FHEM/93_DbLog.pm (22)
2021.04.11 20:52:17 1: (eval) called by fhem.pl (2663)
2021.04.11 20:52:17 1: (eval) called by fhem.pl (2662)
2021.04.11 20:52:17 1: main::CommandReload called by fhem.pl (2036)
2021.04.11 20:52:17 1: main::LoadModule called by fhem.pl (2093)
2021.04.11 20:52:17 1: main::CommandDefine called by fhem.pl (1265)
2021.04.11 20:52:17 1: main::AnalyzeCommand called by fhem.pl (1116)
2021.04.11 20:52:17 1: main::AnalyzeCommandChain called by fhem.pl (1403)
2021.04.11 20:52:17 1: main::CommandInclude called by fhem.pl (619)
Ich bin dankbar für jeden Hinweis! :)
Vielen Dank und Grüße
Raemsna
93_DbLog.pm Scheint beim Laden des Meta Modules Probleme zu machen. Wenn ich das richtig sehe fehlt ihm wohl der package name.
Nabend,
Zitat
93_DbLog.pm Scheint beim Laden des Meta Modules Probleme zu machen. Wenn ich das richtig sehe fehlt ihm wohl der package name.
Ja scheint.... :)
Aber siehe meinen Beitrag darüber. Kann nichts dergleichen bei mir beobachten. Und wie nog76 schon geschrieben hat scheint sich die Meldung zu verlagern je nachdem welche Module (die Meta.pm supporten) im Einsatz sind und _vielleicht_ zuerst geladen werden.
Weiß nicht ob Loredo noch mit an Bord ist, habe lange nichts von ihm gelesen.
Edit: DbLog nutzt kein eigenes Package, das ist richtig.
Grüße,
Heiko
Julian ist wohl vorerst nicht mehr mit dabei. Ich erreiche ihn auch zur Zeit nicht.
Letzte Meldung von ihm war das er viel Arbeit hat. Kann aber auch sein das er kein Interesse mehr an FHEM Entwicklung hat. Er hatte ja schon öfters erwähnt aussteigen zu wollen.
Ich schaue mir morgen noch mal die erwähnte Zeile an.
Ja, hatte auch schon geschaut. Aber sieht unspektakulär aus. Vllt. hast du eine Idee.
Wenn man es nachstellen könnte wär es schon ein Gewinn, kommt bei mir aber nicht. Habe Weather und DbLog (logisch) im Einsatz.
Wäre schade wenn er nicht weitermachen würde, beträfe ja auch den Installer ...
Bei mir tritt seit Langem derselbe Fehler bei Neustart auf. In meinem Falle ist es Zeile 2048, vermutlich auf Grund einer späteren Revision von Meta.pm, und laut Stacktrace wegen DbLog:
2024.10.20 17:49:53 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /usr/share/fhem/FHEM/Meta.pm line 2048.
2024.10.20 17:49:53 1: stacktrace:
2024.10.20 17:49:53 1: main::__ANON__ called by /usr/share/fhem/FHEM/Meta.pm (2038)
2024.10.20 17:49:53 1: FHEM::Meta::__GetMetadata called by /usr/share/fhem/FHEM/Meta.pm (643)
2024.10.20 17:49:53 1: (eval) called by (eval 14) (1)
2024.10.20 17:49:53 1: main::BEGIN called by (eval 14) (1)
2024.10.20 17:49:53 1: (eval) called by (eval 14) (1)
2024.10.20 17:49:53 1: (eval) called by /usr/share/fhem/FHEM/93_DbLog.pm (45)
2024.10.20 17:49:53 1: (eval) called by /usr/bin/fhem.pl (2768)
2024.10.20 17:49:53 1: (eval) called by /usr/bin/fhem.pl (2767)
2024.10.20 17:49:53 1: main::CommandReload called by /usr/bin/fhem.pl (2069)
2024.10.20 17:49:53 1: main::LoadModule called by /usr/bin/fhem.pl (2134)
2024.10.20 17:49:53 1: main::CommandDefine called by /usr/bin/fhem.pl (1282)
2024.10.20 17:49:53 1: main::AnalyzeCommand called by /usr/bin/fhem.pl (1133)
2024.10.20 17:49:53 1: main::AnalyzeCommandChain called by /usr/bin/fhem.pl (1421)
2024.10.20 17:49:53 1: main::CommandInclude called by /usr/bin/fhem.pl (630)
Hatte in der Zwischenzeit jemand eine Idee, woran es liegen könnte, dass diese Fehlermeldung beim Start von FHEM auftaucht?
Mit Hilfe von Gemini habe ich mir das mal wieder vorgenommen und mit folgendem kleinen Fix kommt die Warnung nicht mehr. Seiteneffekte habe ich keine festgestellt.
Zeile 2048 wie folgt anpassen:
($packages{Meta}{META}{name} // 'FHEM::Meta') . ' 'Laut Gemini ist der Grund folgender:
ZitatProblembeschreibung:
Beim ersten Laden des Moduls FHEM::Meta (z.B. durch ein use FHEM::Meta in 93_DbLog.pm) wird im Hauptteil des Moduls sofort __GetMetadata für die Datei Meta.pm selbst aufgerufen. Zu diesem Zeitpunkt ist das Modul aber noch nicht vollständig im globalen %packages-Hash registriert.
In Zeile 2048 (innerhalb von __GetMetadata) versucht der Code, den Wert $packages{Meta}{META}{name} für das Feld generated_by zu lesen. Da dieser Key beim allerersten Durchlauf noch nicht existiert (undef), wirft Perl die Warnung:
Use of uninitialized value in concatenation (.) at ./FHEM/Meta.pm line 2048.
Dies ist ein klassisches Bootstrapping-Problem (Henne-Ei), da sich das Modul erst nach dem erfolgreichen Einlesen seiner Metadaten selbst im Hash registriert.
Vorgeschlagener Fix:
Die Verwendung des "Defined-Or" Operators (//), um einen Fallback-Namen zu nutzen, falls das Modul im %packages-Hash noch nicht bekannt ist.
Auswirkung:
Die Warnung beim FHEM-Start bzw. beim Laden des Moduls verschwindet. Bei späteren Aufrufen (wenn das Modul bereits im Speicher ist) wird weiterhin korrekt der Name aus dem Hash verwendet.
Zusatzhinweis:
Ich habe in der Zusammenfassung bewusst 'FHEM::Meta' als Fallback gewählt, da dies der Paketname ist. Das ist sauberer, als nur die Warnung zu unterdrücken, da das Feld generated_by so auch beim ersten Mal einen sinnvollen Inhalt bekommt.
Ich hoffe, es ist in Ordnung, das von Gemini Wiedergegebene hier zu posten. Vielleicht sind das für euch, CoolTux und DS_Starter, hilfreiche Hinweise, um das a) zu prüfen und b) ggf. richtig zu beheben.