fwip -> kernel panic

Sean Bruno seanbru at yahoo-inc.com
Tue Feb 16 03:01:00 UTC 2010


On Sun, 2010-02-14 at 17:53 -0800, Julian Stecklina wrote:
> Hello,
> 
> -STABLE r203907 (amd64) reliable panics when I connect my FreeBSD box to
> a Linux box using Firewire and do:
> 
> linux% ifconfig firewire0 up 10.0.0.1 && nc -l -p 9123
> fbsd% ifconfig fwip0 up 10.0.0.2 ; echo hello | nc 10.0.0.1 9123
> 
> Details follow:
> 
> kernel trap 12 with interrupts disabled
> 
> 
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address	= 0xffff0212
> fault code		= supervisor write data, page not present
> instruction pointer	= 0x20:0xffffffff803db410
> stack pointer	        = 0x28:0xffffff80af3d5890
> frame pointer	        = 0x28:0xffffff80af3d58d0
> code segment		= base 0x0, limit 0xfffff, type 0x1b
> 			= DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags	= resume, IOPL = 0
> current process		= 0 (fw0_taskq)
> lock order reversal: (Giant after non-sleepable)
>  1st 0xffffff008520de10 lle (lle) @ /usr/src/sys/netinet/in.c:1455
>  2nd 0xffffffff8091ac20 Giant (Giant) @ /usr/src/sys/dev/usb/input/ukbd.c:1594
> KDB: stack backtrace:
> Physical memory: 6128 MB
> 
> #0  doadump () at pcpu.h:223
> #1  0xffffffff801c702c in db_fncall (dummy1=Variable "dummy1" is not available.
> ) at /usr/src/sys/ddb/db_command.c:548
> #2  0xffffffff801c7361 in db_command (last_cmdp=0xffffffff808ea8a0, cmd_table=Variable "cmd_table" is not available.
> ) at /usr/src/sys/ddb/db_command.c:445
> #3  0xffffffff801c75b0 in db_command_loop () at /usr/src/sys/ddb/db_command.c:498
> #4  0xffffffff801c9509 in db_trap (type=Variable "type" is not available.
> ) at /usr/src/sys/ddb/db_main.c:229
> #5  0xffffffff803f6715 in kdb_trap (type=12, code=0, tf=0xffffff80af3d57e0) at /usr/src/sys/kern/subr_kdb.c:535
> #6  0xffffffff8064c0bd in trap_fatal (frame=0xffffff80af3d57e0, eva=Variable "eva" is not available.
> ) at /usr/src/sys/amd64/amd64/trap.c:852
> #7  0xffffffff8064cae9 in trap (frame=0xffffff80af3d57e0) at /usr/src/sys/amd64/amd64/trap.c:348
> #8  0xffffffff80633e13 in calltrap () at /usr/src/sys/amd64/amd64/exception.S:224
> #9  0xffffffff803db410 in callout_reset_on (c=0xffffff008520de78, to_ticks=1200000, ftn=0xffffffff8047add0 <arptimer>, arg=0xffffff008520de00, cpu=0)
>     at /usr/src/sys/kern/kern_timeout.c:603
> #10 0xffffffff8047bcbc in arpintr (m=0xffffff00041d8b00) at /usr/src/sys/netinet/if_ether.c:698
> #11 0xffffffff80473392 in netisr_dispatch_src (proto=7, source=Variable "source" is not available.
> ) at /usr/src/sys/net/netisr.c:917
> #12 0xffffffff8046c4cc in firewire_input (ifp=0xffffff00016cf800, m=0xffffff00041d8b00, src=Variable "src" is not available.
> ) at /usr/src/sys/net/if_fwsubr.c:630
> #13 0xffffffff802837c1 in fwip_stream_input (xferq=0xffffff80003592a0) at /usr/src/sys/dev/firewire/if_fwip.c:858
> #14 0xffffffff80281119 in fwohci_task_dma (arg=Variable "arg" is not available.
> ) at /usr/src/sys/dev/firewire/fwohci.c:2247
> #15 0xffffffff80401891 in taskqueue_run (queue=0xffffff0003aa0380) at /usr/src/sys/kern/subr_taskqueue.c:239
> #16 0xffffffff80401a1f in taskqueue_thread_loop (arg=Variable "arg" is not available.
> ) at /usr/src/sys/kern/subr_taskqueue.c:360
> #17 0xffffffff803a6692 in fork_exit (callout=0xffffffff804019e0 <taskqueue_thread_loop>, arg=0xffffff8000356898, frame=0xffffff80af3d5c80)
>     at /usr/src/sys/kern/kern_fork.c:843
> #18 0xffffffff806342ee in fork_trampoline () at /usr/src/sys/amd64/amd64/exception.S:561
> 
> 

Hrm ... fantastic!  :(  Looks like something is defnitely amiss in my
changes.  You may want to look through some of the history and start
reverting things.

I think that this is an endian issue.  Is there any chance the linux box
is 32 bit?

Sean



More information about the freebsd-firewire mailing list