Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Demux stops to work when tuning too many time



Valsecchi Patrick wrote:
> The oops is in attachment, but I don't think it will help.
...
> Jan 13 15:59:59 pc0125 kernel: DVB: registering new adapter (TT-Budget/WinTV-NOVA-C  PCI).
> Jan 13 15:59:59 pc0125 kernel: adapter has MAC addr = 00:d0:5c:02:55:23
> Jan 13 15:59:59 pc0125 kernel: DVB: registering frontend 0 (VLSI VES1820 DVB-C)...
...
> Jan 13 16:00:00 pc0125 kernel: EIP is at dvb_demux_poll+0x3d/0x80 [dvb_core]
> Jan 13 16:00:00 pc0125 kernel: eax: e0a84064   ebx: e0a84000   ecx: 00000000   edx: ffffffea
> Jan 13 16:00:00 pc0125 kernel: esi: 00000000   edi: d097a060   ebp: 0000000a   esp: cf81bed8
> Jan 13 16:00:00 pc0125 kernel: ds: 007b   es: 007b   ss: 0068
> Jan 13 16:00:00 pc0125 kernel: Process upilio (pid: 4513, threadinfo=cf81a000 task=d2383a60)
> Jan 13 16:00:00 pc0125 kernel: Stack: c03c1720 c029e1e9 d4d61a60 d097a060 00000400 0000000a c01633af d097a060 
> Jan 13 16:00:00 pc0125 kernel:        00000000 00000000 00000000 00003c20 00000000 00000000 00000020 00000145 
> Jan 13 16:00:00 pc0125 kernel:        00003c20 cf81a000 c8c6b30c c8c6b308 c8c6b304 c8c6b314 c8c6b310 c8c6b30c 
> Jan 13 16:00:00 pc0125 kernel: Call Trace:
> Jan 13 16:00:00 pc0125 kernel:  [sock_poll+41/64] sock_poll+0x29/0x40
> Jan 13 16:00:00 pc0125 kernel:  [do_select+607/720] do_select+0x25f/0x2d0
> Jan 13 16:00:00 pc0125 kernel:  [__pollwait+0/208] __pollwait+0x0/0xd0
> Jan 13 16:00:00 pc0125 kernel:  [sys_select+731/1264] sys_select+0x2db/0x4f0
> Jan 13 16:00:00 pc0125 kernel:  [syscall_call+7/11] syscall_call+0x7/0xb
> Jan 13 16:00:00 pc0125 kernel: Code: 24 1c 89 74 24 10 31 f6 89 5c 24 0c 8b 5f 7c 85 db 74 40 85 c9 8d 43 64 74 11 85 c0 74 0d 89 4c 24 08 89 44 24 04 89 3c 24 ff 11 <8b> 43 4c 31 d2 83 e8 03 83 f8 02 77 1b 8b 43 6c 85 c0 b8 4b 00 

If I interpreted the disassembly correct if trips when it wants to
access dmxdevfilter->state in dvb_demux_poll(), while the
  poll_wait(file, &dmxdevfilter->buffer.queue, wait);
worked. ebx: e0a84000 would be dmxdevfilter, but I don't know if
0xe0a84000 is valid, i.e. in the range of addresses returned by vmalloc().

Anyway, dvb_dmxdev_init() does dvb_register_device() only after
the dmxdevfilters have successfully been allocated and
initialized, i.e. you can't open() an uninitialized device.
I have no explanation for the Oops.

(I wonder where the sock_poll in the call trace comes from; if
you compiled your kernel without frame pointer that could explain it.)

Johannes




Home | Main Index | Thread Index