Cannot fork: Cannot allocate memory | BlockingInformParent

Begonnen von Burny4600, 14 Februar 2018, 10:33:06

Vorheriges Thema - Nächstes Thema

Nighthawk


Burny4600

An der Perlversion alleine kann es jedenfalls nicht liegen.
Sowohl am Pi3/3+ als auch am Pi2+ befindet sich die perl_version v5.24.1
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Damian

Ich habe mal unter Windows die aktuelle ActivePerl-Version installiert:

ZitatThis is perl 5, version 26, subversion 1 (v5.26.1) built for MSWin32-x64-multi-thread

Der Memory leak scheint mit meiner Testkonfiguration mit der regulären DOIF-Version nicht mehr da zu sein.

Allerdings habe ich Probleme mit serialport


2018.05.30 20:45:25.328 3: Opening CUL device com10
2018.05.30 20:45:25.395 3: Setting CUL serial parameters to 9600,8,N,1
2018.05.30 20:45:25.416 1: PERL WARNING: Second Read attempted before First is done at ./FHEM/00_CUL.pm line 556.
2018.05.30 20:45:25.416 1: PERL WARNING: Use of uninitialized value $got in numeric ne (!=) at C:/Perl/site/lib/Win32/SerialPort.pm line 1216.
2018.05.30 20:45:25.416 1: PERL WARNING: Second Write attempted before First is done at ./FHEM/DevIo.pm line 128.
2018.05.30 20:45:25.416 1: PERL WARNING: Use of uninitialized value $written in numeric ne (!=) at C:/Perl/site/lib/Win32/SerialPort.pm line 1580.
2018.05.30 20:45:25.452 1: Cannot init com10, ignoring it (CUL)


Es ist jetzt wohl Perl 64 statt Perl x86 (32-bit). Perl 32-bit gibt es offenbar nicht mehr in der aktuellen Version unter Windows.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

fhemxperte

#273
Moin zusammen,

ich teste parallel auf meinem PROD-System mittels Perlbrew. Habe soeben Perl 5.20.2 installiert und nun kommen die ganzen Module dran. Vielleicht kann ich hier helfen, da ich dasselbe Problem habe.

VG


Edit:
Falls jemand auch mit Perlbrew arbeiten und andere Perl Versionen testen will, hier meine Installationsanleitung (ich hoffe ich habe nichts vergessen):

Install Perlbrew
------------------
1) Create perlbrew directory
cd /opt
sudo mkdir perlbrew
sudo chown fhem perlbrew
sudo chgrp dialout perlbrew

2) Switch user to fhem
sudo su - fhem

3) Set variables and install perlbrew
export PERLBREW_ROOT=/opt/perlbrew
curl -kL http://install.perlbrew.pl | bash

Install a Perl version
----------------------
1) Switch user to fhem

2) Check versions and install
cd /opt/perlbrew/bin/
./perlbrew available
./perlbrew --notest install perl-5.20.2 -D=usethreads

3) Activate perl version
cd /opt/perlbrew/bin/
export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc
./perlbrew switch perl-5.20.2
echo -e "Perl version:\r\n " && perl -v
echo -e "Perl active:\r\n " && which perl
echo -e "Perl environment variables:\r\n " && env | grep PERL
echo -e "Perl host system:\r\n " && lsb_release -a

Install modules
----------------------
1) Switch user to fhem
2) Activate your perl version

3) Install cpanm
curl -L https://cpanmin.us | perl - App::cpanminus

4) My modules installations
# prerequisite for IO::Socket::SSL is "sudo apt-get install libssl-dev"
# prerequisite for DBD::mysql is "sudo apt-get install default-libmysqlclient-dev"
cpanm JSON
cpanm DBI
cpanm URI::Escape
cpanm XML::Simple
cpanm Device::SerialPort
cpanm HTML::TreeBuilder::XPath
cpanm DBI::Const::GetInfoType
cpanm IO::Socket::SSL
cpanm Crypt::Rijndael
cpanm SOAP::Lite
cpanm DBD::mysql
cpanm Net::Telnet
cpanm -n IO::Tty --configure-timeout=200
cpanm Net::SCP::Expect
cpanm -n Net::OpenSSH

Start fhem with other Perl version
----------------------------------
1) Switch user to fhem

2) Stop fhem
/etc/init.d/fhem stop

3) Activate your perl version

4) Start fhem
/etc/init.d/fhem start

Nighthawk

Das nenne ich mal eine super Anleitung.
Ich bin mit Active Perl leider gescheitert und Perlbrew ist mir nach ca. 3/4 Stunde Kompilieren von Perl 5.20 mit einer Fehlermeldung abgeschmiert, ich versuche es heute nochmal mit der Anleitung Perl 5.20 über Perlbrew zu installieren.

fhemxperte

Danke,

führe es mit --notest aus (wie in der Anleitung), ich hatte bei einem Test einen Fehler, dass der abgebrochen ist ... so sparst du mindestens 30 Minuten ;)

Mit perlbrew kannst du jederzeit zwischen den Versionen switchen.

Falls irgendwas nicht funktioniert, einfach melden, vielleicht kann ich helfen oder es fehlt etwas in der Anleitung.

fhemxperte

#276
Nach den ersten paar Stunden sieht die mit Perlbrew geswitchte Version auf 5.20.2 vernünftig aus (grüner Part im Bild im Anhang). Alles was davor sichtbar ist, ist eindeutig ein Speicherleck, ganz deutlich sieht man dies im 30 Tage Chart.

Ich lasse so Fhem ein paar Tage laufen und gebe dann nochmal Rückmeldung.

Korrektur:
Ich habe anstatt 5.20.3 versehentlich 5.20.2 installiert!

Nighthawk

#277
Hallo Zusammen,

auch bei mir funktioniert es mit der Perl Version 5.20.3 ohne Speicheranstieg.

Jetzt stellen sich bei mir nur folgende Fragen
1. wie stelle ich die Perlversion dauerhaft um
2. ich habe 2 Module die nicht laufen wolen,
RPII2C (I2C: Error! no library for Hardware access installed)
und MQTT (Cannot load module MQTT)
! Finding Net::MQTT:Simple on cpanmetadb failed.
! Finding Net::MQTT:Simple () on mirror http://www.cpan.org failed.
! Couldn't find module or a distribution Net::MQTT:Simple

wie bekomme ich diese noch zum laufen

rudolfkoenig

Zitatwie bekomme ich diese noch zum laufen
Bei mir hat das gerade mit "cpan -i Net::MQTT::Simple" geklappt. Heruntergeladen wurde die Datei (automatisch) von dieser Adresse:
http://www.perl.org/CPAN/authors/id/J/JU/JUERD/Net-MQTT-Simple-1.21.tar.gz


Nighthawk

Hallo Rudi cpan funktioniert bei mir auch, dies gilt aber nur der im OS installierten Version von Perl,
versucht man das ganze wie in der Anleitung oben mit cpanm zu installieren, kommt die Fehlermeldung.


Was mir noch aufgefallen ist, ist dass der  Sigduino nicht funktioniert.

rudolfkoenig

Ich wuerde cpan (nicht cpanm) aus der gewuenschten Perl-Installation aurufen, muesste neben dem perl Binary sein.

Nighthawk

ok, danke, habe ich zum laufen bekommen.

Dem Sigduino bzw. eher dem Modul SD_WS09 fehlte das Modul Digest::CRC.

fhemxperte

Moin,

im Internet lese ich immer, dass mit Perlbrew immer cpanm genutzt werden sollte, da das nur ein Modul zur spezifischen Perl Installation ist. Ich denke cpan macht betriebsbedingt Probleme bzgl. dem Perl vom OS und Perlbrew.

Muss allerdings sagen, da kenne ich mich nicht so gut aus und lasse mich gerne belehren.


Zum Thema:
Bei mir funktioniert die Installation (nur testen kann ich es nicht)... sicher dass du der FHEM user bist und mit Perlbrew auf 5.20.3 gewechselt hast?

fhem@Fhem:/opt/perlbrew/bin$ cpanm Net::MQTT::Simple
--> Working on Net::MQTT::Simple
Fetching http://www.cpan.org/authors/id/J/JU/JUERD/Net-MQTT-Simple-1.21.tar.gz ... OK
Configuring Net-MQTT-Simple-1.21 ... OK
Building and testing Net-MQTT-Simple-1.21 ... OK
Successfully installed Net-MQTT-Simple-1.21
1 distribution installed
fhem@Fhem:/opt/perlbrew/bin$


rudolfkoenig

ZitatIch denke cpan macht betriebsbedingt Probleme bzgl. dem Perl vom OS und Perlbrew.
Wichtig ist, dass man cpan/cpanm aus der gewuenschten perl Installation aufruft, sonst installiert man die Pakete fuer den "falschen" perl.
Will jetzt nicht gegen cpanm Front machen, nur klarstellen.

Btw. inzwischen gibt es auch perl 5.26, mAn waere sinnvoll 5.26 auch zu testen, und falls ok, dann eher auf 5.26 "upgraden", und nicht auf 5.20 "downgraden".

fhemxperte

Vielen Dank für die Info, das war mir so nicht bewusst.

5.26 habe ich parallel auch bereits installiert. Nur zum Testen erstmal 5.20 genommen. In ein paar Tagen werde ich dann auf 5.26 switchen.

Zum Thema "Autostart von Perlbrew" habe ich bereits einige Versuche unternommen, allerdings noch nichts brauchbares bauen können. :(