Cannot fork: Cannot allocate memory

Begonnen von MarkOtti, 30 März 2014, 12:55:41

Vorheriges Thema - Nächstes Thema

MarkOtti

Hallo Forum,

mein FRITZ!Box 7270 - FHEM - Gespann läuft nun seit einigen Wochen unterbrechungsfrei (vgl. diesen Beitrag).

Nun möchte ich mich meinem vorerst letzten Problem widmen und komme da nicht weiter.

Wenn ich "update" oder "update force" eingebe, passiert laut Log genau das hier:
2014.03.30 12:25:56.200 1: Cannot fork: Cannot allocate memory
Use of uninitialized value $p in hash element at fhem.pl line 510.


Weiter nichts. Hier die Ausgabe von "version":
# $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $
# $Id: 00_CUL.pm 5001 2014-02-20 17:59:57Z martinp876 $
# $Id: 10_CUL_HM.pm 5056 2014-02-26 19:41:23Z martinp876 $
# $Id: 01_FHEMWEB.pm 5038 2014-02-24 10:55:21Z rudolfkoenig $
# $Id: 92_FileLog.pm 5044 2014-02-25 11:38:35Z rudolfkoenig $
# $Id: 98_HMinfo.pm 5042 2014-02-24 19:34:29Z martinp876 $
# $Id: 99_SUNRISE_EL.pm 4537 2014-01-03 08:28:59Z rudolfkoenig $
# $Id: 99_Utils.pm 3595 2013-08-05 05:38:48Z tobiasfaust $
# $Id: 59_Weather.pm 4887 2014-02-11 19:27:08Z borisneubert $
# $Id: 98_XmlList.pm 2895 2013-03-11 19:48:01Z rudolfkoenig $
# $Id: 98_autocreate.pm 5015 2014-02-21 20:38:59Z rudolfkoenig $
# $Id: 91_eventTypes.pm 2982 2013-03-24 17:47:28Z rudolfkoenig $
# $Id: 98_notice.pm 2647 2013-02-04 21:43:52Z mfr69bs $
# $Id: 91_notify.pm 4933 2014-02-15 08:22:35Z rudolfkoenig $
# $Id: 98_telnet.pm 4844 2014-02-08 07:54:03Z rudolfkoenig $
# $Id: 98_update.pm 4070 2013-10-19 11:22:17Z rudolfkoenig $
# $Id: 98_weblink.pm 3770 2013-08-23 13:29:58Z rudolfkoenig $


Ich bin für jeden Vorschlag dankbar.

Bennemannc

Hallo,

hast Du einen zusätzlichen Swap auf der Fritzbox angelegt? Geh doch mal mit Telnet auf die Box und gebe "free" (natürlich ohne ") ein. Damit wird die Speicherauslastung (RAM) angezeigt.
Vor dem Update versucht fhem ein Backup zu machen. Die wichtigen Dateien werden kompremiert abgelegt. Hierfür kommt die FB prozessormäßig und speichermäßig an ihre Grenzen. Ggf. mal das Backup in der fhem.cfg abschalten.Backup ausschalten = attr global backup_before_update 0 setzen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

betateilchen

Zitat von: MarkOtti am 30 März 2014, 12:55:41
Ich bin für jeden Vorschlag dankbar.

1. attr global nofork=1
2. update testen
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig


betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MarkOtti

Danke für die Vorschläge.
Hier die Ausgabe von "free":
# free
             total         used         free       shared      buffers
Mem:         59300        54088         5212            0          656
-/+ buffers:              53432         5868
Swap:         8184         6616         1568


Ebenso befinden sich u. a. schon von Anfang an folgende Einträge in der fhem.cfg:
attr global backup_before_update 0
attr global nofork 1


Was ist der Unterschied zwischen "backup_before_update" und "updateInBackground"?
Wenn ich nämlich noch zusätzlich "attr global updateInBackground  0" eingebe und anschließend das "update" starte, hängt sich die komplette Box auf. Es geht dann gar nix mehr, sie antwortet noch nicht einmal mehr auf ein Ping.

Muss ich mich mit dem Thema Swap auseinandersetzen, oder habt Ihr noch eine andere Idee?

betateilchen

backup_before_update = bestimmt, ob vor einem Update ein Backup gemacht wird (wie der Name schon sagt)
update_in_background = bestimmt, ob das Update im laufenden fhem-Prozess durchgeführt wird oder ob dafür ein zusätzlicher Hintergrundprozes gestartet wird (wie der Name schon sagt)

Die beiden haben grundsätzlich erstmal nichts miteinander zu tun.

ZitatWenn ich nämlich noch zusätzlich "attr global updateInBackground  0" eingebe und anschließend das "update" starte, hängt sich die komplette Box auf.

Glaub ich nicht, ich sehe das eher als gutes Zeichen. Es kann SEHR LANGE dauern, bis Du eine Reaktion erkennst, das bedeutet aber nicht, dass sich nichts tut.

Schau doch mal ins Logfile Deines fhem, ob da nicht doch das Update gestartet wurde und Du lediglich ein Opfer Deiner eigenen Ungeduld bist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MarkOtti

Habe nun mal ein Update per Telnet gestartet. Im ersten Moment passierte ebenso wenig wie bei einem Update per WebGUI. Der einzige Unterschied war, die FritzBox war weiterhin per Ping erreichbar. Da ich mich aber eher zu den geduldigen Menschen zähle, ließ ich die Box für einige Zeit ohne Aufsicht.
Irgendwann war das Putty-Fenster weg und der Prozess auf der Box beendet. FHEM lief nicht mehr.
Nach einem Neustart, hat sich an den Versionsnummern tatsächlich etwas verändert. Aber woran erkenne ich nun, wie lange der Update Vorgang gedauert hat?
Hier dazu das Log:
2014.03.30 14:34:51.741 1: Including fhem.cfg
2014.03.30 14:35:05.703 1: Including ./log/fhem.save
2014.03.30 14:35:06.835 1: usb create starting
2014.03.30 14:35:08.328 1: usb create end
2014.03.30 14:35:08.347 0: Server started with 43 defined entities (version $Id: fhem.pl 5340 2014-03-27 16:19:53Z rudolfkoenig $, os linux, user root, pid 2640)
2014.03.30 14:36:45.886 4: CUL_Parse: CUL A 0F AF 8610 22DA9F 000000 0AA8E80F00102B -52.5
2014.03.30 14:36:46.390 4: CUL_send:  CULAs 0E 01 A011 F11234 2611C3 0201C80000
2014.03.30 14:36:50.186 4: CUL_send:  CULAs 0E 01 A011 F11234 2611C3 0201C80000
2014.03.30 14:36:54.793 4: CUL_send:  CULAs 0E 01 A011 F11234 2611C3 0201C80000
2014.03.30 14:36:54.955 4: CUL_Parse: CUL A 0E 01 8002 2611C3 F11234 0101C800480D -67.5
2014.03.30 14:37:25.098 4: CUL_send:  CULX0 0     
2014.03.30 14:37:25.193 1: Including fhem.cfg
2014.03.30 14:37:26.906 1: Including ./log/fhem.save
2014.03.30 14:37:35.975 4: CUL_Parse: CUL A 0F B3 8610 22217C 000000 0A60AE0E00181E -59
2014.03.30 14:38:51.635 4: CUL_Parse: CUL A 0F B0 8610 22DA9F 000000 0AA8E80F00102E -51
2014.03.30 14:40:10.083 1: update check Releases => local: Fhem 5.5 (DEVELOPMENT) remote: Fhem 5.5 (DEVELOPMENT)
2014.03.30 14:40:13.141 1: update saving statefile
2014.03.30 15:21:47.940 1: Including fhem.cfg
2014.03.30 15:22:01.376 1: Including ./log/fhem.save
2014.03.30 15:22:02.566 1: usb create starting
2014.03.30 15:22:03.904 1: usb create end
2014.03.30 15:22:03.923 0: Server started with 43 defined entities (version $Id: fhem.pl 5340 2014-03-27 16:19:53Z rudolfkoenig $, os linux, user root, pid 2872)
2014.03.30 15:22:30.666 4: CUL_Parse: CUL A 0F C1 8610 22DA9F 000000 0AA8E50F00102C -52
2014.03.30 15:23:15.735 4: CUL_Parse: CUL A 0F C5 8610 22217C 000000 0A60AE0E00181D -59.5
2014.03.30 15:24:32.915 4: CUL_Parse: CUL A 0F C2 8610 22DA9F 000000 0AA8E50F001028 -54
2014.03.30 15:25:53.762 4: CUL_send:  CULX0 0     
2014.03.30 15:25:53.859 1: Including fhem.cfg
2014.03.30 15:25:55.583 1: Including ./log/fhem.save
2014.03.30 15:25:56.739 4: CUL_Parse: CUL A 0F C6 8610 22217C 000000 0A60AE0E00181E -59
2014.03.30 15:27:24.655 4: CUL_Parse: CUL A 0F C3 8610 22DA9F 000000 0AA8E50F001027 -54.5


Aus den Zeiten, als ich FHEM noch unter Windows betrieben habe, kenne ich noch das Verhalten, dass nach einem "update" der Event Monitor mit den Ausgaben ab ca. 14:40 angezeigt wurde. Das war ungefähr der Zeitpunkt an dem ich das Update per Telnet gestartet habe.

Bennemannc

Hallo,

also bei der FB dauert das Update schon relativ lang. Ich kümmere mich nicht sonderlich darum. Mit einem Update Check schaue ich, ob sich Module die ich verwende geändert habe. Wenn ja rufe ich das update auf. Irgendwann schaue ich dann nach, ob alles gelaufen ist und ob ich fhem neu starten soll. Im Logfile steht dann shutdown restart required. Das mache ich dann und alles ist gut.
Bezüglich der Speicherauslastung würde ich Dir raten, auf dem USB Stick eine Swapdatei anzulegen. Wenn Du mit Grafiken arbeitest könnte sonst der Speicherplatz nicht reichen. Einfach mal googlen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF