| Summary: | dc driver hangs in dc_rxeof | ||
|---|---|---|---|
| Product: | Base System | Reporter: | bill <bill> |
| Component: | kern | Assignee: | freebsd-bugs (Nobody) <bugs> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
Hi, does this problem still exists in a recent FreeBSD 4-STABLE system? Thanks Marc State Changed From-To: open->closed feedback timeout. |
My system hangs while doing large incoming data transfers via dc0. I can break into the debugger but I can't do anything else. Here's a backtrace. #14 0xc019787b in dc_rxeof (sc=0xc095f000) at /usr/src/sys/pci/if_dc.c:2365 #15 0xc0197edf in dc_intr (arg=0xc095f000) at /usr/src/sys/pci/if_dc.c:2640 #16 0xc020aa92 in slow_copyin () #17 0xc015d248 in sosend (so=0xc3d03480, addr=0x0, uio=0xc420fed8, top=0x0, control=0x0, flags=0, p=0xc3fa73c0) at /usr/src/sys/kern/uipc_socket.c:585 #18 0xc015178c in soo_write (fp=0xc09dbd00, uio=0xc420fed8, cred=0xc0a69180, flags=0, p=0xc3fa73c0) at /usr/src/sys/kern/sys_socket.c:81 #19 0xc014e3b1 in dofilewrite (p=0xc3fa73c0, fp=0xc09dbd00, fd=3, buf=0x8145004, nbyte=135088, offset=-1, flags=0) at /usr/src/sys/sys/file.h:163 #20 0xc014e26a in write (p=0xc3fa73c0, uap=0xc420ff80) at /usr/src/sys/kern/sys_generic.c:329 #21 0xc020c27d in syscall2 (frame={tf_fs = 47, tf_es = 47, tf_ds = 47, tf_edi = 134684360, tf_esi = -1077939264, tf_ebp = -1077939324, tf_isp = -1004470316, tf_ebx = 135088, tf_edx = 134682404, tf_ecx = 3, tf_eax = 4, tf_trapno = 0, tf_err = 2, tf_eip = 672976284, tf_cs = 31, tf_eflags = 642, tf_esp = -1077939368, tf_ss = 47}) at /usr/src/sys/i386/i386/trap.c:1150 #22 0xc01ffe65 in Xint0x80_syscall () #23 0x804ef42 in ?? () #24 0x804c7aa in ?? () #25 0x804c111 in ?? () #26 0x804af05 in ?? () I went into the debugger to see where things were going. It went through the dc_rxeof loop indefinitely, without ever exiting. In each iteration, ether_input got called. Beyond that, I'm clueless. :) Fix: None known. How-To-Repeat: Start this and wait: while :; do scp /usr/tmp/root.tmp twwells.com:/usr/tmp/root.tmp; done