On Thu, 21 Nov 2002, Stuart MacDonald wrote:
| Oops attached below.
|
| The scenario: I've got a WhiteHEAT plugged in, and # cu -l /dev/ttyUSB0. The far side
| is sending a small text file across, which cu is displaying as it arrives. During
|the transfer I
| unplug the WhiteHEAT.
(can you make those lines a bit shorter...?)
and this causes /sbin/hotplug to be run with a "remove" verb.
| Sometimes I get this oops, sometimes I don't. It's always identical, the EIP in
|copy_flags is
Do you mean EIP in copy_files ?
| always the same. Tracing from my driver shows nearly identical behaviour in both
|cases,
| so I don't think it's something my driver is doing.
No, so far in my looking it looks like your driver wouldn't have much to
say about it.
| Any ideas on this one?
SMP or uniproc? what processor type (precisely)?
The code offsets in do_fork() and copy_files() don't match my .o files.
Oh, what compiler version?
I'll try to rebuild my fork.o file to match yours.
It _looks_ to me like it's having a problem with this loop in
copy_files, but I could be a bit off:
for (i = open_files; i != 0; i--) {
struct file *f = *old_fds++;
if (f)
get_file(f);
*new_fds++ = f;
}
and that <f> in "if (f)" is -1. Even if that much is correct, I don't
know how that would happen.
But since you a testing this many times anyway, how about changing that to:
if (!IS_ERR(f))
and see what happens. That will just skip calling get_file() if
f is -1 (or any negative value between -1000 and -1).
| Just general module un/loading badness?
|
| ..Stu, willing to test, etc...
|
| ksymoops 2.4.1 on i686 2.4.19-wh. Options used
| -v /usr/src/linux/vmlinux (specified)
| -k /var/log/ksymoops/20021121212607.ksyms (specified)
| -l /var/log/ksymoops/20021121212607.modules (specified)
| -o /lib/modules/2.4.19-wh/ (default)
| -m /usr/src/linux/System.map (specified)
|
| Warning (compare_maps): mismatch on symbol studog_debug , whiteheat says c883c3c0,
|/lib/modules/2.4.19-wh/kernel/drivers/usb/serial/whiteheat.o says c883c140. Ignoring
| /lib/modules/2.4.19-wh/kernel/drivers/usb/serial/whiteheat.o entry
| Unable to handle kernel NULL pointer dereference at virtual address 00000013
| c01177e1
| *pde = 00000000
| Oops: 0002
| CPU: 0
| EIP: 0010:[<c01177e1>] Not tainted
| Using defaults from ksymoops -t elf32-i386 -a i386
| EFLAGS: 00010286
| eax: ffffffff ebx: c6219c00 ecx: c742187c edx: 000000e2
| esi: c6219900 edi: c6219c40 ebp: c7f97078 esp: c60edf40
| ds: 0018 es: 0018 ss: 0018
| Process hotplug (pid: 1607, stackpage=c60ed000)
| Stack: 000001c2 00000008 bffff6d8 c0132691 00000100 c742187c c62198c0 00000000
| 00000011 00000001 c60e8000 c0117be6 00000011 c60e8000 fffffff4 00000000
| c60edf60 00000006 00000725 00000000 c60ec000 c60edfa8 bffff700 c60ec000
| Call Trace: [<c0132691>] [<c0117be6>] [<c0107535>] [<c0108b0b>]
| Code: f0 ff 40 14 89 45 00 83 c5 04 4a 75 e2 8b 44 24 18 f0 ff 40
|
| >>EIP; c01177e1 <copy_files+1d1/2c0> <=====
| Trace; c0132691 <__alloc_pages+41/180>
| Trace; c0117be6 <do_fork+316/800>
| Trace; c0107535 <sys_fork+15/20>
| Trace; c0108b0b <system_call+33/38>
| Code; c01177e1 <copy_files+1d1/2c0>
| 00000000 <_EIP>:
| Code; c01177e1 <copy_files+1d1/2c0> <=====
| 0: f0 ff 40 14 lock incl 0x14(%eax) <=====
| Code; c01177e5 <copy_files+1d5/2c0>
| 4: 89 45 00 mov %eax,0x0(%ebp)
| Code; c01177e8 <copy_files+1d8/2c0>
| 7: 83 c5 04 add $0x4,%ebp
| Code; c01177eb <copy_files+1db/2c0>
| a: 4a dec %edx
| Code; c01177ec <copy_files+1dc/2c0>
| b: 75 e2 jne ffffffef <_EIP+0xffffffef> c01177d0
|<copy_files+1c0/2c0>
| Code; c01177ee <copy_files+1de/2c0>
| d: 8b 44 24 18 mov 0x18(%esp,1),%eax
| Code; c01177f2 <copy_files+1e2/2c0>
| 11: f0 ff 40 00 lock incl 0x0(%eax)
|
|
| 1 warning issued. Results may not be reliable.
--
~Randy
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel