Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Jun 1999 12:21:50 -0500
From:      Richard Michael Todd <rmtodd@mailhost.ecn.ou.edu>
To:        The Hermit Hacker <scrappy@hub.org>
Cc:        Richard Michael Todd <rmtodd@mailhost.ecn.ou.edu>, freebsd-current@freebsd.org, freebsd-stable@freebsd.org, inn-workers@isc.org
Subject:   Re: use of MMAP in new INN code... 
Message-ID:  <m10sV35-000FaDC@independence.ecn.uoknor.edu>
In-Reply-To: Your message of "Wed, 09 Jun 1999 14:51:44 -0300." <Pine.BSF.4.05.9906091450270.49155-100000@thelab.hub.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <Pine.BSF.4.05.9906091450270.49155-100000@thelab.hub.org>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 <return> to continue, or q <return> 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-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m10sV35-000FaDC>