Panic on RELENG_4_10 running multiple jail()'s with separate vn-disks

Hans Allis hans at vectorclass.net
Wed Sep 21 10:20:53 PDT 2005


Running a server with multiple jail()'s each using their own vnode  
disk image and having
panics from time to time. Each jail() has its own /proc mounted. A  
backtrace of the first and
only dump I've got is attached below. The relevant lines of miscfs/ 
procfs/procfs_status.c
are also attached below.

The kernel is from RELENG_4_10 from early May, but the miscfs/procfs/ 
procfs_status.c file
hasn't changed since December 2004 in the CVS-repository. I assume  
that this makes the
fact of the kernel being  somewhat old irrelevant, but please correct  
me if I'm wrong. If
considered necessary, I will of course cvsup to the latest RELENG_4  
and wait for the next
panic, but I assume that this wouldn't make much of a difference.


kgdb:

<<<EOD
(kgdb) bt
#0  dumpsys () at ../../kern/kern_shutdown.c:487
#1  0xc01635fb in boot (howto=256) at ../../kern/kern_shutdown.c:316
#2  0xc0163a20 in poweroff_wait (junk=0xc02c8cc0, howto=-260919296)  
at ../../kern/kern_shutdown.c:595
#3  0xc0255f00 in vm_fault (map=0xc030c1ac, vaddr=4034048000,  
fault_type=1 '\001', fault_flags=0)
     at ../../vm/vm_fault.c:240
#4  0xc028fd56 in trap_pfault (frame=0xe8f70c88, usermode=0,  
eva=4034051500) at ../../i386/i386/trap.c:856
#5  0xc028f993 in trap (frame={tf_fs = 16, tf_es = -386465776, tf_ds  
= 16, tf_edi = -386462435, tf_esi = 2686,
       tf_ebp = -386462184, tf_isp = -386462540, tf_ebx = -386462401,  
tf_edx = 0, tf_ecx = -268145824,
       tf_eax = -260916016, tf_trapno = 12, tf_err = 0, tf_eip =  
-1072057236, tf_cs = 8, tf_eflags = 66118, tf_esp = 0,
       tf_ss = 0}) at ../../i386/i386/trap.c:466
#6  0xc019b46c in procfs_dostatus (curp=0xe8e85be0, p=0xf0046b60,  
pfs=0xc641cfc0, uio=0xe8f70ed4)
     at ../../miscfs/procfs/procfs_status.c:128
#7  0xc019bb3c in procfs_rw (ap=0xe8f70e64) at ../../miscfs/procfs/ 
procfs_subr.c:285
#8  0xc01993b4 in vn_read (fp=0xc59a6b80, uio=0xe8f70ed4,  
cred=0xc3402900, flags=0, p=0xe8e85be0) at vnode_if.h:334
#9  0xc01725a4 in dofileread (p=0xe8e85be0, fp=0xc59a6b80, fd=6,  
buf=0x8075000, nbyte=4096, offset=-1, flags=0)
     at ../../sys/file.h:147
#10 0xc017246a in read (p=0xe8e85be0, uap=0xe8f70f80) at ../../kern/ 
sys_generic.c:117
#11 0xc0290385 in syscall2 (frame={tf_fs = 47, tf_es = 672071727,  
tf_ds = -1078001617, tf_edi = -1077938565,
       tf_esi = 672135552, tf_ebp = -1077940384, tf_isp = -386461740,  
tf_ebx = 672060364, tf_edx = 672004264,
       tf_ecx = 134696960, tf_eax = 3, tf_trapno = 7, tf_err = 2,  
tf_eip = 672013624, tf_cs = 31, tf_eflags = 663,
       tf_esp = -1077940428, tf_ss = 47}) at ../../i386/i386/trap.c:1175
#12 0xc02846a5 in Xint0x80_syscall ()
#13 0x280cfcc2 in ?? ()
#14 0x280c7c18 in ?? ()
#15 0x804947e in ?? ()
#16 0x8048e14 in ?? ()
#17 0x8048b8e in ?? ()
(kgdb)

EOD;


miscfs/procfs/procfs_status.c:

<<< EOD
124>        if (p->p_flag & P_INMEM) {
125>                struct timeval ut, st;
126>
127>                calcru(p, &ut, &st, (struct timeval *) NULL);
128>                ps += snprintf(ps, psbuf + sizeof(psbuf) - ps,
129>                    " %ld,%ld %ld,%ld %ld,%ld",
130>                    p->p_stats->p_start.tv_sec,
131>                    p->p_stats->p_start.tv_usec,
132>                    ut.tv_sec, ut.tv_usec,
133>                    st.tv_sec, st.tv_usec);
134>        } else
EOD; 


More information about the freebsd-stable mailing list