Date: Tue, 12 Aug 1997 14:45:23 -0700 From: Julian Elischer <julian@whistle.com> To: hackers@freebsd.org Subject: krnel panic in 2.2.2+ (continued) Message-ID: <33F0D972.398A68D@whistle.com>
next in thread | raw e-mail | index | archive | help
eek I need to read better!
#12 0xf01718bf in trap (frame={tf_es = -272695280, tf_ds = -272695280,
tf_edi = 33816576, tf_esi = -266607784, tf_ebp = -272630516,
tf_isp = -272630580, tf_ebx = 8, tf_edx = 0, tf_ecx = -260173824,
tf_eax = -266606616, tf_trapno = 12, tf_err = -227409918,
tf_eip = -266923108, tf_cs = -266862584, tf_eflags = 65543,
tf_esp = -267325485, tf_ss = -260173824}) at
../../i386/i386/trap.c:311
#13 0xf017139c in nortqr ()
#14 0xf010eb25 in tsleep (ident=0xf272f698, priority=4,
wmesg=0xf015bead "swread", timo=2000) at ../../kern/kern_synch.c:361
#15 0xf015c380 in swap_pager_getpages (object=0xf07e9080, m=0xefbffe54,
count=2, reqpage=1) at ../../vm/swap_pager.c:1032
#16 0xf01670f7 in vm_pager_get_pages (object=0xf07e9080, m=0xefbffe54,
count=2, reqpage=1) at ../../vm/vm_pager.c:188
#17 0xf015da16 in vm_fault (map=0xf07e3d00, vaddr=4022325248,
fault_type=3 '\003', change_wiring=0) at ../../vm/vm_fault.c:426
#18 0xf0171b78 in trap_pfault (frame=0xefbffed4, usermode=0)
at ../../i386/i386/trap.c:633
#19 0xf01718bf in trap (frame={tf_es = -260177904, tf_ds = 16,
tf_edi = -272639468, tf_esi = -272629956, tf_ebp = -272629952,
tf_isp = -272630020, tf_ebx = 4, tf_edx = 6, tf_ecx = 1,
tf_eax = -272639464, tf_trapno = 12, tf_err = 2, tf_eip =
-266924675,
tf_cs = -272695288, tf_eflags = 66050, tf_esp = -260108800,
tf_ss = -272629884}) at ../../i386/i386/trap.c:311
#20 0xf0170d7d in generic_copyout ()
#21 0xf01075ff in wait4 (p=0xf07e1000, uap=0xefbfff94,
retval=0xefbfff84)
at ../../kern/kern_exit.c:357
#22 0xf0172333 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 3,
tf_esi = 0, tf_ebp = -272639532, tf_isp = -272629788,
tf_ebx = 134705248, tf_edx = 0, tf_ecx = 0, tf_eax = 7, tf_trapno
= 12,
tf_err = 7, tf_eip = 134489121, tf_cs = 31, tf_eflags = 534,
tf_esp = -272639556, tf_ss = 39}) at ../../i386/i386/trap.c:890
#23 0x8042421 in ?? ()
Cannot access memory at address 0xefbfd9d8.
(kgdb) disassemble nortqr
Dump of assembler code for function nortqr:
0xf017137c <nortqr>: movl 0xf01a0564,%edi
0xf0171382 <nortqr+6>: bsfl %edi,%ebx
0xf0171385 <nortqr+9>: je 0xf01713ae <idqr>
0xf0171387 <nortqr+11>: btrl %ebx,%edi
0xf017138a <nortqr+14>: leal 0xf01be318(,%ebx,8),%eax
0xf0171391 <nortqr+21>: movl %eax,%esi
0xf0171393 <nortqr+23>: movl (%eax),%ecx
0xf0171395 <nortqr+25>: movl (%ecx),%edx
0xf0171397 <nortqr+27>: movl %edx,(%eax)
0xf0171399 <nortqr+29>: movl 0x4(%ecx),%eax
0xf017139c <nortqr+32>: movl %eax,0x4(%edx) <--------------
0xf017139f <nortqr+35>: cmpl (%ecx),%esi
0xf01713a1 <nortqr+37>: je 0xf01713a6 <nortqr+42>
0xf01713a3 <nortqr+39>: btsl %ebx,%edi
0xf01713a6 <nortqr+42>: movl %edi,0xf01a0564
0xf01713ac <nortqr+48>: jmp 0xf01713e2 <swtch_com>
End of assembler dump.
or: in the .s file:
nortqr:
movl _whichqs,%edi
2:
/* XXX - bsf is sloow */
bsfl %edi,%ebx /* find a full q */
jz idqr /* if none, idle */
/* XX update whichqs? */
btrl %ebx,%edi /* clear q full status */
leal _qs(,%ebx,8),%eax /* select q */
movl %eax,%esi
movl P_FORW(%eax),%ecx /* unlink from front of process q */
movl P_FORW(%ecx),%edx
movl %edx,P_FORW(%eax)
movl P_BACK(%ecx),%eax
movl %eax,P_BACK(%edx) <---------------------
cmpl P_FORW(%ecx),%esi /* q empty */
je 3f
btsl %ebx,%edi /* nope, set to indicate not
empty *
/
3:
movl %edi,_whichqs /* update q status */
jmp swtch_com
(kgdb) info reg
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0x8 8
esp 0xefbffa6c 0xefbffa6c
ebp 0xefbffd0c 0xefbffd0c
esi 0xf01be358 -266607784
edi 0x2040000 33816576
eip 0xf0169961 0xf0169961
eflags 0x0 0
cs 0x0 0
ss 0x0 0
ds 0x0 0
es 0x0 0
#12 0xf01718bf in trap (frame={tf_es = -272695280, tf_ds = -272695280,
tf_edi = 33816576, tf_esi = -266607784, tf_ebp = -272630516,
tf_isp = -272630580, tf_ebx = 8, tf_edx = 0, tf_ecx = -260173824,
tf_eax = -266606616, tf_trapno = 12, tf_err = -227409918,
tf_eip = -266923108, tf_cs = -266862584, tf_eflags = 65543,
tf_esp = -267325485, tf_ss = -260173824}) at
../../i386/i386/trap.c:311
311 (void) trap_pfault(&frame, FALSE);
(kgdb) x/x -227409918
0xf2720002 <end+39184826>: Cannot access memory at address
0xf2720002.
0xf017139c <nortqr+32>: movl %eax,0x4(%edx) <--------------
edx == 0
so fault address SHOULD be 4
the panic MESSAGE has the right address.. (0x4)
Aug 12 08:27 Critical: /kernel: Fatal trap 12: page fault while in
kernel
mode
Aug 12 08:27 Critical: /kernel: fault virtual address = 0x4
Aug 12 08:27 Critical: /kernel: fault code = supervisor
write,
page not present
Aug 12 08:27 Critical: /kernel: instruction pointer = 0x8:0xf017139c
Aug 12 08:27 Critical: /kernel: stack pointer =
0x10:0xefbffce0
Aug 12 08:27 Critical: /kernel: frame pointer =
0x10:0xefbffd0c
Aug 12 08:27 Critical: /kernel: code segment = base 0x0,
limit
0xfffff, type 0x1b
Aug 12 08:27 Critical: /kernel: = DPL 0, pres 1,
def32 1, gran 1
Aug 12 08:27 Critical: /kernel: processor eflags = resume, IOPL =
0
Aug 12 08:27 Critical: /kernel: current process = Idle
Aug 12 08:27 Critical: /kernel: interrupt mask = net tty bio
Aug 12 08:27 Critical: /kernel: panic: page fault
Aug 12 08:27 Critical: /kernel:
Aug 12 08:27 Critical: /kernel: syncing disks...
more info to come...
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?33F0D972.398A68D>
