stack overflow in PushVar: Was passiert. Welche Folgen...

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

stack overflow in PushVar: Was passiert. Welche Folgen...

Beitrag von Cash » 10.03.2018, 11:15

Seit ein paar Tagen habe ich auf einmal folgenden Fehler im Log:

Code: Alles auswählen

Mar  9 00:15:00 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Seit dem Update auf die aktuelle Firmware incl Community Rega war mein Fehler log quasi leer. Täglich hatte ich folgende Meldungen:

Code: Alles auswählen

Feb 22 02:21:56 homematic-ccu2 daemon.info cuxd[277]: save paramsets(/usr/local/addons/cuxd/cuxd.ps) size:3248
Feb 22 04:00:01 homematic-ccu2 cron.info crond[108]: crond: USER root pid 5956 cmd /usr/sbin/logrotate -f /etc/logrotate.conf || logger -p error -t "logrotate" "logrotate aborted with error $?"
Feb 22 04:12:01 homematic-ccu2 cron.info crond[108]: crond: USER root pid 5960 cmd /bin/setHWClock.sh
Feb 22 04:14:01 homematic-ccu2 cron.info crond[108]: crond: USER root pid 5964 cmd /bin/SetInterfaceClock 127.0.0.1:2001
Feb 22 13:21:56 homematic-ccu2 daemon.info cuxd[277]: save paramsets(/usr/local/addons/cuxd/cuxd.ps) size:3194
Ich vermute der setHWClock.sh sorgt übrigens dafür das jede Nacht mein Duty Cycle um 4 Uhr rum von 0 auf 1 hoch geht :mrgreen:
2 x Cuxd und einmal ein logorate aborted with error. Was das soll weiß ich nicht. Interessierte mich aber eigentlich auch nicht.

Letzte Woche habe ich ein neues Programm geschrieben und erstmals elseif genutzt. Danach hatte ich folgende Fehler:

Code: Alles auswählen

Mar  6 14:44:54 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Mar  6 14:44:54 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Mar  6 14:44:54 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: ! +++++ Skript Luftentfeuchter starten +++++ ! Version 1.3 // 04.03.2018  ! +++++++ Variablen +++++++ string CUXD_AN; string CUXD_AUS; string Zeitpunkt_an; string Zeitpunkt_aus; string tmpG 
Also selbst ein Script RuntimeError.

Einen Fehler konnte ich im Script nicht entdecken. Als ich

Code: Alles auswählen

integer tmpF;

if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=62){tmpF = 1800;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=58){tmpF = 3600;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=55){tmpF = 7200;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=50){tmpF = 10800;}
else{tmpF = 14400;}
ersetzte durch:

Code: Alles auswählen

if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=62){tmpF = 1800;}
if((dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=58) && (dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=61)){tmpF = 3600;}
if((dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=55) && (dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=57)){tmpF = 7200;}
if((dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=50) && (dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=54)){tmpF = 10800;}
if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=49) {tmpF = 14400;}
war sowohl der ScriptRuntime Error als auch der Stack Overflow weg??

Soweit so gut. Danach ist mir leider aufgefallen das ich noch einen weiteren StackOVerflow hatte und zwar jeweils um 0:15 genau dort läuft das Urlaubsscript aus diesem Forum was seit ich die ccu2 habe fehlerfrei jeden Tag läuft. Hatte den Fehler erstmal igoniert. Ein Fehler von mir...
Das Script prüft jeden Tag ob heute Urlaub ist an Hand einer Stringliste (Systemvariable). Ich hatte nicht eine Fehlerberechnung. Bis auf gestern. Um 0:25 Uhr stellte sich meine Heizung auf Urlaub (zum Glück ist es ja nicht mehr ganz so kalt, so dass es mogens zwar leicht schattig in der Küche und im Bad war aber es wahr auszuhalten). Um 0.25 läuft ein Script welches auf Grund der Änderung des Urlaubsscripts die Heizung umstellt.

Erster Gedanke ich hatte vergestern den letztjährigen Urlaub zu löschen. Das war aber nicht so. Ob ich an dem Tag überhupt Urlaub hatte weiß ich nicht. Es scheint also das durch den Stack Overflow die Berechnung zu dem Ergebnis kam das Urlaub ist.

Ich habe das Urlaubsscript jetzt erstmal deaktiviert und seit dem ist die Log wieder so leer wie vorher (bis auf die 4 Einträge)...

So richtig zufrieden bin ich natürlich nicht. Denn die Urlaubsberechnung brauche ich ja.

Kann mir wer sagen wann es zu diesm Stack Overflow in Pushvar kommt? Was es genau macht? Wie ich es verhindere? Und wo genau der ScriptRuntime Error im elseif Teil lag?

In dem neuen Script bin ich übrigens jetzt auch etwas verschwenderischer mit Scriptvariablen. Ich vermute das ich als die 200er Grenze mittlerweile gerissen habe (was ja nicht das Problem sein sollte). Früher hatte ich alles immer mit tmpX gerarbeitet. Heute nur noch bei wenigen Systemvariablen die für mich zum nachvollziehen vom Script nicht wichtig sind...

Zugriff von aussen schließe ich aus. Andere Server können auch nicht verantwortlich sein. Diesen Fehler habe ich definitv zum ersten mal seit ich das neue Script mit elseif eingesetzt habe. An anderen System habe ich keine Änderungen, updates oder sonstwas verändert...Andere Server sind bei mir einmal ein Raspi mit Homebridge, Ein Raspi mit iobroker und ein Qnap mit ccu-historian. Wie schon geschrieben ich nutze eine ccu2.

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von jmaus » 10.03.2018, 13:51

Welche CCU2 Firmware setzt du genau ein und kannst du bitte die exakte ReGaHSs version ausgeben?
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von Cash » 10.03.2018, 19:13

Wie schon geschrieben: die aktuelle also 2.31.25 umgestellt auf Community Version

R1.00.0388.0126

Reicht das oder brauchst Du mehr oder andere Infos? Falls ja welchen Befehl soll ich wo ausführen?

inidona
Beiträge: 395
Registriert: 17.09.2013, 18:30
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von inidona » 10.03.2018, 21:27

elseif zusammengeschrieben geht doch gar nicht, oder ?

Gesendet von meinem WAS-LX1A mit Tapatalk

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von jmaus » 10.03.2018, 22:03

inidona hat geschrieben:elseif zusammengeschrieben geht doch gar nicht, oder ?
Doch, mit der neuesten CCU2 Firmware bzw. RaspberryMatic geht das. Die Frage wäre nur ob wir hier ein Testcase hinbekommen der dieses "PushVar" problem reproduzierbar hinbekommt, dann könnte ich mir das in ReGaHss näher anschauen.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von jmaus » 10.03.2018, 22:05

Cash hat geschrieben:Wie schon geschrieben: die aktuelle also 2.31.25 umgestellt auf Community Version

R1.00.0388.0126

Reicht das oder brauchst Du mehr oder andere Infos? Falls ja welchen Befehl soll ich wo ausführen?
Ok. Den Stack für Pushvar habe ich erst in der R.100.0388.0127 erweitert sodass das Problem nicht mehr auftreten sollte. Bitte zum testen einfach mal die aktuelle ReGaHss beta installieren und dann sollte das Problem hoffentlich nicht mehr auftreten.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von Cash » 10.03.2018, 22:57

Das ist meine produktiv ccu. Da möchte ich eigentlich eher keine Beta Version verwenden. Naja mal schauen.

Wie kommt es denn zu diesem stack overflow und was genau macht es? Kann dadurch mein Urlaubsscript zu einen falschen Ergebnis gekommen sein?

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von Cash » 11.03.2018, 13:59

Habe mich entschieden es zu versuchen aber weit komme ich nicht. Was soll mir folgendes sagen?

Code: Alles auswählen

 wget --no-check-certificate -O /bin/ReGaHss.community https://github.com/eq-3/
occu/raw/master/CCU2/packages-eQ-3/WebUI-Beta/bin/ReGaHss
--2018-03-11 13:55:32--  https://github.com/eq-3/occu/raw/master/CCU2/packages-eQ-3/WebUI-Beta/bin/ReGaHss
Resolving github.com... 192.30.253.112, 192.30.253.113
Connecting to github.com|192.30.253.112|:443... connected.
OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
Unable to establish SSL connection.
Was muss ich tun?

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von Bulli » 11.03.2018, 15:51

Hallo
das mußt du händisch machen. Da werden noch einige CCU2 User bei wget Augen machen, wenn noch mehr Webseiten die Verschlüssungs Arten ändern.

Kannst gleich die Datei nehmen und mit Winscp nach /bin Hochladen.
ReGaHss.zip
(713.59 KiB) 43-mal heruntergeladen
Bitte dann schauen ob es auch wirklich die Rega128 ist.

Code: Alles auswählen

strings /bin/ReGaHss.community |grep R1.0
R1.00.0388.0128
Gruß
Bulli

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: stack overflow in PushVar: Was passiert. Welche Folgen..

Beitrag von Cash » 11.03.2018, 17:35

brauche ich die anderen Dateien nicht auch?

Die kann ich ja auch von github runterladen oder? Muss ich die Zugriffsrechte dann noch irgenwie anpassen?

Irgendwie habe ich auch das Gefühl das ich von der ccu2 upgraden muss...

Bin derzeit schwer am grübeln was Sinn macht und wie meine Automationszukunft aussehen soll.

Antworten

Zurück zu „HomeMatic allgemein“