Date: Mon, 14 Aug 1995 08:11:25 +0200 (MET DST) From: J Wunsch <j@uriah.heep.sax.de> To: fn@pain.csrv.uidaho.edu (faried nawaz) Cc: current@freebsd.org Subject: Re: procfs problems in -current? Message-ID: <199508140611.IAA11398@uriah.heep.sax.de> In-Reply-To: <199508130211.TAA00198@big-brother.csrv.uidaho.edu> from "faried nawaz" at Aug 12, 95 07:11:34 pm
next in thread | previous in thread | raw e-mail | index | archive | help
As faried nawaz wrote: > > > fault virtual address = 0x1028 > fault code = supervisor read, page not present > instruction pointer = 0x8: 0xf0124487 > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, def32 1, gran 1 > processor eflags = interrupt enabled, resume, OPL = 0 > current process = 161 (mount) > panic: page fault Just to let you know, ironically, after remaking the world and rebooting a new kernel (one with the modified [4.4Lite-2] mount structures), i'm now also suffering from this. It appears to me that all LKM file systems don't work. The machine works well with the demand-loaded fs's commented out of fstab (no cd9660, no procfs - i can temporarily live with this). I've got core dumps, so i have at least something to look into. :-/ j@uriah 41% gdb -k kernel /var/crash/vmcore.16 IdlePTD 205000 current pcb at 1d91a8 panic: because you said to! ... #8 0xf01a4c2b in trap_fatal (frame=0xefbffbfc) at ../../i386/i386/trap.c:714 #9 0xf01a47a8 in trap_pfault (frame=0xefbffbfc, usermode=0) at ../../i386/i386/trap.c:640 #10 0xf01a4423 in trap (frame={tf_es = -260374512, tf_ds = 16, tf_edi = 0, tf_esi = -260316288, tf_ebp = -272630680, tf_isp = -272630748, tf_ebx = 0, tf_edx = -260316172, tf_ecx = -260278528, tf_eax = 0, tf_trapno = 12, tf_err = -260374528, tf_eip = -260297713, tf_cs = -272695288, tf_eflags = 66118, tf_esp = -260316288, tf_ss = -260864512}) at ../../i386/i386/trap.c:299 #11 0xf019a821 in calltrap () #12 0xf07c4f4a in end () #13 0xf0127678 in lookup (ndp=0xefbffe50) at ../../kern/vfs_lookup.c:490 #14 0xf012704e in namei (ndp=0xefbffe50) at ../../kern/vfs_lookup.c:147 #15 0xf012afe6 in lstat (p=0xf07c1100, uap=0xefbfff94, retval=0xefbfff8c) at ../../kern/vfs_syscalls.c:1260 #16 0xf01a4e33 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = -272638582, tf_esi = 213248, tf_ebp = -272638864, tf_isp = -272629788, tf_ebx = 213320, tf_edx = -272638586, tf_ecx = 213312, tf_eax = 190, tf_trapno = 582, tf_err = 582, tf_eip = 38053, tf_cs = 31, tf_eflags = 582, tf_esp = -272638984, tf_ss = 39}) at ../../i386/i386/trap.c:858 #17 0xf019a86b in Xsyscall () #18 0x6e66 in ?? () #19 0x2337 in ?? () #20 0x22bd in ?? () #21 0x10e8 in ?? () Frames #11 and #12 both displayed bogusly as ``end ()'' in DDB. (kgdb) up 10 #10 0xf01a4423 in trap (frame={tf_es = -260374512, tf_ds = 16, tf_edi = 0, tf_esi = -260316288, tf_ebp = -272630680, tf_isp = -272630748, tf_ebx = 0, tf_edx = -260316172, tf_ecx = -260278528, tf_eax = 0, tf_trapno = 12, tf_err = -260374528, tf_eip = -260297713, tf_cs = -272695288, tf_eflags = 66118, tf_esp = -260316288, tf_ss = -260864512}) at ../../i386/i386/trap.c:299 299 (void) trap_pfault(&frame, FALSE); (kgdb) frame frame.tf_ebp frame.tf_eip #0 0xf07c2c0f in end () This should be the exact trap location. I think the ``end + ...'' means it has been executing code from the data/bss instead of the text segment. (kgdb) disas 0xf07c2c00 0xf07c2c1f Dump of assembler code from 0xf07c2c00 to 0xf07c2c1f: 0xf07c2c00 <end+6129852>: movl 0xffffffec(%ebp),%edi 0xf07c2c03 <end+6129855>: movl 0x11c(%edi),%edi 0xf07c2c09 <end+6129861>: movl %edi,0xffffffe4(%ebp) 0xf07c2c0c <end+6129864>: movl %edi,0x1c(%esi) 0xf07c2c0f <end+6129867>: movl 0xc(%edi),%eax <<<=== 0xf07c2c12 <end+6129870>: movl %eax,0xc(%esi) 0xf07c2c15 <end+6129873>: incw 0x4(%eax) 0xf07c2c19 <end+6129877>: addl $0x4,%esp 0xf07c2c1c <end+6129880>: cmpl $0x0,0x10(%ebp) End of assembler dump. (kgdb) up #1 0xf019cee7 in boot (arghowto=-272630520) at ../../i386/i386/machdep.c:877 877 dumpsys(); (kgdb) up #2 0xf07c4f4a in end () (kgdb) up #3 0xf0127678 in lookup (ndp=0xefbffe50) at ../../kern/vfs_lookup.c:490 490 error = VFS_ROOT(dp->v_mountedhere, &tdp); (kgdb) up #4 0xf012704e in namei (ndp=0xefbffe50) at ../../kern/vfs_lookup.c:147 147 error = lookup(ndp); (kgdb) p ndp $5 = (struct nameidata *) 0xefbfdd8a (kgdb) p *ndp $6 = {ni_dirp = 0x4d524554 <Address 0x4d524554 out of bounds>, ni_segflg = 1986228285, ni_startdir = 0x353274, ni_rootdir = 0x454d4f48, ni_vp = 0x6f722f3d, ni_dvp = 0x5300746f, ni_pathlen = 1280066888, ni_next = 0x73752f3d <Address 0x73752f3d out of bounds>, ni_loopcnt = 1869361010, ni_cnd = {cn_nameiop = 795631971, cn_flags = 795765090, cn_proc = 0x68736374, cn_cred = 0x474f4c00, cn_pnbuf = 0x454d414e <Address 0x454d414e out of bounds>, cn_nameptr = 0x5500723d <Address 0x5500723d out of bounds>, cn_namelen = 1028801875, cn_hash = 1095762034, cn_consume = 792545364}} Looks pretty bogus, eh? But now suprise, one stack frame above, it looks fine: (kgdb) up #5 0xf012afe6 in lstat (p=0xf07c1100, uap=0xefbfff94, retval=0xefbfff8c) at ../../kern/vfs_syscalls.c:1260 1260 error = namei(&nd); (kgdb) p nd $7 = {ni_dirp = 0x34140 "/cd", ni_segflg = UIO_USERSPACE, ni_startdir = 0x0, ni_rootdir = 0xf070b980, ni_vp = 0xf07bec00, ni_dvp = 0xf070b980, ni_pathlen = 1, ni_next = 0xf0709403 "", ni_loopcnt = 0, ni_cnd = { cn_nameiop = 0, cn_flags = 32780, cn_proc = 0xf07c1100, cn_cred = 0xf07bc700, cn_pnbuf = 0xf0709400 "/cd", cn_nameptr = 0xf0709401 "cd", cn_namelen = 2, cn_hash = 199, cn_consume = 0}} (kgdb) p &nd $8 = (struct nameidata *) 0xefbffe50 Obviously, the `ndp' becomes mangled inside namei(). Does this look familiar to somebody? -- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ Never trust an operating system you don't have sources for. ;-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199508140611.IAA11398>