RFR: 8271949: dumppath in -XX:FlightRecorderOptions does not affect [v7]

Markus Grönlund mgronlun at openjdk.java.net
Thu Oct 14 10:26:51 UTC 2021


On Thu, 14 Oct 2021 00:10:10 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

>> We set `dumppath` in `-XX:FlightRecorderOptions` or `JFR.configure dumppath` jcmd when we want to set emergency dump path. However they do not afffect.
>> 
>> ### -XX:FlightRecorderOptions
>> 
>> 
>> $ java -XX:FlightRecorderOptions=dumppath=`pwd` -XX:StartFlightRecording -Xlog:exceptions=info --version
>> [0.032s][info][exceptions] Exception <a 'java/lang/IllegalArgumentException'{0x00000007470163b8}: Unknown argument 'dumppath' in diagnostic command.> (0x00000007470163b8)
>> thrown [open/src/hotspot/share/services/diagnosticFramework.cpp, line 215]
>> for thread 0x00007f4f700236a0
>> [0.033s][error][arguments ] Unknown argument 'dumppath' in diagnostic command.
>> Error occurred during initialization of VM
>> Failure when starting JFR on_create_vm_2
>> 
>> 
>> ### jcmd
>> 
>> `jcmd` shows the configuration change was succeeded, but it would not affect.
>> 
>> 
>> $ jcmd 1046 JFR.configure dumppath=/tmp
>> 1046:
>> Dump path: /tmp
>
> Yasumasa Suenaga has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Clear _path_buffer when emergency dump fallbacks

Looks good.

Can you please add the following diff. It adds a warning to let users know that it was not possible to create the file in their preferred location. It complements the warning written at start time, with up-to-date information should a problem have arisen at dump time.
<pre>

diff --git a/src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp b/src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp
index 91d2be766da..c00bed02b52 100644
--- a/src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp
+++ b/src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp
@@ -140,8 +140,8 @@ bool JfrEmergencyDump::open_emergency_dump_file() {

   bool result = open_emergency_dump_fd(create_emergency_dump_path());
   if (!result && *_dump_path != '\0') {
-    // Attempt to create emergency dump to current directory
-    // if we couldn't create it on `dumppath=`.
+    log_warning(jfr)("Unable to create an emergency dump file at the location set by dumppath=%s", _dump_path);
+    // Fallback. Try to create it in the current directory.
     *_dump_path = '\0';
     *_path_buffer = '\0';
     result = open_emergency_dump_fd(create_emergency_dump_path());

</pre>

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

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


More information about the hotspot-jfr-dev mailing list