irexec wird zum Zombie
irexec wird zum Zombie
Hallo,
ich habe mir auf meinem OpenSuse 11.2 System einen Medion X10 Infrarotempfänger eingerichtet.
Dies funktioniert auch soweit, wenn ich irw aufrufe.
Will ich aber andere Programme mithilfe von irexec steuern funktioniert dies anfangs, nach einer kurzen Zeit jedoch wird mir im Systemmonitor der zum irexec zugehörige lircd Prozess als Zombie angezeigt und es ist keine Eingabe mit der Infrarotfernbedinung mehr möglich.
Aufgrund eines Bugs im Kernel 2.6.31.12 verwende ich das Modul atilibusb.
Bei der Verwendung von OpenSuse 11.1 funktioniert alles problemlos.
Jemand eine Idee?
Danke & Gruß
inixlinux
ich habe mir auf meinem OpenSuse 11.2 System einen Medion X10 Infrarotempfänger eingerichtet.
Dies funktioniert auch soweit, wenn ich irw aufrufe.
Will ich aber andere Programme mithilfe von irexec steuern funktioniert dies anfangs, nach einer kurzen Zeit jedoch wird mir im Systemmonitor der zum irexec zugehörige lircd Prozess als Zombie angezeigt und es ist keine Eingabe mit der Infrarotfernbedinung mehr möglich.
Aufgrund eines Bugs im Kernel 2.6.31.12 verwende ich das Modul atilibusb.
Bei der Verwendung von OpenSuse 11.1 funktioniert alles problemlos.
Jemand eine Idee?
Danke & Gruß
inixlinux
Der lircd ist deshalb ein Zombie, weil der ihn aufrufende Prozess zwar noch läuft, aber noch nicht wait() oder waitpid() aufgerufen hat, um den Exitstatus abzufragen. Denn der lircd-Prozess wurde beendet.
Vermutlich sind das zwei unabhängige Fehler. Beende den Prozess, der den Zombie-lircd aufrief (kriegst du mit "pstree" raus). Danach startest du den lircd mit der Option -n von Hand. Dann geht er nämlich nicht in den Daemon-Mous und du bekommst die Fehler auf das Terminal, in dem du ihn gestartet hast.
Janka
Vermutlich sind das zwei unabhängige Fehler. Beende den Prozess, der den Zombie-lircd aufrief (kriegst du mit "pstree" raus). Danach startest du den lircd mit der Option -n von Hand. Dann geht er nämlich nicht in den Daemon-Mous und du bekommst die Fehler auf das Terminal, in dem du ihn gestartet hast.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
Rufe ich lircd -n auf erhalte ich beim starten von irexec diese Ausgabe auf der Konsole:
lircd-0.8.5[5223]: lircd(default) ready
lircd-0.8.5[5223]: accepted new client on /var/run/lirc/lircd
lircd-0.8.5[5223]: could not get file information for /dev/lirc
lircd-0.8.5[5223]: default_init(): No such file or directory
lircd-0.8.5[5223]: Failed to initialize hardware
lircd-0.8.5[5223]: removed client
Jedoch scheint es so als würde beim Aufruf lircd -n etwas anderes passieren wie wenn ich nur lircd aufrufe, da beim Aufruf von lircd kurzzeitig die Eingabe funktioniert, beim Aufruf von lircd -n funktioniert jedoch gar nichts.
lircd-0.8.5[5223]: lircd(default) ready
lircd-0.8.5[5223]: accepted new client on /var/run/lirc/lircd
lircd-0.8.5[5223]: could not get file information for /dev/lirc
lircd-0.8.5[5223]: default_init(): No such file or directory
lircd-0.8.5[5223]: Failed to initialize hardware
lircd-0.8.5[5223]: removed client
Jedoch scheint es so als würde beim Aufruf lircd -n etwas anderes passieren wie wenn ich nur lircd aufrufe, da beim Aufruf von lircd kurzzeitig die Eingabe funktioniert, beim Aufruf von lircd -n funktioniert jedoch gar nichts.
Unwahrscheinlich. Ich nutze jedenfalls schon ewig Vanilla-Kernels und habe so was noch nicht erlebt. Wichtig ist nur, dass du die Kernel-Konfiguration deines jetzt gerade laufenden Kernels als Basis benutzt. Also vor dem Kompilieren einmal im Kernelquellverzeichnis:inixlinux hat geschrieben:kann es dabei nicht passieren, dass irgendwelche besonderheiten von OpenSuse nicht mehr funktionieren?
Code: Alles auswählen
$ zcat /proc/config.gz >.config
$ make menuconfig
...
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
habe nun den kernel 2.6.33 installiert, und libusb 0.8.6 selbst kompiliert, jedoch werden beim kompilieren die kernel-sources des alten Kernels 2.6.31.12-0.1 verwendet.
Die Ausgabe von modinfo lirc_dev
Was muss ich ändern, damit die von Kernel 2.6.33 verwendet werden?
Danke
Die Ausgabe von modinfo lirc_dev
Code: Alles auswählen
filename: /lib/modules/2.6.33-0.1-pae/misc/lirc_dev.ko
alias: char-major-61-*
license: GPL
author: Artur Lipowski
description: LIRC base driver module
srcversion: 9AE4030D4032A953CF485F9
depends:
vermagic: 2.6.31.12-0.1-pae SMP mod_unload modversions 686
parm: debug:Enable debugging messages (bool)
Danke
Vermutlich musst du das Verzeichnis der libusb-Quellen von ./configure-Resten befreien und dann ./configure neu durchlaufen lassen. Das einfachste ist es dazu die libusb-Quellen einfach nochmal neu zu entpacken. Evtl. zeigt auch einfach nur der Link /usr/src/linux noch auf den alten Kernel.
Janka
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
Ich habe es so verstanden, dass libusb bei dir die include-Dateien des alten Kernels benutzt und es deshalb nicht funzt. Jetzt habe ich den Code-Ausschnitt oben nochmal genauer gelesen:
Du benutzt offensichtlich die Module von Kernel 2.6.31. Hast du "make modules_install" gemacht? Das sieht mir eher so aus, als hättest du das alte Modulverzeichnis einfach kopiert oder verlinkt.
Janka
Du benutzt offensichtlich die Module von Kernel 2.6.31. Hast du "make modules_install" gemacht? Das sieht mir eher so aus, als hättest du das alte Modulverzeichnis einfach kopiert oder verlinkt.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
habe den Kernel nochmal neu kompiliert mit make & make modules_install
Versuche ich nun lirc-0.8.6 zu kompilieren erhalte ich folgende Fehlermeldung:
Versuche ich nun lirc-0.8.6 zu kompilieren erhalte ich folgende Fehlermeldung:
Code: Alles auswählen
make[5]: *** [/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.o] Fehler 1
make[4]: *** [_module_/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev] Fehler 2
make[4]: Leaving directory `/usr/src/linux-2.6.33'
make[3]: *** [lirc_dev.o] Fehler 2
make[3]: Leaving directory `/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/media/Daten/temp/lirc-0.8.6/drivers'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/media/Daten/temp/lirc-0.8.6'
make: *** [all] Fehler 2
sry, dass ich mich erst so spät wieder melde hab aber die letzten Tage selbst versucht das Problem hinzubekommen, da meiner Ansicht nach make die Header-Dateien nicht findet.
Die Datei autogen.h, die make nicht findet ist allerdings genau an dieser Stelle vorhanden.
Muss ich noch irgendwelche Änderungen machen, wenn ich den Vanilla Kernel in OpenSuse zum laufen brignen will?
Das Verzeichnis /usr/sr/linux zeigt auf das Source Verzeichniss des Vanilla Kernels.
hier mal die Ausgabe von make:
Danke
Die Datei autogen.h, die make nicht findet ist allerdings genau an dieser Stelle vorhanden.
Muss ich noch irgendwelche Änderungen machen, wenn ich den Vanilla Kernel in OpenSuse zum laufen brignen will?
Das Verzeichnis /usr/sr/linux zeigt auf das Source Verzeichniss des Vanilla Kernels.
hier mal die Ausgabe von make:
Code: Alles auswählen
make all-recursive
make[1]: Entering directory `/media/Daten/temp/lirc-0.8.6'
Making all in drivers
make[2]: Entering directory `/media/Daten/temp/lirc-0.8.6/drivers'
Making all in lirc_dev
make[3]: Entering directory `/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev'
Makefile:8: **************************************************
Makefile:8: *** Makefile trick not undone, trying to recover *
Makefile:8: **************************************************
mv Makefile.automake Makefile
make all
make[4]: Entering directory `/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev'
cp ./../lirc_dev/Module*.symvers .
cp: Aufruf von stat für „./../lirc_dev/Module*.symvers“ nicht möglich: Datei oder Verzeichnis nicht gefunden
make[4]: [lirc_dev.o] Fehler 1 (ignoriert)
mv Makefile Makefile.automake
cp ./../Makefile.kernel Makefile
CPPFLAGS="" CFLAGS="" LDFLAGS="" \
make -C /lib/modules/2.6.33-0.1-pae/build/ SUBDIRS=/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev modules \
KBUILD_VERBOSE=1
make[5]: Entering directory `/usr/src/packages/BUILD/kernel-2.6.330.1pae'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo; \
echo " ERROR: Kernel configuration is invalid."; \
echo " include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
echo; \
/bin/false)
mkdir -p /media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/.tmp_versions ; rm -f /media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/.tmp_versions/*
make -f scripts/Makefile.build obj=/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev
gcc -Wp,-MD,/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/.lirc_dev.o.d -nostdinc -isystem /usr/lib/gcc/i586-suse-linux/4.4/include -I/usr/src/packages/BUILD/kernel-2.6.330.1pae/arch/x86/include -Iinclude -include include/generated/autoconf.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=2048 -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DIRCTL_DEV_MAJOR=61 -DEXPORT_SYMTAB -DHAVE_CONFIG_H -I. -I. -I../.. -I/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/. -I/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/ -I/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/../.. -I/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/../.. -I/lib/modules/2.6.33-0.1-pae/build//include/ -I/lib/modules/2.6.33-0.1-pae/build//drivers/media/video/ -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(lirc_dev)" -D"KBUILD_MODNAME=KBUILD_STR(lirc_dev)" -D"DEBUG_HASH=33" -D"DEBUG_HASH2=11" -c -o /media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/.tmp_lirc_dev.o /media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.c
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.c:35:28: error: linux/autoconf.h: Datei oder Verzeichnis nicht gefunden
In file included from /media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.c:72:
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h: In function ‘lirc_buffer_init’:
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h:88: warning: passing argument 1 of ‘kfifo_alloc’ makes pointer from integer without a cast
include/linux/kfifo.h:109: note: expected ‘struct kfifo *’ but argument is of type ‘unsigned int’
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h:88: warning: passing argument 3 of ‘kfifo_alloc’ makes integer from pointer without a cast
include/linux/kfifo.h:109: note: expected ‘gfp_t’ but argument is of type ‘struct spinlock_t *’
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h:88: warning: assignment makes pointer from integer without a cast
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h: In function ‘lirc_buffer_read’:
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h:185: error: implicit declaration of function ‘kfifo_get’
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h: In function ‘lirc_buffer_write’:
/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.h:206: error: implicit declaration of function ‘kfifo_put’
make[6]: *** [/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev/lirc_dev.o] Fehler 1
make[5]: *** [_module_/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev] Fehler 2
make[5]: Leaving directory `/usr/src/packages/BUILD/kernel-2.6.330.1pae'
make[4]: *** [lirc_dev.o] Fehler 2
make[4]: Leaving directory `/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev'
make[3]: *** [all] Fehler 2
make[3]: Leaving directory `/media/Daten/temp/lirc-0.8.6/drivers/lirc_dev'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/media/Daten/temp/lirc-0.8.6/drivers'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/media/Daten/temp/lirc-0.8.6'
make: *** [all] Fehler 2