Date: Fri, 15 May 2009 11:42:38 -0400 From: John Baldwin <jhb@freebsd.org> To: Martin <nakal@web.de> Cc: freebsd-stable@freebsd.org Subject: Re: kernel trap 12 with interrupts disabled [bge0 on 7.2R] Message-ID: <200905151142.38933.jhb@freebsd.org> In-Reply-To: <20090515173618.78cca743@zelda.local> References: <1696198956@web.de> <200905150815.19452.jhb@freebsd.org> <20090515173618.78cca743@zelda.local>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 15 May 2009 11:36:18 am Martin wrote: > > Hi John, > > one more thing that I noticed. It seems that the netmask passed to the > procedure rt_maskedcopy is invalid. Cannot dereference the pointer. > > I went one frame up and I've looked at the control flow of the parent > routine rtrequest1_fib. This routine passes the netmask, but before it > does that it went with req=11 (RTM_RESOLVE) through this piece of code: > > /usr/src/sys/net/route.c:985 > > case RTM_RESOLVE: > if (ret_nrt == NULL || (rt = *ret_nrt) == NULL) > senderr(EINVAL); > ifa = rt->rt_ifa; > /* XXX locking? */ > flags = rt->rt_flags & > ~(RTF_CLONING | RTF_STATIC); > flags |= RTF_WASCLONED; > gateway = rt->rt_gateway; > if ((netmask = rt->rt_genmask) == NULL) > flags |= RTF_HOST; > goto makeroute; > > Is this a locking problem? A GPF on amd64 usually happens because the pointer has high bits corrupt (the high N bits on amd64 must be either all zeros or all ones). In my experience those are all caused by hardware issues rather than races or bugs. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905151142.38933.jhb>