Ab und zu segfaultet VDR beim Druck auf eine Fernbedienungtaste.
Für die Fernbedienung läuft das usbremote plugin.
Hier ein Core vom segfault.
Zuerst kommt eine lange Liste, welche debuginfos fehlen, dann:
Code
Core was generated by `./vdr -w 120 -d -m -v /video/video -c /video/video -s /z/nvram-wakeup/VDR/vdrsh'.
Program terminated with signal 11, Segmentation fault.
#0 cRemoteUSB::Action (this=0x0) at usbremote.c:97
97 cCondWait::SleepMs(_polldelay);
(gdb) bt
#0 cRemoteUSB::Action (this=0x0) at usbremote.c:97
#1 0x000000000050996d in cThread::StartThread (Thread=0x1711c50) at thread.c:262
#2 0x00007f3388d17e0f in start_thread () from /lib64/libpthread.so.0
#3 0x00007f33877577dd in clone () from /lib64/libc.so.6
der Auszug aus usbremote.c, die drittletzte Zeile ist die 97.:
Code
// ---------------------------------------------------------------------------
void cRemoteUSB::Action(void)
// ---------------------------------------------------------------------------
{
cTimeMs FirstTime,LastTime;
uint64_t code, lastcode = INVALID_KEY;
for (;;)
{
if (_polldelay)
cCondWait::SleepMs(_polldelay);
code = getKey();
//getStaticKeys();
if (code == INVALID_KEY){
cCondWait::SleepMs(_polldelay);
continue;
}
Alles anzeigen
dabei ist int _polldelay = 50;
Interpretiere ich das richtig, dass die VDR Funktion cCondWait::SleepMs(_polldelay) bzw. cCondWait::Wait der Schuldige ist, oder liegt es am usbremote plugin?
Kann ich irgendwas tun, um weiter zu debuggen, oder ist das ein Fall für Klaus?