Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's

Begonnen von m8ichael, 16 Februar 2016, 18:30:23

Vorheriges Thema - Nächstes Thema

m8ichael

Hallo!

Zitat von: rudolfkoenig am 16 Februar 2016, 10:25:02
Ich habe dein Log analysiert, danach den kompletten Code-Verlauf, der bei einem set durchgelaufen wird 2-mal durchgelesen, und habe keine Idee: das Modul IO::Socket::INET wird nirgendwo aufgerufen. Ich vermute eine "unerwartete" Implementierung einer Funktion unter Windows mit Netzwerk, wuesste aber nicht, wo. Ziemlich sicher: das Problem hat nicht mit der letzten Aenderungen zu tun, sonst haette im Log direkt nach Cmd: eine Zeile mit "ZWave set ..." mit verbose 2 auftauchen muessen: das geaenderte ZWave-Code kommt danach.

Um das Problem einzugrenzen habe ich eine geaenderte fhem.pl und 10_ZWave.pm mit zusaetzlichen Log-Ausgaben auf verbose 1 angehaengt, bitte beide austauschen und laufen lassen.

Ich führe das Problem aus http://forum.fhem.de/index.php/topic,49057.45.html mal hier fort, da es sich ggf. um ein Windows-Spezifikum handelt. Schon mal vielen Dank für die neuen Dateien - ich werde diese nun gleich mal aktivieren und mal gucken, was die Logs so auswerfen...

Viele Grüße

Michael

m8ichael

Hallo,

hier jetzt mal ein Log:


2016.02.16 22:45:17.001 5: Cmd: >set dm.og.sz.Hauptbeleuchtung 0<
2016.02.16 22:45:17.001 1: CmdSet1
2016.02.16 22:45:17.001 1: DoSet1 dm.og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.001 1: DoSet2 dm.og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.001 4: dummy set dm.og.sz.Hauptbeleuchtung 0
2016.02.16 22:45:17.002 5: Triggering dm.og.sz.Hauptbeleuchtung (1 changes)
2016.02.16 22:45:17.002 5: Triggering dm.og.sz.Hauptbeleuchtung.notify
2016.02.16 22:45:17.002 4: dm.og.sz.Hauptbeleuchtung.notify exec set og.sz.Hauptbeleuchtung dim $EVENT
2016.02.16 22:45:17.002 5: Cmd: >set og.sz.Hauptbeleuchtung dim $EVENT<
2016.02.16 22:45:17.003 1: CmdSet1
2016.02.16 22:45:17.003 1: DoSet1 og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.003 1: DoSet2 og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.003 1: ZWC1: og.sz.Hauptbeleuchtung set dim
2016.02.16 22:45:17.003 1: ZWC3: 01%02x
2016.02.16 22:45:17.003 1: DoSet3 og.sz.Hauptbeleuchtung return: >IO::Socket::INET: connect: timeout<
2016.02.16 22:45:17.003 3: dm.og.sz.Hauptbeleuchtung.notify return value: IO::Socket::INET: connect: timeout
2016.02.16 22:45:17.003 1: CmdSet1
2016.02.16 22:45:17.003 1: DoSet1 dm.og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.004 5: Notify loop for dm.og.sz.Hauptbeleuchtung done
2016.02.16 22:45:17.004 1: DoSet3 dm.og.sz.Hauptbeleuchtung return: undefined
2016.02.16 22:45:17.004 4: name: /fhem?cmd=set%20dm.og.sz.Hauptbeleuchtung%200&XHR=1&fw_id=222 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip /


Viele Grüße

Michael

rudolfkoenig

Habs vermutlich gefixt und eingecheckt, ab morgen per update.

Hintergrund:
Entweder unter Windows oder in dem neuen Perl (5.22) wird $@ vor einem eval nicht zurueckgesetzt. Das ist mAn ein Perl-Bug, jedenfalls ist es nicht intuitiv, und dass es manuell zurueckgesetzt werden muss (was ich jetzt getan habe), steht auch nirgendwo. Auch der Inhalt der Variable ist komisch: es klingt nicht nach Syntax-Error. Laut http://perldoc.perl.org/5.22.0/perlvar.html#Error-Variables:
Zitat$@
The Perl syntax error message from the last eval() operator.  If $@ is the null string, the last eval() parsed and executed correctly (although the operations you invoked may have failed in the normal fashion).

rudolfkoenig

Nachtrag:
auf meinem System (kein Windows), wird $@ bei einem eval automatisch zurueckgesetzt, wie man das hier sehen kann:
% perl -e 'my $str="X("; my $x = eval($str); print "$x / $@\n"; $str="7+1"; $x = eval($str); print "$x / $@\n";'
/ syntax error at (eval 1) line 2, at EOF

8 /
%

Das habe ich mit perl 5.16 und perl 5.20 getestet. Auch unter Windows mit perl 5.20 funktioniert es:
C:\>perl -e "my $str='X('; my $x = eval($str); print \"$x / $@\n\"; $str='7+1'; $x = eval($str); print \"$x / $@\n\";"
/ syntax error at (eval 1) line 1, at EOF

8 /

C:\>

Koenntest du diesen Befehl (die Windows Version, die eine Zeile nach C:>) bitte bei dir in der Kommandozeile auch ausfuehren?

m8ichael

Hallo!

Zitat von: rudolfkoenig am 17 Februar 2016, 08:32:49
Koenntest du diesen Befehl (die Windows Version, die eine Zeile nach C:>) bitte bei dir in der Kommandozeile auch ausfuehren?

Bei mir (5.22.01) ergibt sich die folgende Ausgabe:


perl -e "my $str='X('; my $x = eval($str); print \"$x / $@\n\"; $str='7+1'; $x = eval($str); print \"$x / $@\n\";"
/ syntax error at (eval 1) line 1, at EOF

8 /



Hilft das weiter?

Viele Grüße

Michael

rudolfkoenig

Leider nicht so, wie ich es erwartet habe.
Kannst du bitte das ins SVN eingecheckte und ab morgen per update verfuegbare 10_ZWave.pm ausprobieren und berichten?

m8ichael

Zitat von: rudolfkoenig am 17 Februar 2016, 21:26:22
Leider nicht so, wie ich es erwartet habe.
Kannst du bitte das ins SVN eingecheckte und ab morgen per update verfuegbare 10_ZWave.pm ausprobieren und berichten?

Ok, dann hab ich das richtig hinsichtlich der Ausgabe interpretiert.  :(

Und klar, werde das ab morgen mal testen!

Vielen Dank und viele Grüße!

Michael

m8ichael

Hallo Rudi!

So, ich glaube, dass ich nun nach ein paar Testtagen vermelden kann, dass wieder alles wie gewohnt funktioniert - seit dem letzten Update sind keine Timeouts mehr erschienen!

Vielen Dank für deine Mühe!

Viele Grüße

Michael