Date: Mon, 06 May 1996 15:33:37 -0500 From: Randy Terbush <randy@zyzzyva.com> To: current@freebsd.org, stable@freebsd.org Subject: MBUF problem? Message-ID: <199605062033.PAA05444@sierra.zyzzyva.com>
next in thread | raw e-mail | index | archive | help
To continue this thread, I had a system panic on this same machine
that seems to be chewing up MBUFs. I'm including the trace below
in hopes that some kernel hacker might have a suggestion.
The problem in pmap is interesting in view of someone elses comments
about pmap.c changes. Here is the current netstat -m on this machine
that has been up for 5 hours now. I'm not convinced these problems
are related, or that the MBUF usage is even a problem after reading
other comments. It's definitely the only thing on this machine that
is indicating any activity.
1509 mbufs in use:
1505 mbufs allocated to data
2 mbufs allocated to packet headers
1 mbufs allocated to protocol control blocks
1 mbufs allocated to socket names and addresses
643/648 mbuf clusters in use
1484 Kbytes allocated to network (99% in use)
0 requests for memory denied
0 requests for memory delayed
0 calls to protocol drain routines
------- Forwarded Message
Script started on Mon May 6 14:30:42 1996
#> gdb -k
GDB is free software and you are welcome to 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.
GDB 4.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc.
(kgdb) symbol-file kernel
Reading symbols from kernel...done.
(kgdb) exec-file /var/crash/kernel.2
(kgdb) core-file /var/crash/vmcore.2
IdlePTD 1cd000
current pcb at 1b1148
panic: invalid kernel page directory
#0 boot (howto=256) at ../../i386/i386/machdep.c:911
911 dumppcb.pcb_ptd = rcr3();
(kgdb) where
#0 boot (howto=256) at ../../i386/i386/machdep.c:911
#1 0xf0112b53 in panic (fmt=0xf01680f8 "invalid kernel page directory")
at ../../kern/subr_prf.c:116
#2 0xf0168205 in pmap_enter (pmap=0xf0e7906c, va=49152, pa=11583488,
prot=7 '\a', wired=1) at ../../i386/i386/pmap.c:1181
#3 0xf015816b in vm_fault (map=0xf0e79000, vaddr=49152, fault_type=7 '\a',
change_wiring=1) at ../../vm/vm_fault.c:842
#4 0xf0158374 in vm_fault_wire (map=0xf0e79000, start=49152, end=53248)
at ../../vm/vm_fault.c:919
#5 0xf015a97e in vm_map_pageable (map=0xf0e79000, start=49152, end=53248,
new_pageable=0) at ../../vm/vm_map.c:1401
#6 0xf0158a15 in vslock (addr=0xc000 "Ð\215e°[^_ÉÃ", len=950)
at ../../vm/vm_glue.c:150
#7 0xf010fac2 in __sysctl (p=0xf0e7da00, uap=0xefbfff94, retval=0xefbfff8c)
at ../../kern/kern_sysctl.c:146
#8 0xf016b087 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272639220,
tf_esi = 6, tf_ebp = -272639296, tf_isp = -272629788,
tf_ebx = 134725728, tf_edx = 49152, tf_ecx = -272639224, tf_eax = 202,
tf_trapno = 663, tf_err = 663, tf_eip = 134677525, tf_cs = 31,
tf_eflags = 663, tf_esp = -272639336, tf_ss = 39})
at ../../i386/i386/trap.c:906
#9 0xf016363b in Xsyscall ()
#10 0x3486 in ?? ()
#11 0x4a55 in ?? ()
#12 0xefbfe13c in ?? ()
#13 0x2bd4 in ?? ()
#14 0x10e8 in ?? ()
(kgdb) up 8
#8 0xf016b087 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272639220,
tf_esi = 6, tf_ebp = -272639296, tf_isp = -272629788,
tf_ebx = 134725728, tf_edx = 49152, tf_ecx = -272639224, tf_eax = 202,
tf_trapno = 663, tf_err = 663, tf_eip = 134677525, tf_cs = 31,
tf_eflags = 663, tf_esp = -272639336, tf_ss = 39})
at ../../i386/i386/trap.c:906
906 error = (*callp->sy_call)(p, args, rval);
(kgdb) up 6
#14 0x10e8 in ?? ()
(kgdb) list
901 ktrsyscall(p->p_tracep, code, callp->sy_narg, args);
902 #endif
903 rval[0] = 0;
904 rval[1] = frame.tf_edx;
905
906 error = (*callp->sy_call)(p, args, rval);
907
908 switch (error) {
909
910 case 0:
(kgdb) down 2
#12 0xefbfe13c in ?? ()
(kgdb) down 4
#8 0xf016b087 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272639220,
tf_esi = 6, tf_ebp = -272639296, tf_isp = -272629788,
tf_ebx = 134725728, tf_edx = 49152, tf_ecx = -272639224, tf_eax = 202,
tf_trapno = 663, tf_err = 663, tf_eip = 134677525, tf_cs = 31,
tf_eflags = 663, tf_esp = -272639336, tf_ss = 39})
at ../../i386/i386/trap.c:906
906 error = (*callp->sy_call)(p, args, rval);
(kgdb) down 2
#6 0xf0158a15 in vslock (addr=0xc000 "Ð\215e°[^_ÉÃ", len=950)
at ../../vm/vm_glue.c:150
150 vm_map_pageable(&curproc->p_vmspace->vm_map, trunc_page(addr),
(kgdb) list
145 void
146 vslock(addr, len)
147 caddr_t addr;
148 u_int len;
149 {
150 vm_map_pageable(&curproc->p_vmspace->vm_map, trunc_page(addr),
151 round_page(addr + len), FALSE);
152 }
153
154 void
(kgdb) up 2
#8 0xf016b087 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272639220,
tf_esi = 6, tf_ebp = -272639296, tf_isp = -272629788,
tf_ebx = 134725728, tf_edx = 49152, tf_ecx = -272639224, tf_eax = 202,
tf_trapno = 663, tf_err = 663, tf_eip = 134677525, tf_cs = 31,
tf_eflags = 663, tf_esp = -272639336, tf_ss = 39})
at ../../i386/i386/trap.c:906
906 error = (*callp->sy_call)(p, args, rval);
(kgdb) up down 4
#4 0xf0158374 in vm_fault_wire (map=0xf0e79000, start=49152, end=53248)
at ../../vm/vm_fault.c:919
919 rv = vm_fault(map, va, VM_PROT_READ|VM_PROT_WRITE, TRUE);
(kgdb) list
914
915 while( curproc != pageproc &&
916 (cnt.v_free_count <= cnt.v_pageout_free_min))
917 VM_WAIT;
918
919 rv = vm_fault(map, va, VM_PROT_READ|VM_PROT_WRITE, TRUE);
920 if (rv) {
921 if (va != start)
922 vm_fault_unwire(map, start, va);
923 return (rv);
(kgdb) down 1
#3 0xf015816b in vm_fault (map=0xf0e79000, vaddr=49152, fault_type=7 '\a',
change_wiring=1) at ../../vm/vm_fault.c:842
842 pmap_enter(map->pmap, vaddr, VM_PAGE_TO_PHYS(m), prot, wired);
(kgdb) pmap map
$1 = (struct vm_map *) 0xf0e79000
(kgdb) p *map
$2 = {pmap = 0xf0e7906c, lock = {interlock = {lock_data = 0}, want_write = 0,
want_upgrade = 0, waiting = 0, can_sleep = 1, read_count = 2,
thread = 0xf0e7dae8 "", recursion_depth = 0}, header = {prev = 0xf0e7bce0,
next = 0xf0e01f80, start = 0, end = 4026265600, object = {vm_object = 0x0,
share_map = 0x0, sub_map = 0x0}, offset = 0, is_a_map = 0,
is_sub_map = 0, copy_on_write = 0, needs_copy = 0, protection = 0 '\000',
max_protection = 0 '\000', inheritance = 0 '\000', wired_count = 0},
nentries = 17, size = 24412160, is_main_map = 1, ref_count = 1, ref_lock = {
lock_data = 0}, hint = 0xf0e7ba60, hint_lock = {lock_data = 0},
first_free = 0xf0e79024, entries_pageable = 1, timestamp = 6655}
(kgdb) down 1
#2 0xf0168205 in pmap_enter (pmap=0xf0e7906c, va=49152, pa=11583488,
prot=7 '\a', wired=1) at ../../i386/i386/pmap.c:1181
1181 panic("invalid kernel page directory");
(kgdb) list
1176 */
1177 pte = pmap_pte(pmap, va);
1178 if (pte == NULL) {
1179 printf("kernel page directory invalid pdir=%p, va=0x%lx\n",
1180 pmap->pm_pdir[PTDPTDI], va);
1181 panic("invalid kernel page directory");
1182 }
1183
1184 origpte = *(vm_offset_t *)pte;
1185 opa = origpte & PG_FRAME;
(kgdb) p pdir *pmap
$3 = {pm_pdir = 0xf4eca000, pm_pdchanged = 0, pm_dref = 0, pm_count = 1,
pm_lock = {lock_data = 0}, pm_stats = {resident_count = 7, wired_count = 3},
pm_ptpages = 0}
(kgdb) p p PTDPTDI
No symbol "PTDPTDI" in current context.
(kgdb) p va
$4 = 49152
(kgdb) p pte
$5 = (unsigned int **) 0x0
(kgdb) p *pte
$6 = (unsigned int *) 0x7205c766
(kgdb) p **pte
Cannot access memory at address 0x7205c766.
(kgdb) bt
#0 boot (howto=256) at ../../i386/i386/machdep.c:911
#1 0xf0112b53 in panic (fmt=0xf01680f8 "invalid kernel page directory")
at ../../kern/subr_prf.c:116
#2 0xf0168205 in pmap_enter (pmap=0xf0e7906c, va=49152, pa=11583488,
prot=7 '\a', wired=1) at ../../i386/i386/pmap.c:1181
#3 0xf015816b in vm_fault (map=0xf0e79000, vaddr=49152, fault_type=7 '\a',
change_wiring=1) at ../../vm/vm_fault.c:842
#4 0xf0158374 in vm_fault_wire (map=0xf0e79000, start=49152, end=53248)
at ../../vm/vm_fault.c:919
#5 0xf015a97e in vm_map_pageable (map=0xf0e79000, start=49152, end=53248,
new_pageable=0) at ../../vm/vm_map.c:1401
#6 0xf0158a15 in vslock (addr=0xc000 "Ð\215e°[^_ÉÃ", len=950)
at ../../vm/vm_glue.c:150
#7 0xf010fac2 in __sysctl (p=0xf0e7da00, uap=0xefbfff94, retval=0xefbfff8c)
at ../../kern/kern_sysctl.c:146
#8 0xf016b087 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272639220,
tf_esi = 6, tf_ebp = -272639296, tf_isp = -272629788,
tf_ebx = 134725728, tf_edx = 49152, tf_ecx = -272639224, tf_eax = 202,
tf_trapno = 663, tf_err = 663, tf_eip = 134677525, tf_cs = 31,
tf_eflags = 663, tf_esp = -272639336, tf_ss = 39})
at ../../i386/i386/trap.c:906
#9 0xf016363b in Xsyscall ()
#10 0x3486 in ?? ()
#11 0x4a55 in ?? ()
#12 0xefbfe13c in ?? ()
#13 0x2bd4 in ?? ()
#14 0x10e8 in ?? ()
(kgdb) p tfi _eip
No symbol "tf_eip" in current context.
(kgdb) p frame frame->tf_eip
No symbol "frame" in current context.
(kgdb) up 2
#4 0xf0158374 in vm_fault_wire (map=0xf0e79000, start=49152, end=53248)
at ../../vm/vm_fault.c:919
919 rv = vm_fault(map, va, VM_PROT_READ|VM_PROT_WRITE, TRUE);
(kgdb) up 2
#6 0xf0158a15 in vslock (addr=0xc000 "Ð\215e°[^_ÉÃ", len=950)
at ../../vm/vm_glue.c:150
150 vm_map_pageable(&curproc->p_vmspace->vm_map, trunc_page(addr),
(kgdb) up 2
#8 0xf016b087 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272639220,
tf_esi = 6, tf_ebp = -272639296, tf_isp = -272629788,
tf_ebx = 134725728, tf_edx = 49152, tf_ecx = -272639224, tf_eax = 202,
tf_trapno = 663, tf_err = 663, tf_eip = 134677525, tf_cs = 31,
tf_eflags = 663, tf_esp = -272639336, tf_ss = 39})
at ../../i386/i386/trap.c:906
906 error = (*callp->sy_call)(p, args, rval);
(kgdb) frame frame->tf_eip
No frame 134677525
(kgdb) p tf_eip
No symbol "tf_eip" in current context.
(kgdb) q
#> exit
exit
Script done on Mon May 6 14:49:51 1996
------- End of Forwarded Message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605062033.PAA05444>
