[vdr] Bug/patch in transfer.c, 1.3.25

Wolfgang Rohdewald wolfgang at rohdewald.de
Sun Jun 5 21:03:20 CEST 2005


this might explain why vdr often dies when switching from/to a channel with DD sound -
like ZDF and Pro 7, at least I hope so. Not tested yet, but the bug seems clear enough:

--- xx  2005-06-05 20:59:08.000000000 +0200
+++ transfer.c  2005-06-05 20:59:16.000000000 +0200
@@ -68,7 +68,7 @@
   int Result = 0;
 #ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3
   bool GotBufferReserve = false;
-  int RequiredBufferReserve = KILOBYTE(DvbCardWith4MBofSDRAM ? 288 : 576);
+  int RequiredBufferReserve = KILOBYTE(DvbCardWith4MBofSDRAM ? 576 : 288);
 #endif
   active = true;
   while (active) {


Program received signal SIGILL, Illegal instruction.
[Switching to Thread 557063 (LWP 15183)]
0xb7db542e in main_arena () from /lib/libc.so.6
(gdb) bt
#0  0xb7db542e in main_arena () from /lib/libc.so.6
#1  0x0811db65 in cTransfer::Action (this=0xac88870) at transfer.c:84
#2  0x08114d9e in cThread::StartThread (Thread=0xac88990) at thread.c:233
#3  0xb7ea7e51 in pthread_start_thread () from /lib/libpthread.so.0
#4  0xb7ea7ecf in pthread_start_thread_event () from /lib/libpthread.so.0
#5  0xb7d5c92a in clone () from /lib/libc.so.6
(gdb) up
#1  0x0811db65 in cTransfer::Action (this=0xac88870) at transfer.c:84
84                 if (ringBuffer->Available() < RequiredBufferReserve) { // used to be MAXFRAMESIZE, but the HDTV value of KILOBYTE(512) is way too much here
Current language:  auto; currently c++
(gdb) p RequiredBufferReserve
$1 = 589824
(gdb) p DvbCardWith4MBofSDRAM
$4 = false



-- 
Wolfgang



More information about the vdr mailing list