Fhem auf FB 7390 nicht erreichbar. Nach manuellem Start "Segmentation Fault"

Begonnen von sTaN, 17 Mai 2014, 12:57:26

Vorheriges Thema - Nächstes Thema

sTaN

Hallo Zusammen,

ich wollte heute wie gewohnt meine Geräte über die Fernbedienung anschalten und nichts passierte. Nach Aufruf des Webfrontend stellte ich fest, dass Fhem nicht erreichbar ist.
Ein ./startfhem über ssh brachte leider nur den Fehler "Segmentation Fault". Auch ein Reboot der FritzBox half nicht. Ich hatte auch die fhem.save in fhem.save_old umbenannt. Aber gleiches Problem. Fhem läuft auf der FB7390 im NAND Speicher. Mein CUL blinkt normal wie immer.

Wie bekomme ich fhem wieder zum Laufen und wie prüfe ich am Besten, warum es sich nicht starten lässt bzw. evtl. abgestürzt ist?
Im Logfile fhem-2014-05.log sehe ich als letzte Aktion nur das Ausschalten der Geräte in der Nacht (da funktionierte noch alles)

Hoffe auf Unterstützung.
Grüße
sTaNy
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

rudolfkoenig

Waehl dich per telnet ein, dann
# cd /var/InternerSpeicher/fhem
# . startfhem
(Meldungen ignorieren)
# ./perl -V

Falls dann Segmentation fault kommt, dann sind irgendwelche Perl-Bibliotheken auf der Platte korrupt, und man sollte die Platte neu formatieren, und FHEM neu installieren. Hoffentlich ist fhem.cfg noch heile, das wuerde ich vorher retten.

sTaN

Danke für die schnelle Rückmeldung:
# cd /var/InternerSpeicher/fhem/
# Servername:/var/media/ftp/fhem# ./startfhem
Segmentation fault
#Servername:/var/media/ftp/fhem# ./perl -V
./perl: can't load library 'libnsl.so.0'

Das sieht wohl leider nicht gut aus? Fhem.cfg habe ich gesichert. Ich frage mich nur was in der Nach passiert ist.
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

rudolfkoenig

Bitte genau lesen und wiederholen. Tipp: NICHT ./startfhem, sondern: . startfhem

sTaN

Ohje. Kleiner aber feiner Unterschied. Wo genau ist der Unterschied in diesem Startbefehl?
Folgende Ausgabe habe ich nun erhalten:
#Servername:/var/media/ftp/fhem# . startfhem
Segmentation fault
#Servername:/var/media/ftp/fhem# ./perl -V
Summary of my perl5 (revision 5 version 12 subversion 2) configuration:
   
  Platform:
    osname=linux, osvers=2.6.28.10, archname=mips-linux
    uname='linux fritz.fonwlan.box 2.6.28.10 #5 fri nov 12 14:01:45 cet 2010 mips gnulinux '
    config_args='-des'
    hint=previous, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-fno-strict-aliasing -pipe -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    ccversion='', gccversion='4.4.4', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =''
    libpth=/lib /usr/lib
    libs=-lnsl -ldl -lm -lcrypt -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lc
    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2'


Characteristics of this binary (from libperl):
  Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
                        USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
  Built under linux
  Compiled at Feb 10 2011 16:33:41
  %ENV:
    PERL5LIB="/var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux:/var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2:/var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux:/var/InternerSpeicher/fhem/lib/perl5/5.12.2"
  @INC:
    /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux
    /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux
    /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2
    /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux
    /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux
    /var/InternerSpeicher/fhem/lib/perl5/5.12.2
    /opt/lib/perl5/site_perl/5.12.2/mips-linux
    /opt/lib/perl5/site_perl/5.12.2
    /opt/lib/perl5/5.12.2/mips-linux
    /opt/lib/perl5/5.12.2
    .
Servername:/var/media/ftp/fhem#

Nun ist Fhem wieder erreichbar aber mit einer scheinbar originalen fhem.cfg. Ich habe nun mein Backup zurück kopiert. Muss ich nun . startfhem ausführen oder wieder ./startfhem, um die Backup-cfg zu laden?

Gruß
sTaNy
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

rudolfkoenig

. ist alias fuer source
Das es jetzt wieder laeuft, ist einem anderen (noch unbekannten) Effekt geschuldet.
Die "perl -V" Ausgabe zeigt, dass grundsaetzlich perl ok ist, und Segmentation fault entweder von einem anderen Programm, oder von einem der geladenen fhem Module verursacht wird. Letzteres sieht man mit "attr global verbose 5" im logfile, ersteres beim starten mit "sh -x startfhem".

Vorher sollte aber das gerade laufende FHEM per "shutdown" gesstoppt werden.

sTaN

Nachdem Einspielen meiner Backup-cfg habe ich in fhem shutdown restart angegeben und danach war fhem wieder nicht erreichbar.
Ich habe dann den Ordner fhem in fhem_courrupt umbenannt und das aktuelle Fhem-Image erneut über die Fritzbox geflasht. Dann meine Backup.cfg kopiert und er hat diese auch geladen (bis auf den Style im Webfrontend). Mache gerade ein update (musste erneut das attr für die Statistik setzen und die Meldung update-20130127-001 bestätigen).
Ich hoffe dieser Weg ist auch ok. Andernfalls kann ich gerne den alten Ordner wieder umbenennen und dem Fehler wie beschrieben auf die Schliche gehen. Ist außer dem Umbenennen dann noch etwas zu tun oder wäre dieser Weg soweit auch ok?

Gruß
sTaNy
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

sTaN

Nach dem Update von fhem, sieht zunächst alles beim alten aus. Allerdings ist fhem nun extrem langsam. Könnte auch daran gelegen haben, dass attr global verbose 5 gesetzt war. Nachdem ich meine fhem.cfg dem richtigen User mittels chown boxusr99 hem.cfg zugeordnet habe, konnte ich global verbose 3 setzen und wieder speichern. Allerdings schaltet nun meine Structure nicht.
Habe noch mals die Ordner zurück benannt, um in der corrupten Version weiter zu forschen. Nach dem Ausführen von sh -x startfhem erhielt ich folgende Ausgabe:
/var/media/ftp/fhem# sh -x startfhem
+ home=/var/InternerSpeicher/fhem
+ cd /var/InternerSpeicher/fhem
+ trap  SIGHUP
+ modprobe cdc_acm
+ modprobe ftdi_sio
+ sleep 2
+ ln -sf /var/InternerSpeicher/fhem/FHEM/fhemcmd.sh /var/fhemcmd
+ PATH=/var/InternerSpeicher/fhem:/var/InternerSpeicher/fhem:/var/InternerSpeicher/fhem:/sbin:/bin:/usr/sbin:/usr/bin:/etc/init.d:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin:/mod/etc/init.d
+ export PATH
+ export LD_LIBRARY_PATH=/var/InternerSpeicher/fhem/lib
+ export PERL5LIB=/var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux:/var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2:/var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux:/var/InternerSpeicher/fhem/lib/perl5/5.12.2
+ perl fhem.pl fhem.cfg
Segmentation fault


Kann ich fhem über die Konsole irgendwie stoppen? Bin mir nicht sicher, ob die die beiden Verzeichnisse jetzt in die Quere kommen oder nicht.

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

rudolfkoenig

Zitat+ perl fhem.pl fhem.cfg

Als naechstes in fhem.cfg "attr global verbose 5" setzen, und nochmal starten.
Vorher das evtl. laufende FHEMs unbeding stopppen.
Danach das FHEM-logfile (/var/InternerSpeicher/fhem/log/fhem-2014-05.log) anschauen.

ZitatKann ich fhem über die Konsole irgendwie stoppen?
# ps | grep fhem
1702 boxusr99 16268 S    perl fhem.pl fhem.cfg
# kill 1702

-> Achtung, 1702 ist vermutlich bei dir was anderes, entsprechend ersetzen.

sTaN

Irgendwie scheint sich die alte Fhem Instanz völlig verabschiedet zu haben. Verbose steht auf 5 aber das Logfile wird mit keinerlei Informationen gefüllt, nachdem ich Fhem erneut starte.
Habe nun die parallel installierte Version erfolgreich geupdated. Anschließend in der startfhem den Bereich auskommentiert, damit Fhem als root startet (sodass ich meine Gäste-WLAN und weitere FritzBox Funktionen ansprechen kann und zu guter Letzt war es nötig meine Dummys manuell auf einen Status zu setzen. (Sie hatten alle den Status ??? und dadurch wurden bestimmte Structures nicht geschaltet, da ich mit if auf den Status Abfrage).
Ich hätte zwar lieber herausgefunden, woran es gelegen hat aber nun funktioniert wieder alles.
Danke Rudolf für deine Unterstützung, du hast mir sehr geholfen!

Gruß und einen schönen Sonntag!
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover