RFR: 8353727: HeapDumpPath doesn't expand %p [v2]
Thomas Stuefe
stuefe at openjdk.org
Wed Apr 9 06:46:35 UTC 2025
On Tue, 8 Apr 2025 11:43:20 GMT, Kevin Walls <kevinw at openjdk.org> wrote:
>> This is a long-standing oversight: HeapDumpPath does not recognise %p for pid expansion.
>> The default filename uses a pid (e.g. java_pid1676937.hprof) but HeapDumpPath does not.
>> It has always done a manual "root plus pid plus extension" on the default filename only, and
>> should move to using Argument::copy_expand_pid() like we do with other such filenames.
>>
>>
>> We also assumed the default filename is not a directory (which is very very likely, but doesn't have to be true).
>
> Kevin Walls has updated the pull request incrementally with two additional commits since the last revision:
>
> - length checking update
> - Chris feedback
src/hotspot/share/services/heapDumper.cpp line 2760:
> 2758: if (dump_file_seq == 0) { // first time in, we initialize base_path
> 2759: // Set base path (name or directory, default or custom, without seq no), doing %p substitution.
> 2760: const char *path_src = (HeapDumpPath != nullptr && HeapDumpPath[0] != '\0') ? HeapDumpPath : dump_file_name;
Why do you expand the dump file name here?
If you want to minimize the expand calls, you could:
- append the unexpanded dump_file_name to the unexpanded HeapDumpPath
- expand
- create dir (extract the directory name by temporarily setting the the last '/' to '\0; create dir; restore '/')
now you are done.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24482#discussion_r2034576102
More information about the hotspot-runtime-dev
mailing list