From owner-freebsd-current@FreeBSD.ORG Thu May 21 19:29:51 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 EAA04106566C for ; Thu, 21 May 2009 19:29:51 +0000 (UTC) (envelope-from mel.flynn+fbsd.current@mailing.thruhere.net) Received: from mailhub.rachie.is-a-geek.net (rachie.is-a-geek.net [66.230.99.27]) by mx1.freebsd.org (Postfix) with ESMTP id B64318FC20 for ; Thu, 21 May 2009 19:29:51 +0000 (UTC) (envelope-from mel.flynn+fbsd.current@mailing.thruhere.net) Received: from sarevok.dnr.servegame.org (mailhub.rachie.is-a-geek.net [192.168.2.11]) by mailhub.rachie.is-a-geek.net (Postfix) with ESMTP id CFA637E837; Thu, 21 May 2009 11:29:49 -0800 (AKDT) From: Mel Flynn To: freebsd-current@freebsd.org Date: Thu, 21 May 2009 21:29:47 +0200 User-Agent: KMail/1.11.3 (FreeBSD/8.0-CURRENT; KDE/4.2.3; i386; ; ) References: <949B5884-5303-4EFF-AC7D-293640FFA012@exscape.org> <0C235698-3ED2-4AE9-A7D1-5DC56D8324A4@exscape.org> In-Reply-To: <0C235698-3ED2-4AE9-A7D1-5DC56D8324A4@exscape.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200905212129.47892.mel.flynn+fbsd.current@mailing.thruhere.net> Cc: Thomas Backman Subject: Re: DTrace panic while probing syscall::open (and possibly many others) 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: Thu, 21 May 2009 19:29:52 -0000 On Thursday 21 May 2009 18:53:56 Thomas Backman wrote: > On May 13, 2009, at 03:19 PM, Thomas Backman wrote: > > #11 0xffffffff8123c200 in dtrace_copycheck > > (uaddr=18446744071581326184, kaddr=Variable "kaddr" is not available. > > ) at dtrace_isa.c:527 > In /sys/cddl/dev/dtrace/amd64/dtrace_isa.c: > static int > dtrace_copycheck(uintptr_t uaddr, uintptr_t kaddr, size_t size) > { > printf("in dtrace_copycheck(), pre-ASSERT:\n"); > printf("kaddr = %u, kernelbase = %u, size = %d, kaddr+size = %u\n > \n", > (unsigned int)kaddr, (unsigned int)kernelbase, (unsigned > int)size, (unsigned int)(kaddr+size)); > ASSERT(kaddr >= kernelbase && kaddr + size >= kaddr); > > if (uaddr + size >= kernelbase || uaddr + size < uaddr) { > ... > > So, I added two printf statements. What happens? IT BECOMES STABLE. I'm no kernel hacker, but.. if you apply the patch below, does it still panic? Make sure to get rid of the printf() you added. The theory behind this patch is that kernbase isn't initialized at the time of that assert, yet code from printf initializes it. --- dtrace_isa.c.orig 2009-05-21 21:18:54.000000000 +0200 +++ dtrace_isa.c 2009-05-21 21:23:40.000000000 +0200 @@ -40,7 +40,8 @@ #include #include -extern uintptr_t kernbase; +//extern uintptr_t kernbase; +static uintptr_t kernbase = KERNBASE; uintptr_t kernelbase = (uintptr_t) &kernbase; #define INKERNEL(va) (((vm_offset_t)(va)) >= USRSTACK && \ -- Mel