Issues with dtraceasm, and a workaround
Aleksey Shipilev
shade at redhat.com
Mon Feb 22 16:51:40 UTC 2021
On 2/22/21 5:42 PM, Henri Tremblay wrote:
> Sadly, I do not get the same result. When running from master I do get
>
> # Processing profiler results: DTraceAsmProfiler Exception in thread "main"
> java.lang.IllegalStateException: [kill: 37996: No such process
> ]
>
> at org.openjdk.jmh.profile.DTraceAsmProfiler.afterTrial(DTraceAsmProfiler.java:94)
> at org.openjdk.jmh.runner.Runner.runSeparate(Runner.java:682)
> at org.openjdk.jmh.runner.Runner.runBenchmarks(Runner.java:565)
> at org.openjdk.jmh.runner.Runner.internalRun(Runner.java:317)
> at org.openjdk.jmh.runner.Runner.run(Runner.java:209)
> at org.openjdk.jmh.Main.main(Main.java:71)
>
>
> However, when applying the patch I still have the same error.
> Running
> sudo java -jar jmh-samples/target/benchmarks.jar Hello -wi 5 -i 5 -f 1 -w 1s -r 1s -prof dtraceasm
>
> However, I do get the exact same issue with the PR. I did a clean install between each run. I'm not
> sure if if I'm just stupid or something is actually not working.
>
> If someone has an idea. I'll debug slightly later.
I might have botched the "kill" line. Either TERM is wrong, or we are killing the wrong PID (forked
VM). See if this works?
Collection<String> messages = Utils.tryWith("sudo", "kill", "-15",
Long.toString(dtraceProcess.pid()));
...or maybe we should not expect that kill always succeeds, for example when profiler exits itself?
So it should be this?
// We cannot use Process.destroy, because it closes the streams right away.
// Instead, deliver TERM by hand and wait for process to gracefully terminate.
Utils.tryWith("sudo", "kill", "-TERM", Long.toString(dtraceProcess.pid()));
try {
// dtrace would exit with non-zero exit code due to TERM,
// so we cannot test for errcode == 0 on this path.
dtraceProcess.waitFor();
} catch (InterruptedException e) {
throw new IllegalStateException("Interrupted while waiting for profiler to stop");
}
--
Thanks,
-Aleksey
More information about the jmh-dev
mailing list