Crash nach Speichern von Javascript

Forum zum Mitteilen von Fehlern
Antworten
tgirard
starter
Beiträge: 24
Registriert: 17.01.2016, 10:01

Crash nach Speichern von Javascript

Beitrag von tgirard » 14.09.2018, 06:01

Guten Morgen
Mein ioBroker verabschiedet sich nach dem Speichern von Javascript. Kommt bei verschiedenen Scripts vor, kurz nach dem Speichern ist ioBroker nicht mehr aktiv und muss über Terminal neu gestartet werden.
admin 3.4.7
javascript 3.6.4

Kann mir jemand helfen?
Spoiler: Show hidden text
2018-09-14 06:52:45.847 - [31merror[39m: javascript.0 Error: websocket error
at WS.Transport.onError (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:64:13)
at WebSocket.ws.onerror (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:150:10)
at WebSocket.onError (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:109:16)
at emitOne (events.js:116:13)
at WebSocket.emit (events.js:211:7)
at WebSocket.finalize (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:182:41)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)

2018-09-14 06:52:45.857 - [31merror[39m: javascript.0 uncaught exception: write EPIPE
2018-09-14 06:52:45.857 - [31merror[39m: javascript.0 Error: write EPIPE
at _errnoException (util.js:992:11)
at WriteWrap.afterWrite (net.js:864:14)

2018-09-14 06:52:45.869 - [31merror[39m: kecontact.0 websocket error
2018-09-14 06:52:45.856 - [31merror[39m: web.0 Error: websocket error
at WS.Transport.onError (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:64:13)
at WebSocket.ws.onerror (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:150:10)
at WebSocket.onError (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:109:16)
at emitOne (events.js:116:13)
at WebSocket.emit (events.js:211:7)
at WebSocket.finalize (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:182:41)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
2018-09-14 06:52:45.869 - [31merror[39m: web.0 uncaught exception: write EPIPE
2018-09-14 06:52:45.869 - [31merror[39m: web.0 Error: write EPIPE
at _errnoException (util.js:992:11)
at WriteWrap.afterWrite [as oncomplete] (net.js:864:14)

Benutzeravatar
apollon77
guru
Beiträge: 6560
Registriert: 10.04.2015, 12:27

Crash nach Speichern von Javascript

Beitrag von apollon77 » 14.09.2018, 06:05

Was genau machen denn deine Skripte so? Irgendwas mit Write auf pipes? Da ist ein Fehler drin mit einer nicht Gefangenen exception EPIPE

Welcher js-Controller?


Gesendet vom Handy ...
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

tgirard
starter
Beiträge: 24
Registriert: 17.01.2016, 10:01

Re: Crash nach Speichern von Javascript

Beitrag von tgirard » 15.09.2018, 14:35

vielen Dank für die Antwort. Ich weiss nicht mal was pipe ist...
Der Fehler tritt nach dem Speichern aller scripts auf. Nach einem sudo iobroker start läuft es wieder und alles ist io...
js-controller ist 1.4.2

danke
Thierry

RappiRN
guru
Beiträge: 1072
Registriert: 22.02.2017, 16:31
Wohnort: Rathenow

Re: Crash nach Speichern von Javascript

Beitrag von RappiRN » 15.09.2018, 15:04

Dann zeig doch mal bitte solch ein Skript, was den ioBroker abstürzen lässt!

Enrico
Auch wenn unter meinem Benutzernamen jetzt "guru" steht, ich bin leider keiner, versuche aber zu helfen wo es geht. :D

tgirard
starter
Beiträge: 24
Registriert: 17.01.2016, 10:01

Re: Crash nach Speichern von Javascript

Beitrag von tgirard » 15.09.2018, 15:11

ja, gerne:
Spoiler: Show hidden text
function setBedroomShadesOpen () {
setBedroomShades (100,100);
}

function setBedroomShadesHalf () {
// summer: 23,1,38 (Tuere)
var astroTime = getAstroDate('sunriseEnd');
var testTime = addTime('07:00:00');
if (astroTime > testTime) {
setBedroomShades (40,50);
} else {
setState("hm-rpc.0.MEQ0516382.1.LEVEL"/*Schlafz_rechts 2.LEVEL*/,1);
setState("hm-rpc.0.MEQ0517911.1.LEVEL"/*Schlafz_links 2.LEVEL*/,20);
setState("hm-rpc.0.MEQ0517906.1.LEVEL"/*Schlafz_Tuere.LEVEL*/,38);
}
}

function setBedroomShadesClosed () {
setBedroomShades (0,0);
}

function setBedroomShades (levelWindow,levelDoor) {
log("setting bedroom shades with window: " + levelWindow + " and door: " + levelDoor);
setState("hm-rpc.0.MEQ0516382.1.LEVEL"/*Schlafz_rechts 2.LEVEL*/,levelWindow);
setState("hm-rpc.0.MEQ0517911.1.LEVEL"/*Schlafz_links 2.LEVEL*/,levelWindow);
setState("hm-rpc.0.MEQ0517906.1.LEVEL"/*Schlafz_Tuere.LEVEL*/,levelDoor);

if (levelWindow > 0 && levelDoor > 0) {
setState("hm-rega.0.11186"/*Rolladen_alle_unten*/, false);
}
}

function closeGardenShades () {
if (getState("hm-rpc.0.LEQ1249130.1.STATE"/*Gartentuere.STATE*/).val === 0) {
// Gartentüre ist geschlossen
setState("hm-rpc.0.MEQ0188927.1.STATE"/*Teichpumpe.STATE*/,false);
if (!getState("hm-rega.0.2881"/*Gaeste*/).val) {
// keine Gaeste
setState("hm-rpc.0.LEQ1179670.1.LEVEL"/*Roll_Gartenz_Fenster.LEVEL*/,0);
setStateDelayed("hm-rpc.0.LEQ1179485.1.LEVEL"/*Roll_Gartenz_Tuere.LEVEL*/,0,180000);
// if Heizung = aus => include Gaestezimmer
// if(!getState("hm-rega.0.5679"/*Heizung*/).val) {
setState("hm-rpc.0.LEQ1179719.1.LEVEL"/*Roll_Gaeste.LEVEL*/,0);
// }
}
}
}

function openGardenShades () {
// only if not Ferien & not Guests
if (!getState("hm-rega.0.2881"/*Gaeste*/).val && !getState("hm-rega.0.13182"/*Ferien*/).val) {
if(getState("hm-rega.0.16907"/*GastEG*/).val === false) {
setState("hm-rpc.0.LEQ1179670.1.LEVEL"/*Roll_Gartenz_Fenster.LEVEL*/,100);
clearStateDelayed("hm-rpc.0.LEQ1179485.1.LEVEL"/*Roll_Gartenz_Tuere.LEVEL*/);
setState("hm-rpc.0.LEQ1179485.1.LEVEL"/*Roll_Gartenz_Tuere.LEVEL*/,100);
// if Heizung = aus => include Gaestezimmer
if(!getState("hm-rega.0.5679"/*Heizung*/).val) {
setState("hm-rpc.0.LEQ1179719.1.LEVEL"/*Roll_Gaeste.LEVEL*/,100);
}
} else { //GastEG === true
if(getState("hm-rpc.0.LEQ1179719.1.LEVEL"/*Roll_Gaeste.LEVEL*/).val <30) {
setState("hm-rpc.0.LEQ1179670.1.LEVEL"/*Roll_Gartenz_Fenster.LEVEL*/,100);
clearStateDelayed("hm-rpc.0.LEQ1179485.1.LEVEL"/*Roll_Gartenz_Tuere.LEVEL*/);
setState("hm-rpc.0.LEQ1179485.1.LEVEL"/*Roll_Gartenz_Tuere.LEVEL*/,100);
}
}
}
}

RappiRN
guru
Beiträge: 1072
Registriert: 22.02.2017, 16:31
Wohnort: Rathenow

Re: Crash nach Speichern von Javascript

Beitrag von RappiRN » 15.09.2018, 15:23

Mist, doch "normales" Javasscript, da sehe ich leider nicht durch! :? Aber irgendwer anderes kann bestimmt was rauslesen! :D

Enrico
Auch wenn unter meinem Benutzernamen jetzt "guru" steht, ich bin leider keiner, versuche aber zu helfen wo es geht. :D

tgirard
starter
Beiträge: 24
Registriert: 17.01.2016, 10:01

Re: Crash nach Speichern von Javascript

Beitrag von tgirard » 15.09.2018, 15:54

auf jeden Fall vielen Dank für's Anschauen!
Ich glaube es hat mehr mit dem javascript adapter zu tun, als mit den scripts selber. Kurz nach dem 'save' keine Reaktion mehr und 'iobroker start' notwendig. Die Änderungen sind dann in ca. 75% gespeichert, in 25% nicht.
Geht auch so, ist aber etwas mühsam ;-)

vader722
starter
Beiträge: 80
Registriert: 21.08.2014, 09:45

Re: Crash nach Speichern von Javascript

Beitrag von vader722 » 18.10.2018, 08:40

Hallo,

bei mir ist das leider ähnlich. Nach dem Speichern eines Skripts crasht iobroker häufig, jedoch nicht immer.

Ich habe mein System wegen Grafana von Debian 8(x86) auf Debian 9.5(amd64) umgestellt. Das ganze läuft als VM mit 2 Kernen und 4GB RAM.

Ich habe dazu mein ioBroker Verzeichniss vorher zusammengepackt (tar) und auf der neuen Installation wieder extrahiert, danach ein reinstall.sh. Node wurde in dem Zuge von 6 auf Node 10.12.0 und NPM auf 4.6.1 upgegraded.
Ein paar Tage lief das Ganze ohne Probleme. Jedoch fiel mir auf, dass nach dem Speichern eines Skriptes der js-controller crasht (Logausgaben ähnlich tgirard, Websocket Error von verschiedenen Adapter gemeldet, vermutlich weil js-controller fehlt) --> iobroker start und es läuft wieder.
Das System crasht manchmal auch bei anderen Events (ich habe den ioBroker backitup installiert, Backup angestossen --> crash von js-controller). Es war teilweise so, dass ich ioBroker nicht mehr starten konnte. Beim Start des javascript Adapters ist jedesmal der js-controller gecrasht. Ich habe testweise alle Skripte deaktiviert --> keine Besserung
Dann habe ich nochmals das reinstall.sh drüber laufen lassen, jetzt kann ich das System zumindest wieder starten.
Aber beim Editieren eines Skripts ist die Wahrscheinlichkeit hoch, das der js-controller sich beendet.

Langsam gehen mir die Optionen aus...

Gruss Marco

P.S. js-controller 1.4.2

Antworten