From owner-freebsd-current@FreeBSD.ORG Fri Jul 10 13:24:35 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF5F0106566B for ; Fri, 10 Jul 2009 13:24:35 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (skuns.zoral.com.ua [91.193.166.194]) by mx1.freebsd.org (Postfix) with ESMTP id 2D7438FC0A for ; Fri, 10 Jul 2009 13:24:34 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id n6ADOTEN095635 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 10 Jul 2009 16:24:29 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.3/8.14.3) with ESMTP id n6ADOTWO009119 for ; Fri, 10 Jul 2009 16:24:29 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.3/8.14.3/Submit) id n6ADOTAw009118 for freebsd-current@freebsd.org; Fri, 10 Jul 2009 16:24:29 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 10 Jul 2009 16:24:29 +0300 From: Kostik Belousov To: freebsd-current@freebsd.org Message-ID: <20090710132429.GA55190@deviant.kiev.zoral.com.ua> References: <20090709060556.GA27373@rwpc12.mby.riverwillow.net.au> <20090709073054.GB27373@rwpc12.mby.riverwillow.net.au> <20090709085242.GC27373@rwpc12.mby.riverwillow.net.au> <20090709142121.GS55190@deviant.kiev.zoral.com.ua> <20090710035849.GB31950@rwpc12.mby.riverwillow.net.au> <1247214510.2437.1693.camel@strangepork.london.mintel.ad> <20090710114234.GF32316@rwpc12.mby.riverwillow.net.au> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="zYtRAvLPyLojxZ7Y" Content-Disposition: inline In-Reply-To: <20090710114234.GF32316@rwpc12.mby.riverwillow.net.au> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Subject: Re: Process stuck in vmmaps on 8.0-BETA1 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2009 13:24:36 -0000 --zYtRAvLPyLojxZ7Y Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Jul 10, 2009 at 09:42:34PM +1000, John Marshall wrote: > rwsrv05# procstat 1270 > PID PPID PGID SID TSID THR LOGIN WCHAN EMUL COMM = =20 > 1270 1 1270 1270 0 1 john vmmaps FreeBSD ELF32 ntpd = =20 >=20 > rwsrv05# procstat -k 1270 > PID TID COMM TDNAME KSTACK = =20 > 1270 100184 ntpd - mi_switch sleepq_switch sl= eepq_wait _sleep vm_map_unlock_and_wait vm_map_delete vm_map_fixed vm_mmap = mmap syscall Xint0x80_syscall=20 >=20 > rwsrv05# procstat -v 1270 > PID START END PRT RES PRES REF SHD FL TP PATH > 1270 0x8048000 0x807e000 r-x 54 60 2 1 CN vn /usr/local/bin/nt= pd > 1270 0x807e000 0x8080000 rw- 2 0 1 0 C- vn /usr/local/bin/nt= pd > 1270 0x8080000 0x8100000 rw- 128 0 1 0 C- df=20 > 1270 0x2807e000 0x280ab000 r-x 45 0 170 75 CN vn /libexec/ld-elf.s= o.1 > 1270 0x280ab000 0x280ad000 rw- 2 0 1 0 C- vn /libexec/ld-elf.s= o.1 > 1270 0x280ad000 0x280c0000 rw- 19 0 1 0 C- df=20 > 1270 0x280c0000 0x280d7000 r-x 23 0 1 0 CN vn /lib/libm.so.5 > 1270 0x280d7000 0x280d8000 r-x 1 0 1 0 CN vn /lib/libm.so.5 > 1270 0x280d8000 0x280d9000 rw- 1 0 1 0 C- vn /lib/libm.so.5 > 1270 0x280d9000 0x28211000 r-x 312 0 1 0 CN vn /lib/libcrypto.so= .5 > 1270 0x28211000 0x28212000 r-x 1 0 1 0 CN vn /lib/libcrypto.so= .5 > 1270 0x28212000 0x2822a000 rw- 24 0 1 0 C- vn /lib/libcrypto.so= .5 > 1270 0x2822a000 0x2822c000 rw- 2 0 1 0 C- df=20 > 1270 0x2822c000 0x28232000 r-x 6 0 1 0 CN vn /lib/libkvm.so.4 > 1270 0x28232000 0x28233000 r-x 1 0 1 0 CN vn /lib/libkvm.so.4 > 1270 0x28233000 0x28234000 rw- 1 0 1 0 C- vn /lib/libkvm.so.4 > 1270 0x28234000 0x2824c000 r-x 24 0 1 0 CN vn /usr/lib/libelf.s= o.1 > 1270 0x2824c000 0x2824d000 r-x 1 0 1 0 CN vn /usr/lib/libelf.s= o.1 > 1270 0x2824d000 0x2824e000 rw- 1 0 1 0 C- vn /usr/lib/libelf.s= o.1 > 1270 0x2824e000 0x28251000 r-x 3 0 15 10 CN vn /usr/lib/librt.so= .1 > 1270 0x28251000 0x28252000 r-x 1 0 1 0 CN vn /usr/lib/librt.so= .1 > 1270 0x28252000 0x28253000 rw- 1 0 1 0 C- vn /usr/lib/librt.so= .1 > 1270 0x28253000 0x28260000 r-x 13 0 1 0 CN vn /lib/libmd.so.4 > 1270 0x28260000 0x28261000 r-x 1 0 1 0 CN vn /lib/libmd.so.4 > 1270 0x28261000 0x28262000 rw- 1 0 1 0 C- vn /lib/libmd.so.4 > 1270 0x28262000 0x28351000 r-x 239 0 1 0 CN vn /lib/libc.so.7 > 1270 0x28351000 0x28352000 r-x 1 0 1 0 CN vn /lib/libc.so.7 > 1270 0x28352000 0x28358000 rw- 6 0 1 0 C- vn /lib/libc.so.7 > 1270 0x28358000 0x2836e000 rw- 22 0 1 0 C- df=20 > 1270 0x2836e000 0x2837a000 --- 0 0 0 0 -- --=20 > 1270 0x28400000 0x28500000 rw- 256 0 1 0 C- df=20 > 1270 0xbfbe0000 0xbfc00000 rwx 32 0 1 0 C- df=20 >=20 > rwsrv05# kgdb kernel.debug /dev/mem > GNU gdb 6.1.1 [FreeBSD] > Copyright 2004 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you = are > welcome to change it and/or distribute copies of it under certain conditi= ons. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for detail= s. > This GDB was configured as "i386-marcel-freebsd"... > #0 sched_switch (td=3D0xc08af410, newtd=3D0xc4d4db40, flags=3D260) > at /usr/src/sys/kern/sched_ule.c:1864 > 1864 cpuid =3D PCPU_GET(cpuid); > Ready to go. Enter 'tr' to connect to the remote target > with /dev/cuad0, 'tr /dev/cuad1' to connect to a different port > or 'trf portno' to connect to the remote target with the firewire > interface. portno defaults to 5556. >=20 > Type 'getsyms' after connection to load kld symbols. >=20 > If you're debugging a local system, you can use 'kldsyms' instead > to load the kld symbols. That's a less obnoxious interface. > (kgdb) proc 1270 > [Switching to thread 168 (Thread 100184)]#0 sched_switch (td=3D0xc592fd8= 0, newtd=3D0xc4d4db40, flags=3D0x104) > at /usr/src/sys/kern/sched_ule.c:1864 > 1864 cpuid =3D PCPU_GET(cpuid); > (kgdb) bt > #0 sched_switch (td=3D0xc592fd80, newtd=3D0xc4d4db40, flags=3D0x104) at = /usr/src/sys/kern/sched_ule.c:1864 > During symbol reading, Incomplete CFI data; unspecified registers at 0xc0= 6009d6. > #1 0xc05e788f in mi_switch (flags=3D0x104, newtd=3D0x0) at /usr/src/sys/= kern/kern_synch.c:444 > #2 0xc061695c in sleepq_switch (wchan=3D0xc5909f00, pri=3D0x44) at /usr/= src/sys/kern/subr_sleepqueue.c:505 > #3 0xc06175f5 in sleepq_wait (wchan=3D0xc5909f00, pri=3D0x44) at /usr/sr= c/sys/kern/subr_sleepqueue.c:584 > #4 0xc05e7d39 in _sleep (ident=3D0xc5909f00, lock=3D0xc0a26724, priority= =3D0x244, wmesg=3D0xc0837aa0 "vmmaps", timo=3D0x0) > at /usr/src/sys/kern/kern_synch.c:232 > #5 0xc0761a37 in vm_map_unlock_and_wait (map=3D0xc5909e80, timo=3D0x0) a= t /usr/src/sys/vm/vm_map.c:638 > #6 0xc0761ae7 in vm_map_delete (map=3D0xc5909e80, start=3D0x2836e000, en= d=3D0x28374000) at /usr/src/sys/vm/vm_map.c:2703 > #7 0xc07634ce in vm_map_fixed (map=3D0xc5909e80, object=3D0xc5254990, of= fset=3D0x0, start=3D0x2836e000, length=3D0x6000,=20 > prot=3D0x5, max=3D0x7, cow=3D0x112) at /usr/src/sys/vm/vm_map.c:1367 > #8 0xc0765ba8 in vm_mmap (map=3D0xc5909e80, addr=3D0xe787ac70, size=3D0x= 6000, prot=3DVariable "prot" is not available. > ) at /usr/src/sys/vm/vm_mmap.c:1439 > #9 0xc076634f in mmap (td=3D0xc592fd80, uap=3D0xe787acf8) at /usr/src/sy= s/vm/vm_mmap.c:390 > #10 0xc07bb6bf in syscall (frame=3D0xe787ad38) at /usr/src/sys/i386/i386/= trap.c:1073 > #11 0xc07a0150 in Xint0x80_syscall () at /usr/src/sys/i386/i386/exception= .s:261 > #12 0x00000033 in ?? () > Previous frame inner to this frame (corrupt stack?) > (kgdb) f 6 > #6 0xc0761ae7 in vm_map_delete (map=3D0xc5909e80, start=3D0x2836e000, en= d=3D0x28374000) at /usr/src/sys/vm/vm_map.c:2703 > 2703 (void) vm_map_unlock_and_wait(map, 0); > (kgdb) p *entry > $1 =3D { > prev =3D 0xc5812b40,=20 > next =3D 0xc59ec7e0,=20 > left =3D 0xc5812b40,=20 > right =3D 0xc59ec7e0,=20 > start =3D 0x2836e000,=20 > end =3D 0x2837a000,=20 > avail_ssize =3D 0x0,=20 > adj_free =3D 0x86000,=20 > max_free =3D 0x976e0000,=20 > object =3D { > vm_object =3D 0x0,=20 > sub_map =3D 0x0 > },=20 > offset =3D 0x0,=20 > eflags =3D 0x600,=20 > protection =3D 0x0,=20 > max_protection =3D 0x7,=20 > inheritance =3D 0x1,=20 > wired_count =3D 0xffffffff,=20 > lastr =3D 0x1c,=20 > uip =3D 0x0 > } > (kgdb)=20 Thank you, I see what is going on. Please, try the following patch. diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 7cc2c2d..dc7a490 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -2354,12 +2354,12 @@ vm_map_wire(vm_map_t map, vm_offset_t start, vm_off= set_t end, if (entry->wired_count =3D=3D 0) { if ((entry->protection & (VM_PROT_READ|VM_PROT_EXECUTE)) =3D=3D 0) { + entry->eflags |=3D MAP_ENTRY_WIRE_SKIPPED; if ((flags & VM_MAP_WIRE_HOLESOK) =3D=3D 0) { end =3D entry->end; rv =3D KERN_INVALID_ADDRESS; goto done; } - entry->eflags |=3D MAP_ENTRY_WIRE_SKIPPED; goto next_entry; } entry->wired_count++; --zYtRAvLPyLojxZ7Y Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEARECAAYFAkpXQQwACgkQC3+MBN1Mb4jlqwCg9G6iXuhuwrM7CN8Rqhs5qtsa +K8AoPUFI4GZaH68TylTelb9F3oqG9qw =YnHT -----END PGP SIGNATURE----- --zYtRAvLPyLojxZ7Y--