From owner-freebsd-stable Fri Jun 11 10:40: 5 1999 Delivered-To: freebsd-stable@freebsd.org Received: from independence.ecn.uoknor.edu (independence.ecn.ou.edu [129.15.112.69]) by hub.freebsd.org (Postfix) with ESMTP id 0C29514EDF; Fri, 11 Jun 1999 10:39:52 -0700 (PDT) (envelope-from rmtodd@mailhost.ecn.ou.edu) Received: from mailhost.ecn.ou.edu([127.0.0.1]) (6447 bytes) by independence.ecn.uoknor.edu via sendmail with P:esmtp/R:inet_hosts/T:smtp (sender: ) id for ; Fri, 11 Jun 1999 12:24:59 -0500 (CDT) (Smail-3.2.0.103 1998-Oct-9 #1 built 1998-Oct-18) Message-Id: To: The Hermit Hacker Cc: Richard Michael Todd , freebsd-current@freebsd.org, freebsd-stable@freebsd.org, inn-workers@isc.org Subject: Re: use of MMAP in new INN code... In-reply-to: Your message of "Wed, 09 Jun 1999 14:51:44 -0300." Date: Fri, 11 Jun 1999 12:21:50 -0500 From: Richard Michael Todd Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG In message Marc Fournier writes: >> >I'm currently investigating a problem with my server that >> >coincedentally(sp?) started right after I upgraded INN to what we >> >currently have... >> > >> >Someone *just* suggested that they thought that 3.2-STABLE of FreeBSD >> >still has a slight bug in MMAP that causes a race condition...it just >> >clued into me that Richard(?) sent out that response to me about Clayton >> >using mmap() more now in nnrpd to share active? Sigh. Well, I said earlier that I hadn't seen that problem on 3.1-STABLE. Well, I spoke too soon. I came in today and saw innd locked in an unkillable wait on vmpfw. I provoked a crash dump out of the system, and managed to get the following info out of gdb, if this is helpful to anyone. I've still got the corefile around if anyone has suggestions on where to look further. P.S. is there any easier way to get process struct addresses out of kgdb other than to keep doing "p (struct proc *)curproc->p_list->le_next->p_list->le_next..." until you find the process struct you're looking for? Script started on Fri Jun 11 12:15:26 1999 Warning: imported path contains relative components skywalker# gdb -k kernel.gdb /var/crash/vmcore.3 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... IdlePTD 3477504 initial pcb at 2da934 panic messages: --- --- #0 boot (howto=260) at ../../kern/kern_shutdown.c:285 285 dumppcb.pcb_cr3 = rcr3(); (kgdb) p *(struct proc *)0xf62e03c0 $1 = {p_procq = {tqe_next = 0x0, tqe_prev = 0xf02dacd4}, p_list = { le_next = 0xf62df1e0, le_prev = 0xf62158c8}, p_cred = 0xf1014fc0, p_fd = 0xf0f3ff80, p_stats = 0xf6516214, p_limit = 0xf0cdb200, p_upages_obj = 0xf64527f8, p_procsig = 0xf1014260, p_flag = 5, p_stat = 3 '\003', p_pad1 = "\000\000", p_pid = 87154, p_hash = { le_next = 0xf62e2a40, le_prev = 0xf0c589c8}, p_pglist = { le_next = 0xf62167e0, le_prev = 0xf1015a68}, p_pptr = 0xf6218e60, p_sibling = {le_next = 0xf62e07e0, le_prev = 0xf6218eb0}, p_children = { lh_first = 0xf62167e0}, p_ithandle = {callout = 0xf357d290}, p_oppid = 0, p_dupfd = 0, p_vmspace = 0xf62d8980, p_estcpu = 43, p_cpticks = 0, p_pctcpu = 0, p_wchan = 0xf04dd610, p_wmesg = 0xf02af73a "vmpfw", p_swtime = 24351, p_slptime = 22360, p_realtimer = {it_interval = { tv_sec = 0, tv_usec = 0}, it_value = {tv_sec = 0, tv_usec = 0}}, p_runtime = 162720418, p_switchtime = {tv_sec = 571212, tv_usec = 964442}, p_uticks = 17177, p_sticks = 3063, p_iticks = 576, p_traceflag = 0, p_tracep = 0x0, p_siglist = 524544, p_textvp = 0xf6440880, p_lock = 1 '\001', 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, 134813312}, p_sigiolst = {slh_first = 0x0}, p_sigparent = 20, p_oldsigmask = 0, p_sig = 0, p_code = 0, p_sigmask = 0, p_priority = 0 '\000', p_usrpri = 60 '<', p_nice = 0 '\000', p_comm = "innd\000tart\000\000\000\000\000\000\000", p_pgrp = 0xf1015a60, ---Type to continue, or q to quit--- p_sysent = 0xf02c4244, p_rtprio = {type = 1, prio = 0}, p_addr = 0xf6516000, p_md = {md_regs = 0xf6517fbc}, p_xstat = 0, p_acflag = 1, p_ru = 0x0, p_nthreads = 0, p_aioinfo = 0x0, p_wakeup = 0, p_peers = 0x0, p_leader = 0xf62e03c0, p_asleep = {as_priority = 0, as_timo = 0}} (kgdb) proc 0xf62e03c0 (kgdb) bt #0 mi_switch () at ../../kern/kern_synch.c:830 #1 0xf015e70d in tsleep (ident=0xf04dd610, priority=0, wmesg=0xf02af73a "vmpfw", timo=0) at ../../kern/kern_synch.c:448 #2 0xf021f356 in vm_fault (map=0xf62d8980, vaddr=689999872, fault_type=1 '\001', fault_flags=0) at ../../vm/vm_fault.c:308 #3 0xf0248e76 in trap_pfault (frame=0xf6517fbc, usermode=1, eva=690002184) at ../../i386/i386/trap.c:816 #4 0xf02489f6 in trap (frame={tf_es = -272695257, tf_ds = -272695257, tf_edi = 136365588, tf_esi = 136896512, tf_ebp = -272640264, tf_isp = -162431004, tf_ebx = 140668256, tf_edx = 0, tf_ecx = 0, tf_eax = 690002184, tf_trapno = 12, tf_err = 4, tf_eip = 134553715, tf_cs = 31, tf_eflags = 66054, tf_esp = -272641860, tf_ss = 39}) at ../../i386/i386/trap.c:358 #5 0x8052073 in ?? () #6 0x805b282 in ?? () #7 0x805c5c4 in ?? () #8 0x805ccba in ?? () #9 0x8057e00 in ?? () #10 0x805ad36 in ?? () #11 0x804e521 in ?? () (kgdb) fr 2 #2 0xf021f356 in vm_fault (map=0xf62d8980, vaddr=689999872, fault_type=1 '\001', fault_flags=0) at ../../vm/vm_fault.c:308 308 tsleep(fs.m, PSWP, "vmpfw", 0); (kgdb) l 303 unlock_things(&fs); 304 s = splvm(); 305 if ((fs.m->flags & PG_BUSY) || fs.m->busy) { 306 vm_page_flag_set(fs.m, PG_WANTED | PG_REFERENCED); 307 cnt.v_intrans++; 308 tsleep(fs.m, PSWP, "vmpfw", 0); 309 } 310 splx(s); 311 vm_object_deallocate(fs.first_object); 312 goto RetryFault; (kgdb) p fs.m $2 = (struct vm_page *) 0xf04dd610 (kgdb) p fs.m[0][0] $3 = {pageq = {tqe_next = 0xf05aca14, tqe_prev = 0xf02d0288}, hashq = { tqe_next = 0x0, tqe_prev = 0xf043a940}, listq = {tqe_next = 0x0, tqe_prev = 0xf62d2018}, object = 0xf62d2000, pindex = 81, phys_addr = 48844800, queue = 129, flags = 162, pc = 21, wire_count = 0, hold_count = 0, act_count = 5 '\005', busy = 1 '\001', valid = 255 'ÿ', dirty = 0 '\000'} (kgdb) q skywalker# Script done on Fri Jun 11 12:18:45 1999 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message