From patchwork Sun Jun 5 19:03:20 2005 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wolfgang Rohdewald X-Patchwork-Id: 11906 Received: from natsmtp00.rzone.de ([81.169.145.165]) by www.linuxtv.org with esmtp (Exim 4.34) id 1Df0P5-0007n6-TY for vdr@linuxtv.org; Sun, 05 Jun 2005 21:03:23 +0200 Received: from wr.rohdewald.de (p548F8F95.dip0.t-ipconnect.de [84.143.143.149]) (authenticated bits=0) by post.webmailer.de (8.13.1/8.13.1) with ESMTP id j55J3LJX016595 for ; Sun, 5 Jun 2005 21:03:22 +0200 (MEST) From: Wolfgang Rohdewald To: vdr@linuxtv.org Date: Sun, 5 Jun 2005 21:03:20 +0200 User-Agent: KMail/1.7.2 MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200506052103.20520.wolfgang@rohdewald.de> Subject: [vdr] Bug/patch in transfer.c, 1.3.25 X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: wolfgang@rohdewald.de, Klaus Schmidinger's VDR List-Id: Klaus Schmidinger's VDR List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jun 2005 19:03:24 -0000 Status: O X-Status: X-Keywords: X-UID: 2802 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: 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 --- 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) {