Hi,
I've encountered an oops while using the generic usbserial driver to talk
to a USB device[1] I'm building. I need some help to determine if it's
my fault (I'm just beginning to learn about USB) or a bug on the driver side.
I'm using a 2.4.18 kernel with the preempt_kernel patch, usb-uhci and usbserial
loaded as modules. Apart from the single device, there's nothing on the USB.
The device (EzUSB/AN2131SC based) at the moment just outputs a "hello, world"
message on one of its bulk endpoints.
After loading the usbserial module, giving it my device's vendor and product
IDs, I run 'cat /dev/ttyUSB0'; this correctly displays the message stream.
When I hit CTRL-C, I get an oops. The machine locks up solid, so I had to
copy the message by hand; here's what I have:
> ksymoops 2.3.4 on i686 2.4.18. Options used
> -V (default)
> -k /proc/ksyms (default)
> -l /proc/modules (default)
> -o /lib/modules/2.4.18/ (default)
> -m /boot/System.map-2.4.18 (default)
>
> Warning: You did not tell me where to find symbol information. I will
> assume that the log matches the kernel and modules that are running
> right now and I'll use the default options above for symbol resolution.
> If the current kernel and/or modules do not match the log, you can get
> more accurate output by telling me the kernel version and where to find
> map, modules, ksyms etc. ksymoops -h explains the options.
>
> EIP: <e087636d>
> Using defaults from ksymoops -t elf32-i386 -a i386
> Trace: <e0876a24> <e0876d4a> <c1018a74> <c0108cb5> <c01051e0>
> <c010b0e3> <c01051e0> <c01051e0> <c010520c> <c0105272> <c0119aa6>
> <c0119964>
> Code: 8b 2c 90 8b 44 24 28 c1 e9 08 83 e1 0f d3 ed 83 e5 01 c7 44
>
> >>EIP; e087636d <[usb-uhci]process_transfer+51/2e0> <=====
> Trace; e0876a24 <[usb-uhci]process_urb+58/294>
> Trace; e0876d4a <[usb-uhci]uhci_interrupt+ea/168>
> Trace; c1018a74 <_end+ce4a28/20530014>
> Trace; c0108cb5 <do_IRQ+bd/128>
> Trace; c01051e0 <default_idle+0/34>
> Trace; c010b0e3 <call_do_IRQ+5/a>
> Trace; c01051e0 <default_idle+0/34>
> Trace; c01051e0 <default_idle+0/34>
> Trace; c010520c <default_idle+2c/34>
> Trace; c0105272 <cpu_idle+3e/54>
> Trace; c0119aa6 <release_console_sem+da/e0>
> Trace; c0119964 <printk+144/170>
> Code; e087636d <[usb-uhci]process_transfer+51/2e0>
> 00000000 <_EIP>:
> Code; e087636d <[usb-uhci]process_transfer+51/2e0> <=====
> 0: 8b 2c 90 mov (%eax,%edx,4),%ebp <=====
> Code; e0876370 <[usb-uhci]process_transfer+54/2e0>
> 3: 8b 44 24 28 mov 0x28(%esp,1),%eax
> Code; e0876374 <[usb-uhci]process_transfer+58/2e0>
> 7: c1 e9 08 shr $0x8,%ecx
> Code; e0876377 <[usb-uhci]process_transfer+5b/2e0>
> a: 83 e1 0f and $0xf,%ecx
> Code; e087637a <[usb-uhci]process_transfer+5e/2e0>
> d: d3 ed shr %cl,%ebp
> Code; e087637c <[usb-uhci]process_transfer+60/2e0>
> f: 83 e5 01 and $0x1,%ebp
> Code; e087637f <[usb-uhci]process_transfer+63/2e0>
> 12: c7 44 00 00 00 00 00 movl $0x0,0x0(%eax,%eax,1)
> Code; e0876386 <[usb-uhci]process_transfer+6a/2e0>
> 19: 00
>
>
> 1 warning issued. Results may not be reliable.
This seems to be very reproducible; the error is always a null pointer
dereference at 0x0000002c, but in varying processes (it occurs during an
interrupt, as far as I can tell).
I haven't yet tried to use the other UHCI driver to see if the problem
persists.
Greetings,
Jens.
[1] Just an EzUSB module with some blinkenlights, buttons, and dials;
I'm using it to revive a piece of obsolete hardware, and it probably
won't ever be of interest to somebody else.
--
mailto:[EMAIL PROTECTED] phone:+49-7031-464-7698 (TELNET 778-7698)
http://www.bawue.de/~jjk/ fax:+49-7031-464-7351
PGP: 06 04 1C 35 7B DC 1F 26 As the air to a bird, or the sea to a fish,
0x555DA8B5 BB A2 F0 66 77 75 E1 08 so is contempt to the contemptible. [Blake]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel