From owner-freebsd-hackers Sun Aug 19 19:40:15 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from best.llama.com (llama.com [63.194.69.194]) by hub.freebsd.org (Postfix) with ESMTP id CA52D37B411; Sun, 19 Aug 2001 19:40:06 -0700 (PDT) (envelope-from the@best.llama.com) Received: (from the@localhost) by best.llama.com (8.9.3/8.9.3) id TAA36670; Sun, 19 Aug 2001 19:40:06 -0700 (PDT) (envelope-from the) Date: Sun, 19 Aug 2001 19:40:06 -0700 From: Sam Habash To: Jonathan Chen Cc: mobile@FreeBSD.ORG, hackers@FreeBSD.ORG Subject: Re: kern/24854: NEWCARD support for aironet driver an(4) Message-ID: <20010819194006.A36256@llama.com> References: <20010817011103.A25841@llama.com> <20010818110728.A20719@enterprise.spock.org> <20010818092654.C28694@llama.com> <20010818124503.A26350@enterprise.spock.org> <20010818212011.A33879@llama.com> <20010819091452.A86632@enterprise.spock.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010819091452.A86632@enterprise.spock.org>; from jon@FreeBSD.ORG on Sun, Aug 19, 2001 at 09:14:52AM -0400 Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Sun, Aug 19, 2001 at 09:14:52AM -0400, Jonathan Chen wrote: > Are you sure there is no panic while in X? Your X server might have > futzed with the video card so you might not actually see the panic. If you > can try to reproduce this in text mode, then the panic message as well as a > traceback would be a very good start. Hmmm...what I saw appeared to be a spontaneous reboot. Forgot to mention that earlier. > But before you do that, I believe I may have found a fix for a possible > panic situation. This panic occurs in witness_destroy as a supervisor read > page not present error (I presume while trying to dereference lock). This > panic can be easily reproduced by running dhclient an0, removing and > reinserting the card, then killing dhclient. The fix appears to be > shockingly simple: > > diff -u -r1.8 if_an_pccard.c > --- sys/dev/an/if_an_pccard.c 2001/05/26 09:26:58 1.8 > +++ sys/dev/an/if_an_pccard.c 2001/08/19 12:57:14 > @@ -118,6 +118,7 @@ > sc->an_gone = 1; > bus_teardown_intr(dev, sc->irq_res, sc->irq_handle); > an_release_resources(dev); > + mtx_destroy(&sc->an_mtx); > return (0); > } > Here's the panic and traceback (typed by hand, haven't set up serial console for this). This is BEFORE applying the patch to if_an_pccard.c, as with the patch, no panic occurs. Cool. Fatal trap 12: page fault while in kernel mode fault virtual addresss = 0xc fault code = supervisor read, page not present instruction pointer = 0x8:0xc027a577 stack pointer = 0x10:0xcd861d3c frame pointer = 0x10:0xcd861d48 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = interrupt enabled, resume, IPL = 0 current process = 542 (dhclient) kernel : type 12 trap, code=0 Stopped at witness_destroy+0x237: cmpl %esi,0xc(%edx) db> trace witness_destroy(c2577a58,c2577a00,cd861d68,c02acaf4,c2577a58) at witness_destroy +0x237 mtx_destroy(c2577a58,c2577a00,cd861d7c,c02aae8a,c2577a00) at mtx_destory+0x73 bpf_freed(c2577a00,cd8a20a0,cd83db80,cd861da4,c0234e6c) at bpf_freed+0x68 bpfclose)(c2574400,3,2000,cd83db80,c2574400) at bpfclose+0x136 spec_close(cd861dc4,cd861dd8,c02a85d4,cd861dc4,c2511080) at spec_close+0x90 spec_vnoperate(cd861dc4,c2511080,c2511080,c04354a0,cd8a20a0) at spec_vnoperate+0x15 vn_close(cd8a20a0,3,c2572f00,cd83db80,cd861e38) at vn_close+0x40 vn_closefile(c2511080,cd83db80,cd83db80,c2511080,c027ba56) at vn_closefile+0x1f fdrop(c2511080,cd83db80,ffffffff,c2577b50,c027acac) at fdrop+0xaf closef(c2511080,cd83db80) at closef+0x9b fdfree(cd83db80,cd83dce8) at fdfree+0x38 exit1(cd83db80,f,0,cd83db80,ffffbfff) at exit1+0x61d sigexit(cd83db80,f,ffffffff,4,cd83db80) at sigexit+0x2f7 postsig(f) at postsig+0xec userret(cd83db80,cd861a8,51f,1b,80a9aa0) at userret+0x5b6 syscall(bfbf002f,80a002f,bfbf002f,bfbfe174,80a9aa0) at syscall+0x67b syscall_with_err_pushed() at syscall_with_err_pushed+0x1b --- syscall (81, FreeBSD ELF, getpgrp), eip = 0x8055864, esp = 0xbfbfdcd8, ebp = 0xbfbfdd04 --- --Sam To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message