RFR: 8280289: Enhance debug pp() command with NMT info [v4]

Zhengyu Gu zgu at openjdk.java.net
Mon Jan 24 16:35:46 UTC 2022


On Sat, 22 Jan 2022 15:11:33 GMT, Zhengyu Gu <zgu at openjdk.org> wrote:

>> JDK-8275320 enhanced NMT malloc header, provided ability to identify if a pointer points to a malloc'd memory. Further,  JDK-8277822 enabled NMT for debug builds.
>> 
>> This is a good opportunity to integrate NMT to debug pp() command to provide useful information collected by NMT. 
>> 
>> For example:
>> 
>> NMT=summary
>> 
>> (gdb) call pp(0x7f2d9803db70)
>> "Executing pp"
>> 0x00007f2d9803db70 malloc'd 1576 bytes by Internal
>> 
>> (gdb) call pp(0x00007f4300a20000)
>> "Executing pp"
>> 0x00007f4300a20000 in mmap'd memory region [0x00007f4300a20000 - 0x00007f4310000000] by GC
>> 
>> 
>> NMT=detail
>> 
>> 
>> (gdb) call pp(0x7f2d9803db70)
>> "Executing pp"
>> 0x00007f2d9803db70 malloc'd 1576 bytes by Internal
>> [0x00007f2d9f1b784b] G1Arguments::create_heap()+0x1b
>> [0x00007f2d9f98a855] universe_init()+0x85
>> [0x00007f2d9f2e0a97] init_globals()+0x37
>> [0x00007f2d9f960acb] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3db
>> 
>> (gdb) call pp(0x00007f4300a20000)
>> "Executing pp"
>> 0x00007f4300a20000 in mmap'd memory region [0x00007f4300a20000 - 0x00007f4310000000] by GC
>> [0x00007f433dc49c7f] reserve_memory(char*, unsigned long, unsigned long, int, bool)+0x17f
>> [0x00007f433dc4cf0b] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x14b
>> [0x00007f433dc4d527] ReservedSpace::initialize(unsigned long, unsigned long, unsigned long, char*, bool)+0x1c7
>> [0x00007f433d949d40] ShenandoahHeap::initialize()+0x340
>
> Zhengyu Gu has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Thomas' comment

I don't think the patch can make things worse that oop->print(), because pp() command seems to exam "live" pointer.

As Ioi pointed out, we do need safety to exam mmap bookkeeping info, as other threads may concurrently change them. I elected to take a snapshot of region, instead of printing info in place, to avoid contaminating VirtualMemoryTracker with printing code.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7160


More information about the hotspot-dev mailing list