kern/134401: Kernel Fatal trap 12: page fault while in kernel mode at boot time; if_msk eth device module

Vassilis Laganakos vassilis.laganakos at yahoo.com
Sun May 10 01:30:02 UTC 2009


>Number:         134401
>Category:       kern
>Synopsis:       Kernel Fatal trap 12: page fault while in kernel mode  at boot time; if_msk eth device module
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun May 10 01:30:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Vassilis Laganakos
>Release:        7.2-STABLE
>Organization:
>Environment:
FreeBSD argonaut 7.2-STABLE FreeBSD 7.2-STABLE #2: Wed May  6 00:42:41 BST 2009     root at argonaut:/usr/obj/usr/src/sys/ARGO  i386
>Description:
Frequently, ( 2 out of 5 times ) I get a kernel panic at boot time, when if_msk ethernet moduler is loaded (or if it is build in the kernel). If the module is not loaded, or the kernel is built without it, the problem goes away.

I noticed that right before the panic takes place, the msk0 device is configured but the reported MAC address id ff:ff:ff:ff:ff:ff and the last warning is no PHY found (If I remember correctly)

Looks similar to PR kern/128884, that was reported on FreeBSD 6.3.

Please see the backtrace and info from vmcore below:
----------------------------------------------------

GNU gdb 6.1.1 [FreeBSD]                         
Copyright 2004 Free Software Foundation, Inc.   
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.                                   
There is absolutely no warranty for GDB.  Type "show warranty" for details.  
This GDB was configured as "i386-marcel-freebsd"...                          

Unread portion of the kernel message buffer:


Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00                       
fault virtual address   = 0x188               
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0xc060e9e4                  
stack pointer           = 0x28:0xe9319b48                  
frame pointer           = 0x28:0xe9319b60                  
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1    
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 13157 (ifconfig)                   
trap number             = 12                                 
panic: page fault                                            
cpuid = 0                                                    
Uptime: 12m39s                                               
Physical memory: 3050 MB                                     
Dumping 128 MB: 113 97 81 65 49                              
<5>msk0: link state changed to UP                            
 33 17 1

Reading symbols from /boot/modules/nvidia.ko...done.
Loaded symbols for /boot/modules/nvidia.ko
Reading symbols from /boot/kernel/acpi.ko...Reading symbols from /boot/kernel/acpi.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/acpi.ko
Reading symbols from /boot/kernel/linux.ko...Reading symbols from /boot/kernel/linux.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/linux.ko
Reading symbols from /boot/kernel/warp_saver.ko...Reading symbols from /boot/kernel/warp_saver.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/warp_saver.ko
Reading symbols from /boot/kernel/if_msk.ko...Reading symbols from /boot/kernel/if_msk.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/if_msk.ko
#0  doadump () at pcpu.h:196
196             __asm __volatile("movl %%fs:0,%0" : "=r" (td));


(kgdb) list *0xc060e9e4
0xc060e9e4 is in _mtx_lock_sleep (/usr/src/sys/kern/kern_mutex.c:341).
336                      */
337                     v = m->mtx_lock;
338                     if (v != MTX_UNOWNED) {
339                             owner = (struct thread *)(v & ~MTX_FLAGMASK);
340     #ifdef ADAPTIVE_GIANT
341                             if (TD_IS_RUNNING(owner)) {
342     #else
343                             if (m != &Giant && TD_IS_RUNNING(owner)) {
344     #endif
345                                     if (LOCK_LOG_TEST(&m->lock_object, 0))

(kgdb) bt
#0  doadump () at pcpu.h:196
#1  0xc061cb37 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418
#2  0xc061ce09 in panic (fmt=Variable "fmt" is not available.
) at /usr/src/sys/kern/kern_shutdown.c:574
#3  0xc0895e7c in trap_fatal (frame=0xe9319b08, eva=392) at /usr/src/sys/i386/i386/trap.c:939
#4  0xc08960e0 in trap_pfault (frame=0xe9319b08, usermode=0, eva=392) at /usr/src/sys/i386/i386/trap.c:852
#5  0xc0896a62 in trap (frame=0xe9319b08) at /usr/src/sys/i386/i386/trap.c:530
#6  0xc087bb7b in calltrap () at /usr/src/sys/i386/i386/exception.s:159
#7  0xc060e9e4 in _mtx_lock_sleep (m=0xc898727c, tid=3340514400, opts=0, file=0x0, line=0) at /usr/src/sys/kern/kern_mutex.c:339
#8  0xc06f4ba6 in in_control (so=0xc712b000, cmd=2149607705, data=0xc7849960 "msk0", ifp=0xc69c6c00, td=0xc71c3460)
    at /usr/src/sys/netinet/in.c:525
#9  0xc06b81b8 in ifioctl (so=0xc712b000, cmd=2149607705, data=0xc7849960 "msk0", td=0xc71c3460) at /usr/src/sys/net/if.c:2017
#10 0xc065cb9a in soo_ioctl (fp=0xc75ff474, cmd=2149607705, data=0xc7849960, active_cred=0xc6868500, td=0xc71c3460)
    at /usr/src/sys/kern/sys_socket.c:191
#11 0xc0655955 in kern_ioctl (td=0xc71c3460, fd=3, com=2149607705, data=0xc7849960 "msk0") at file.h:269
#12 0xc0655ab4 in ioctl (td=0xc71c3460, uap=0xe9319cfc) at /usr/src/sys/kern/sys_generic.c:571
#13 0xc0896435 in syscall (frame=0xe9319d38) at /usr/src/sys/i386/i386/trap.c:1090
#14 0xc087bbe0 in Xint0x80_syscall () at /usr/src/sys/i386/i386/exception.s:255
#15 0x00000033 in ?? ()
Previous frame inner to this frame (corrupt stack?)
-------------------------------------------------------------------------------
>How-To-Repeat:
Enable loading the if_msk module from boot/loader.conf and try booting a few times. The problem comes and goes randomly, without changing anything on the box.
Can be also generated, after booting a kernel that's built without it, and kldloading it later.
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list