Re: DTrace panic while probing syscall::open (and possibly many others)

From: Thomas Backman <serenity_at_exscape.org>
Date: Thu, 18 Jun 2009 13:42:55 +0200
On Jun 18, 2009, at 12:55 PM, Andriy Gapon wrote:

> on 18/06/2009 12:43 Thomas Backman said the following:
>>
>>    at dtrace_isa.c:527
>> #14 0xffffffff816b31fc in dtrace_copyinstr (uaddr=34365163021,
>>    kaddr=18446743524025463312, size=256, flags=0xffffffff8146e0c0)
>>    at dtrace_isa.c:558
>
> kaddr=18446743524025463312 == FFFFFF8004467210
> I think kernelbase on amd64 is 0xFFFFFFFF80000000.
> FFFFFF8004467210 kaddr
> is smaller than
> FFFFFFFF80000000 kernelbase
>
> The numbers do look suspiciously similar, so I am not sure if you  
> are seeing a
> race or a real bug somewhere.
> -- 
> Andriy Gapon
Hmmm...
Looking around a bit for these numbers, I found, in /sys/amd64/include/ 
vmparam.h:

/*
  * Virtual addresses of things.  Derived from the page directory and
  * page table indexes from pmap.h for precision.
  *
  * 0x0000000000000000 - 0x00007fffffffffff   user map
  * 0x0000800000000000 - 0xffff7fffffffffff   does not exist (hole)
  * 0xffff800000000000 - 0xffff804020100fff   recursive page table  
(512GB slot)
  * 0xffff804020101000 - 0xfffffeffffffffff   unused
  * 0xffffff0000000000 - 0xffffff7fffffffff   512GB direct map mappings
  * 0xffffff8000000000 - 0xffffffffffffffff   512GB kernel map
  *
  * Within the kernel map:
  *
  * 0xffffffff80000000                        KERNBASE
  */

So, kaddr is inside the "kernel map", but not KERNBASE. What this  
means, I have no clue whatsoever. (I'm not a kernel developer and I  
don't know too much about (virtual) memory either!)

Regards,
Thomas
Received on Thu Jun 18 2009 - 09:43:11 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:50 UTC