On Mon, 7 Apr 2025 09:05:34 GMT, Kevin Walls <[email protected]> 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).
src/hotspot/share/services/heapDumper.cpp line 2772:
> 2770:
> 2771: // Set base path (name or directory, default or custom, without seq
> no), doing %p substitution.
> 2772: const char *path_src = (HeapDumpPath && HeapDumpPath[0] != '\0') ?
> HeapDumpPath : dump_file_name;
Should be `HeapDumpPath != nullptr`.
src/hotspot/share/services/heapDumper.cpp line 2792:
> 2790: // Path is a directory. Append the default name, with %p
> substitution. Use my_path temporarily.
> 2791: if (!Arguments::copy_expand_pid(dump_file_name,
> strlen(dump_file_name), my_path, JVM_MAXPATHLEN)) {
> 2792: warning("Cannot create heap dump file. HeapDumpPath is too
> long.");
What is going to be the end result of this? A truncated file name?
test/hotspot/jtreg/runtime/ErrorHandling/TestHeapDumpOnOutOfMemoryError.java
line 101:
> 99: File dump = new File(heapdumpFilename);
> 100: Asserts.assertTrue(dump.exists() && dump.isFile(), "Could not
> find dump file " + dump.getAbsolutePath());
> 101:
I think you can remove this empty line, especially since you don't have one in
the similar code below.
test/hotspot/jtreg/runtime/ErrorHandling/TestHeapDumpOnOutOfMemoryError.java
line 113:
> 111: TestHeapDumpOnOutOfMemoryError.class.getName(), type);
> 112:
> 113: Process proc = pb.start();
No need differ from the above code here. You can just use OutputAnalyzer.pid()
to get the pid in the code below.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24482#discussion_r2032238479
PR Review Comment: https://git.openjdk.org/jdk/pull/24482#discussion_r2032243030
PR Review Comment: https://git.openjdk.org/jdk/pull/24482#discussion_r2032233983
PR Review Comment: https://git.openjdk.org/jdk/pull/24482#discussion_r2032234654