Mailing List archive

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

[linux-dvb] Re: WinTV nova problem?



rjkm@convergence.de(Ralph Metzler)  17.10.01 03:33

Once upon a time Ralph Metzler shaped the electrons to say...

>Rainer Zocholl writes:
>>>> Jepp. But the problem seems not to be in the application.
>>
>>>Why?
>>
>> Because i got too kernel panics from the driver while
>> in the interrupt.
>> Always in a (one of several) memcpy) routines.


>It would help to know in what kind of filter this occurs.
>Is VDR using section filters a the same time?
>Is VDR using the DVR device (TS) or PES streams coming from the demux
>device?

Sorry, i don't know. Maybe can Klaus tell this?
I just simply recorded WDR TV or so.


>I think VDR uses the DVR device but in this case the copy routines
>are really simple and I don't know what could go wrong there.

I saw in all Oopses, that it was in a "rep mov" operation.
Always "EDI" (Destination) is at xxxxxFFF, meaning that a page 
wrap (maybe 64k wrap?) will occure in the next "mov" operation.
"ECX" (amount) alwys have still big values >> 4k to copy left.


>If section filters are used at the same time the problem is more
>likely to be in the section filter routines in dvb_demux.c.
>I tried to write them in such a way that they don't cause
>overflows even if the data is corrupt but there still could be
>bugs in there.

I doubled the 4096 buffer because on one place
"3+" (inline section_len) is counted. I got no oopses, but VDR complaints about
bad data. But "oopses" are real seldom. (Once in an hour or day..)


dvb_demux.h:        u8 secbuf[4096];
dvb_demux.h:        u8 secbuf[2*4096];

dvb_demux.c:        section_length(const u8 *buf)
dvb_demux.c:        	return 3+((buf[1]&0x0f)<<8)+buf[2];

I did not analayze the code in deep, but section_length
can become "4096+3".


>> For example:
>> "objdump -D -S dvbdemux.o"
>> would have helped a lot, but i did not know that trick.


>I would really need a ksymoops dump and an "objdump -D -S dvb_demux.o"
>of the same routine to show me where exactly the oops occurs.

Next time i'll do. Promissed (of cause)

I do have only this:

  Unable to handle kernel paging request at virutal address d949e000
printing 
eip: *d92287d3*
*pde 16563067
*pte 00000000
oops: 0002
Cpu: 0
EIP: 0010:[{d92287d3}]
EFLAGS: 000101221
eax: ffffffc5 ebx: d938806c ecx: *3ffbe8ad* edx:00000232
esi: d8ebf0e3 edi: *d948dfff* ebp: fffffc5 esp:d6881f04

process vdr ....
(most often "swapper")

....Stack dump (see .jpg)

call trace: 
d9244afc d922cdf5 d9244d90 d9244afc d891b0c0 d92336d70 d8910c0 
d9236d70 d891b0c0 d9244afc d891b0c0 d89191dd d891b0c0
d9244afc c0107d7d d891b0c0 c0107eae c0109d48

Code:
f3 a5 a8 02 74 02 66 a5 a8 01 74 01 a4 01 ab 5c 10 00 00 8b
(see dissassemly below)

(0) Kernel panic: Aieee, killing interrupt handler.
In interrupt handler - not syncing.

-----
                f3 a5                   repz movsl %ds:(%esi),%es:(%edi)
                a8 02                   test   $0x2,%al
                74 02                   je     8049414 <acOoops+0x8>
                66 a5                   movsw  %ds:(%esi),%es:(%edi)
                a8 01                   test   $0x1,%al
                74 01                   je     8049419 <acOoops+0xd>
                a4                      movsb  %ds:(%esi),%es:(%edi)
                01 ab 5c 10 00 00       add    %ebp,0x105c(%ebx)
                8b                      .byte 0x8b

(Typo included?)
-----

d9228000  __insmod_dvb_demux_Odvb_demux.o_M3BB3A31B_V132106  [dvb_demux]
d9228060  __insmod_dvb_demux_S.text_L8979   [dvb_demux]
d9228060  dmx_register_demux                [dvb_demux]
d92280f4  dmx_unregister_demux              [dvb_demux]
d9228164  dmx_get_demuxes                   [dvb_demux]
d922817c  dvb_crc32                         [dvb_demux]
d92281b4  dvb_set_crc32                     [dvb_demux]
d922825c  DvbDmxSWFilterPackets             [dvb_demux]
*d92287d3*  <<<----------------------------------------- Ooooops
d9229bf0  DvbDmxInit                        [dvb_demux]
d9229e10  DvbDmxRelease                     [dvb_demux]
d9229e48  DvbDmxSWFilterPacket              [dvb_demux]
d922a3a0  __insmod_dvb_demux_S.data_L1056   [dvb_demux]
d922a3a0  dmx_muxs                          [dvb_demux]

d922c000  __insmod_dvb_Odvb.o_M3BB3AC74_V132106  [dvb]
d922c060  __insmod_dvb_S.text_L45159        [dvb]
d922ccf0  IR_handle                         [dvb]
d922cd04  CI_handle                         [dvb]
d922db20  SendCICommand                     [dvb]


d922425c  set_up_grabbing                   [saa7146_v4l]
d92242e8  saa7146_std_grab_irq_callback_rps0  [saa7146_v4l]
d9224404  calculate_clipping_registers_mask  [saa7146_v4l]
d92244cc  set_pixel                         [saa7146_v4l]
d9224518  set_box                           [saa7146_v4l]

c0107d78  disable_irq
c0107dcc  enable_irq
c0107ef0  request_irq
c0107f94  free_irq
c010800c  probe_irq_on
c01080f8  probe_irq_mask
c010815c  probe_irq_off
c0108414  disable_irq_mhonarcnc
c010af30  do_gettimeofday




-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.


Home | Main Index | Thread Index