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