From owner-freebsd-current Sun Dec 8 14:52:46 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 12BF037B401 for ; Sun, 8 Dec 2002 14:52:43 -0800 (PST) Received: from edgemaster.zombie.org (edgemaster.creighton.edu [147.134.112.68]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4474443EB2 for ; Sun, 8 Dec 2002 14:52:42 -0800 (PST) (envelope-from smkelly@zombie.org) Received: by edgemaster.zombie.org (Postfix, from userid 1001) id 964EA41562; Sun, 8 Dec 2002 16:52:41 -0600 (CST) Date: Sun, 8 Dec 2002 16:52:41 -0600 From: Sean Kelly To: current@freebsd.org Subject: Repeatable panic from nautilus2 Message-ID: <20021208225241.GA8630@edgemaster.zombie.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.1i Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Whenever x11-fm/nautilus2 starts up and goes to display my home directory in a window, my kernel panics. This is currently 100% repeatable, but I'm unable to get a full backtrace because the backtrace is never totally completed. While the backtrace is being spit out to my scree from the panic, my system freezes. It freezes at random times during teh backtrace. Each time it happens, I'll get different amounts of backtrace before my system is locked solid. My watchdog patch I posted on -arch a few weeks ago doesn't even manage to recover it. I copied down the backtrace by hand, but it might not be too accurate. So here is my backtrace, with a bit of gdb goodness mixed in. (I apologize ahead of time for the verbosity of this, but I'm hoping somebody can make heads or tails of it.) panic(c03455f2,0,c03455b4,eb,316) at panic+0x95 (kgdb) list *(panic+0x95) 0xc01cbfc5 is in panic (/usr/src/sys/kern/kern_shutdown.c:502). 499 #if defined(DDB) 500 if (newpanic && trace_on_panic) 501 db_print_backtrace(); lockmgr(c6ddd44c,2,0,c72100e0,e583a920) at lockmgr+0x473 (kgdb) list *(lockmgr+0x473) 0xc01b3063 is in lockmgr (/usr/src/sys/kern/kern_lock.c:443). 440 if (lkp->lk_lockholder == pid) 441 panic("lockmgr: draining against myself"); 442 443 error = acquiredrain(lkp, extflags); 444 if (error) 445 break; _vm_map_lock_read(c6ddd410,c035cd8e,a7c,20000ce,0) at _vm_map_lock_read+0x2e (kgdb) list *(_vm_map_lock_read+0x2a) 0xc02d496a is in _vm_map_lock_read (/usr/src/sys/vm/vm_map.c:386). 381 { 382 int error; 383 384 if (map->system_map) 385 GIANT_REQUIRED; 386 error = lockmgr(&map->lock, LK_EXCLUSIVE, NULL, curthread); 387 KASSERT(error == 0, ("%s: failed to get lock", __func__)); 388 } vm_map_lookup(e583a9c0,0,2,e583a9c4,e583a9b4) at vm_map_lookup+0x2e (kgdb) list *(vm_map_lookup+0x2a) 0xc02d79aa is in vm_map_lookup (/usr/src/sys/vm/vm_map.c:2684). 2681 * Lookup the faulting address. 2682 */ 2683 2684 vm_map_lock_read(map); 2685 #define RETURN(why) \ 2686 { \ 2687 vm_map_unlock_read(map); \ 2688 return (why); \ vm_fault(c6ddd410,0,2,8,c72100e0) at vm_fault+0xa2 (kgdb) list *(vm_fault+0xa2) 0xc02d0fc2 is in vm_fault (/usr/src/sys/vm/vm_fault.c:214). 213 fs.map = map; 214 result = vm_map_lookup(&fs.map, vaddr, fault_type, &fs.entry, 215 &fs.first_object, &fs.first_pindex, &prot, &wired); trap_pfault(e583aa90,0,3e,c0379480,3e) at trap_pfault+0xf2 (kgdb) list *(trap_pfault+0xf2) 0xc0316132 is in trap_pfault (/usr/src/sys/i386/i386/trap.c:734). 733 /* Fault in the user page: */ 734 rv = vm_fault(map, va, ftype, 735 (ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY 736 : VM_FAULT_NORMAL) ; trap(18,10,10,0,1b) at trap+0x3a2 (kgdb) list *(trap+0x3a2) 0xc0315da2 is in trap (/usr/src/sys/i386/i386/trap.c:446). 444 case T_PAGEFLT: /* page fault */ 445 (void) trap_pfault(&frame, FALSE, eva); 446 goto out; calltrap at calltrap+0x5 --- trap 0xc, eip = 0xc02da109, esp = 0xe583aad0, ebp = 0xe583aad0 vm_object_set_flag(0,1000,805c000,e583ab24,e583ab28) at vm_object_set_flag+0x9 (kgdb) list *(vm_object_set_flag+0x9) 0xc02da109 is in vm_object_set_flag (/usr/src/sys/vm/vm_object.c:271). 268 void 269 vm_object_set_flag(vm_object_t object, u_short bits) 270 { 271 object->flags |= bits; 272 } vm_uiomove(c6d *freeze* I wish I had a core to go along with this, but the thing freezes hard before getting to dumping one. If anybody needs any more data, I'm willing to provide it. It is rather interesting that I have a 100% repeatability rate with this. I've fsck'd all my filesystems, and there is no filesystem brokenness that could remotely cause this. Help?! -- Sean Kelly | PGP KeyID: D2E5E296 smkelly@zombie.org | http://www.zombie.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message