Date: Mon, 22 Feb 1999 10:50:02 -0800 (PST) From: Howard Goldstein <hgoldste@bbs.mpcs.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/10166: panic during heavy sio i/o;no coproc; vesa+vm86 Message-ID: <199902221850.KAA99527@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/10166; it has been noted by GNATS. From: Howard Goldstein <hgoldste@bbs.mpcs.com> To: Bruce Evans <bde@zeta.org.au> Cc: freebsd-gnats-submit@FreeBSD.ORG Subject: Re: kern/10166: panic during heavy sio i/o;no coproc; vesa+vm86 Date: Mon, 22 Feb 1999 13:46:08 -0500 (EST) Bruce Evans writes: > >(kgdb) print *unit > >Cannot access memory at address 0x7610776. > >(kgdb) print unit > >$9 = 123799414 > > `unit' is out of bounds. The caller seems to have passed a bad `dev'. > Unfortunately, the value for `dev' is not visible in the debugging output > for any of the callers. ... Here it is: Fatal trkernel trap 12 with interrupts disabled Fatal trap 12: page fault while in kernel mode fault virtual address = 0x76107fa fault code = supervisor read, page not present instruction pointer = 0x8:0xf01a7bc3 stack pointer = 0x10:0xf2899c48 frame pointer = 0x10:0xf2899c6c code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = resume, IOPL = 0 current process = 50 (vdusrvr) interrupt mask = tty kernel: type 12 trap, code=0 Stopped at random_poll+0xef3: testb $0x1,0x84(%eax) db> gdb Next trap will enter GDB remote protocol mode db> cont kernel trap 12 with interrupts disabled Fatal trap 12: page fault while in kernel mode fault virtual address = 0x76107fa fault code = supervisor read, page not present instruction pointer = 0x8:0xf01a7bc3 stack pointer = 0x10:0xf2899c48 frame pointer = 0x10:0xf2899c6c code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = resume, IOPL = 0 current process = 50 (vdusrvr) interrupt mask = tty $T0b08:c37b1af0;05:6c9c89f2;04:489c89f2;#1c # gdb -k kernel 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.16 (i386-unknown-freebsd), Copyright 1996 Free Software Foundation, Inc... (kgdb) help remote Send a command to the remote monitor. (kgdb) target remote /dev/cuaa1 Remote debugging using /dev/cuaa1 0xf01a7bc3 in siointr1 (com=0xf0571000) at ../../i386/isa/sio.c:1545 1545 if (com->tp == NULL (kgdb) where #0 0xf01a7bc3 in siointr1 (com=0xf0571000) at ../../i386/isa/sio.c:1545 #1 0xf01a7b3a in siointr (unit=0) at ../../i386/isa/sio.c:1465 #2 0xf0191b67 in Xfastintr4 () #3 0xf01a90a0 in siocnputc (dev=7171, c=97) at ../../i386/isa/sio.c:2739 #4 0xf01900fe in cnputc (c=97) at ../../i386/i386/cons.c:413 #5 0xf013183f in putchar (c=97, arg=0xf2899d78) at ../../kern/subr_prf.c:309 #6 0xf01319ad in kvprintf (fmt=0xf01bea34 "p %d: %s while in %s mode\n", func=0xf01317a8 <putchar>, arg=0xf2899d78, radix=10, ap=0xf2899d8c "\f") at ../../kern/subr_prf.c:462 #7 0xf013172d in printf ( fmt=0xf01bea29 "\n\nFatal trap %d: %s while in %s mode\n") at ../../kern/subr_prf.c:262 #8 0xf019d1e8 in trap_fatal (frame=0xf2899e0c, eva=123799498) at ../../i386/i386/trap.c:858 #9 0xf019d157 in trap_pfault (frame=0xf2899e0c, usermode=0, eva=123799498) at ../../i386/i386/trap.c:835 #10 0xf019cdb6 in trap (frame={tf_es = 16, tf_ds = -225902576, tf_edi = -226047616, tf_esi = -226016768, tf_ebp = -225862072, tf_isp = -225862092, tf_ebx = -225861896, tf_edx = 128, tf_ecx = -262743808, tf_eax = 123799414, tf_trapno = 12, tf_err = 0, tf_eip = -266700265, tf_cs = -226033656, tf_eflags = 66118, tf_esp = -225861972, tf_ss = -267041277}) at ../../i386/i386/trap.c:437 #11 0xf01a7a17 in sioread (dev=7296, uio=0xf2899f34, flag=8323088) ---Type <return> to continue, or q <return> to quit---bt at ../../i386/isa/sio.c:1385 #12 0xf0154603 in spec_read (ap=0xf2899ef8) at ../../miscfs/specfs/spec_vnops.c:278 #13 0xf01740dc in ufsspec_read (ap=0xf2899ef8) at ../../ufs/ufs/ufs_vnops.c:1811 #14 0xf017464d in ufs_vnoperatespec (ap=0xf2899ef8) at ../../ufs/ufs/ufs_vnops.c:2312 #15 0xf0150c01 in vn_read (fp=0xf0591680, uio=0xf2899f34, cred=0xf0403900) at vnode_if.h:303 01 in vn_read (fp=0xf0591680, uio=0xf2899f34, cred=0xf0403900) at vnode_if.h:303 #16 0xf0133911 in read (p=0xf2874200, uap=0xf2899f84) at ../../kern/sys_generic.c:121 #17 0xf019d687 in syscall (frame={tf_es = -266731481, tf_ds = -262733785, tf_edi = 153120, tf_esi = -272642920, tf_ebp = -272638696, tf_isp = -225861676, tf_ebx = -1, tf_edx = 671417344, tf_ecx = -272642868, tf_eax = 3, tf_trapno = 0, tf_err = 2, tf_eip = 134516144, tf_cs = 31, tf_eflags = 582, tf_esp = -272642972, tf_ss = 39}) at ../../i386/i386/trap.c:1100 #18 0xf019174c in Xint0x80_syscall () #19 0x80487e1 in ?? () #20 0x80480e9 in ?? () (kgdb) frame 11 #11 0xf01a7a17 in sioread (dev=7296, uio=0xf2899f34, flag=8323088) at ../../i386/isa/sio.c:1385 1385 tp = com_addr(unit)->tp; (kgdb) print *unit Cannot access memory at address 0x7610776. ok that looks like before frame 12 #12 0xf0154603 in spec_read (ap=0xf2899ef8) at ../../miscfs/specfs/spec_vnops.c:278 278 error = (*cdevsw[major(vp->v_rdev)]->d_read) (kgdb) print *vp $1 = {v_flag = 8, v_usecount = 1, v_writecount = 1, v_holdcnt = 0, v_lastr = 0, v_id = 151, v_mount = 0xf0586e00, v_op = 0xf057e800, v_freelist = {tqe_next = 0x0, tqe_prev = 0x0}, v_mntvnodes = { le_next = 0xf286ca40, le_prev = 0xf286c828}, v_cleanblkhd = { tqh_first = 0x0, tqh_last = 0xf286c9b0}, v_dirtyblkhd = {tqh_first = 0x0, tqh_last = 0xf286c9b8}, v_synclist = {le_next = 0x0, le_prev = 0x0}, v_numoutput = 0, v_type = VCHR, v_un = {vu_mountedhere = 0xf056d900, vu_socket = 0xf056d900, vu_specinfo = 0xf056d900, vu_fifoinfo = 0xf056d900}, v_lease = 0x0, v_lastw = 0, v_cstart = 0, v_lasta = 0, v_clen = 0, v_maxio = 0, v_object = 0x0, v_interlock = { lock_data = 0}, v_vnlock = 0x0, v_tag = VT_UFS, v_data = 0xf05a6f00, v_cache_src = {lh_first = 0x0}, v_cache_dst = {tqh_first = 0xf0591640, tqh_last = 0xf0591650}, v_dd = 0xf286c980, v_ddid = 0, v_pollinfo = { vpi_lock = {lock_data = 0}, vpi_selinfo = {si_pid = 0, si_flags = 0}, vpi_events = 0, vpi_revents = 0}} (kgdb) print *vp->v_un.vu_specinfo $4 = {si_hashchain = 0xf037a95c, si_specnext = 0x0, si_mountpoint = 0x0, si_rdev = 7296, si_blksize = 1946171776} (kgdb) print *vp->v_mount $5 = {mnt_list = {cqe_next = 0xf0586600, cqe_prev = 0xf037a87c}, mnt_op = 0xf01caa68, mnt_vfc = 0xf01caa9c, mnt_vnodecovered = 0x0, mnt_syncer = 0x0, mnt_vnodelist = {lh_first = 0xf28a78c0}, mnt_lock = { lk_interlock = {lock_data = 0}, lk_flags = 16777216, lk_sharecount = 0, lk_waitcount = 0, lk_exclusivecount = 0, lk_prio = 20, lk_wmesg = 0xf01b7059 "vfslock", lk_timo = 0, lk_lockholder = -1}, mnt_flag = 20480, mnt_kern_flag = 0, mnt_maxsymlinklen = 60, mnt_stat = { f_spare2 = 0, f_bsize = 1024, f_iosize = 8192, f_blocks = 1511, f_bfree = 526, f_bavail = 526, f_files = 446, f_ffree = 117, f_fsid = { val = {65280, 303871774}}, f_owner = 0, f_type = 1, f_flags = 20480, f_syncwrites = 32, f_asyncwrites = 57, f_fstypename = "mfs", '\000' <repeats 12 times>, f_mntonname = "/", '\000' <repeats 88 times>, f_mntfromname = "root_device", '\000' <repeats 78 times>}, mnt_data = 0xf0586c00, mnt_time = 919707008} (kgdb) print *vp->v_op $6 = (int (*)()) 0xf0148250 <vop_panic> (kgdb) frame 16 #16 0xf0133911 in read (p=0xf2874200, uap=0xf2899f84) at ../../kern/sys_generic.c:121 121 if ((error = (*fp->f_ops->fo_read)(fp, &auio, fp->f_cred))) (kgdb) print *fp->f_ops->fo_read Cannot access memory at address 0x7610813. (kgdb) print *fp->f_ops Cannot access memory at address 0x7610813. (kgdb) print *fp Cannot access memory at address 0x76107ff. (kgdb) frame 17 #17 0xf019d687 in syscall (frame={tf_es = -266731481, tf_ds = -262733785, tf_edi = 153120, tf_esi = -272642920, tf_ebp = -272638696, tf_isp = -225861676, tf_ebx = -1, tf_edx = 671417344, tf_ecx = -272642868, tf_eax = 3, tf_trapno = 0, tf_err = 2, tf_eip = 134516144, tf_cs = 31, tf_eflags = 582, tf_esp = -272642972, tf_ss = 39}) at ../../i386/i386/trap.c:1100 1100 error = (*callp->sy_call)(p, args); (kgdb) l 1095 p->p_retval[0] = 0; 1096 p->p_retval[1] = frame.tf_edx; 1097 1098 STOPEVENT(p, S_SCE, callp->sy_narg); 1099 1100 error = (*callp->sy_call)(p, args); 1101 1102 switch (error) { 1103 1104 case 0: (kgdb) print *callp->sy_call $7 = {int ()} 0xf013387c <read> (kgdb) print *p $8 = {p_procq = {tqe_next = 0xf037a3f4, tqe_prev = 0x0}, p_list = { le_next = 0xf2874360, le_prev = 0xf28740a8}, p_cred = 0xf056d980, p_fd = 0xf05a5380, p_stats = 0xf2898214, p_limit = 0xf058f200, p_upages_obj = 0xf0370b04, p_procsig = 0xf056d960, p_flag = 16390, p_stat = 2 '\002', p_pad1 = "\000\000", p_pid = 50, p_hash = { le_next = 0xf2874d00, le_prev = 0xf056fe88}, p_pglist = {le_next = 0x0, le_prev = 0xf28740dc}, p_pptr = 0xf2874360, p_sibling = {le_next = 0x0, le_prev = 0xf28740e8}, p_children = {lh_first = 0x0}, p_ithandle = { callout = 0xf116c428}, p_oppid = 0, p_dupfd = 0, p_vmspace = 0xf2877a00, p_estcpu = 36, p_cpticks = 18, p_pctcpu = 169, p_wchan = 0x0, p_wmesg = 0xf01b5bec "select", p_swtime = 566, p_slptime = 0, p_realtimer = { it_interval = {tv_sec = 0, tv_usec = 0}, it_value = {tv_sec = 0, tv_usec = 0}}, p_runtime = 20292918, p_switchtime = {tv_sec = 578, tv_usec = 235806}, p_uticks = 1373, p_sticks = 1168, p_iticks = 18, p_traceflag = 0, p_tracep = 0x0, p_siglist = 0, p_textvp = 0xf286cc80, p_lock = 0 '\000', p_oncpu = 0 '\000', p_lastcpu = 0 '\000', p_pad2 = 0 '\000', p_locks = 0, p_simple_locks = 0, p_stops = 0, p_stype = 0, p_step = 0 '\000', p_pfsflags = 0 '\000', p_pad3 = "\000", p_retval = {0, 671417344}, p_sigiolst = {slh_first = 0x0}, p_sigparent = 0, p_oldsigmask = 0, p_sig = 0, p_code = 0, p_sigmask = 0, p_priority = 59 ';', p_usrpri = 59 ';', p_nice = 0 '\000', p_comm = "vdusrvr\000r\000\000\000\000\000\000\000", p_pgrp = 0xf056da00, p_sysent = 0xf01c4cd4, p_rtprio = {type = 1, prio = 0}, p_addr = 0xf2898000, ---Type <return> to continue, or q <return> to quit--- p_md = {md_regs = 0xf2899fac}, p_xstat = 0, p_acflag = 0, p_ru = 0x0, p_nthreads = 0, p_aioinfo = 0x0, p_wakeup = 0, p_peers = 0x0, p_leader = 0xf2874200, p_asleep = {as_priority = 0, as_timo = 0}} (kgdb) print *args $9 = 1 (kgdb) print args $10 = {1, -272642920, 4096, 0, 134570036, 11, -272643060, -266787087} (kgdb) For what it's worth this is supposed to be a read() of up to 4096 bytes from a raw /dev/cuaa0 (after a select). To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902221850.KAA99527>