Greetings,

I (and several others) have stumbled across a bug in the usb-uhci driver,
introduced in 2.4.10. It seems to center around ISO transfers (so a lot of
users of my PWC driver encounter it). It causes a rather nasty hang, but one
user managed to get me a good trace, which I�m printing below:

Unable to handle kernel paging request at virtual address ffffffdc
*pde = 00003063
Oops:  0000
CPU:     0
EIP:     0010:[<c020e141>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS:  00010207
eax: 00000000  ebx: d241c4c8  eax: 00000003  edx: c0367dc0
esi: 00000000  edi: d241c2c0  ebp: e7b5a0c0  esp: c02b5ed0
ds: 0018  es: 0018  ss: 0018
Process swapper (pid: 0, stackpage=c02b5000)
Stack: d241c4c8  d241c2c0  00000000  e7eb2580  00000010  da36bf60  00000000 
00000001
       c020e2c9  e7eb2580  d241c2c0  00000000  d241c4c8  e7eb2580  00000000 
00000000
       00000001  c011dee6  00000001  00000000  c020e55a  e7eb2580  d241c2c8 
e7eaba00
Call trace: [<c020e2c9>] [<c011dee6>] [<c020e55a>] [<c0108401>] [<c01085e6>]
            [<c01051b0>] [<c01051b0>] [<c010a6e8>] [<c01051b0>] [<c01051b0>]
[<c01051dc>]
            [<c0105242>] [<c0105000>] [<c0105043>]
Code: 8b 46 dc 8d 6e d8 a9 00 00 80 00 74 39 25 ff ff 7f ff 89 46
 
>>EIP; c020e141 <process_iso+65/184>   <=====
Trace; c020e2c9 <process_urb+69/22c>
Trace; c011dee6 <timer_bh+36/2cc>
Trace; c020e55a <uhci_interrupt+ce/130>
Trace; c0108401 <handle_IRQ_event+4d/78>
Trace; c01085e6 <do_IRQ+a6/ec>
Trace; c01051b0 <default_idle+0/34>
Trace; c01051b0 <default_idle+0/34>
Trace; c010a6e8 <call_do_IRQ+5/d>
Trace; c01051b0 <default_idle+0/34>
Trace; c01051b0 <default_idle+0/34>
Trace; c01051dc <default_idle+2c/34>
Trace; c0105242 <cpu_idle+3e/54>
Trace; c0105000 <_stext+0/0>
Trace; c0105043 <rest_init+43/44>
Code;  c020e141 <process_iso+65/184>
00000000 <_EIP>:
Code;  c020e141 <process_iso+65/184>   <=====
   0:   8b 46 dc                  mov    0xffffffdc(%esi),%eax   <=====
Code;  c020e144 <process_iso+68/184>
   3:   8d 6e d8                  lea    0xffffffd8(%esi),%ebp
Code;  c020e147 <process_iso+6b/184>
   6:   a9 00 00 80 00            test   $0x800000,%eax
Code;  c020e14c <process_iso+70/184>
   b:   74 39                     je     46 <_EIP+0x46> c020e187
<process_iso+ab/184>
Code;  c020e14e <process_iso+72/184>
   d:   25 ff ff 7f ff            and    $0xff7fffff,%eax
Code;  c020e153 <process_iso+77/184>
  12:   89 46 00                  mov    %eax,0x0(%esi)
 
<0> kernel panic: Aiee, killing interrupt handler!
 
83 warnings and 3 errors issued.  Results may not be reliable.



The offending instruction is in usb-uhci.c, line 2548:

                if (is_td_active(desc)) {                                   

is_td_active() is actually a #define, testing a bit in desc->hw.td.status,
which appearantly is a NULL pointer. Other reports were not so clear, but
point at the same function (4 calls below do_IRQ, same code bytes).

The uhci module (which I normally use) works fine; 2.4.9 also works fine. So
I doubt it�s my driver [*]. The crash occurs instantly when trying to use the
webcam.

I�ll try and investigate myself, but I�m a little short on time. I hope
someone with more knowledge of the usb-uhci module can find the bug soon.

 - Nemosoft

[*] Nevertheless, I always seem to manage to trigger bugs in other people�s
code :))))

-----------------------------------------------------------------------------
Try SorceryNet!   One of the best IRC-networks around!   irc.sorcery.net:9000
URL: never        IRC: nemosoft      IscaBBS (bbs.isca.uiowa.edu): Nemosoft
                        >> Never mind the daylight << 

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to