kernel page fult for a valid pointer?

John Baldwin jhb at freebsd.org
Mon Aug 20 18:21:34 UTC 2012


On Monday, August 20, 2012 9:49:48 am Monthadar Al Jaberi wrote:
> On Mon, Aug 20, 2012 at 2:04 PM, John Baldwin <jhb at freebsd.org> wrote:
> > On Saturday, August 18, 2012 2:29:26 pm Monthadar Al Jaberi wrote:
> >> Hi,
> >>
> >> I am wondering is there a reason for getting "Fatal trap 12: page
> >> fault while in kernel mode" "supervisor read, page not present" for an
> >> address used to be valid in kernel space?
> >>
> >> I dont really understand why I am getting this, I added a hardware
> >> watchpoint on the address, and when I got to the debuger I could read
> >> the memory content and dump for that address. But when I continue from
> >> the debugger I get the panic and now when I try to read the memory
> >> content I get *** error reading from address ce733000 ***.
> >
> > Whatever memory was there might have been unmapped?  For example,
> > memory pointed to by I/O buffers (struct buf/bio) use transient
> > mappings that are only valid while an I/O request is in progress.
> 
> Thank you the for the reply, so if a struct gets freed will the page
> it was on get un-mapped, so that I cant dump it in debugger? Even
> VirtualBox debugger cant dump the memory giving
> "VERR_PAGE_TABLE_NOT_PRESENT: Reading memory at...".
> 
> In my case it is a struct ieee80211_node which gets freed, but where
> does the page get unmaped? I tried doubling the memory in VirtualBox.

Well, things that are malloc'd are a bit trickier.  I do believe they can
get unmapped if the backing slab is released to the system during a
uma_reclaim().

-- 
John Baldwin


More information about the freebsd-current mailing list