kernel trap 12 with interrupts disabled [bge0 on 7.2R]
John Baldwin
jhb at freebsd.org
Fri May 15 15:42:47 UTC 2009
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
More information about the freebsd-stable
mailing list