Random java.util.NoSuchElementException exceptions when using perfasm
Mamontov Ivan
ivan.mamontov at gmail.com
Sun Feb 26 18:43:34 UTC 2017
Sorry for excess noise. I did not read change log where the same change was
applied https://bugs.openjdk.java.net/browse/CODETOOLS-7901905
2017-02-26 21:40 GMT+03:00 Mamontov Ivan <ivan.mamontov at gmail.com>:
> I had the same issue with JMH. In my case this issue was caused by
> environment misconfiguration. By default perf does not record kernel
> events, so as a result with the following command:
>
>> perf record --freq 99 --event cycles,instructions --output /tmp/testbin1
>> sleep 1
>
> perf script --fields time,event,ip,sym,dso --input /tmp/testbin1
>
>
> perf reports the following events:
>
>> 4805.282237: cycles:u: 7fa61e26ccd0 _start+0x0 (/usr/lib64/
>> ld-2.24.so)
>> 4805.282243: instructions:u: 7fa61e26ccd0 _start+0x0 (/usr/lib64/
>> ld-2.24.so)
>> 4805.282244: cycles:u: 7fa61e26ccd0 _start+0x0 (/usr/lib64/
>> ld-2.24.so)
>>
>
> where u means user space events. Unfortunately jmh expects output like
>
>> 4805.282237: cycles: 7fa61e26ccd0 _start+0x0 (/usr/lib64/
>> ld-2.24.so)
>> 4805.282243: instructions: 7fa61e26ccd0 _start+0x0 (/usr/lib64/
>> ld-2.24.so)
>> 4805.282244: cycles: 7fa61e26ccd0 _start+0x0 (/usr/lib64/
>> ld-2.24.so)
>
>
> It just replaces each ':' by empty symbol(org/openjdk/jmh/
> profile/LinuxPerfAsmProfiler.java:134), i.e. cycles:u: -> cyclesu. And
> skips processing(org/openjdk/jmh/profile/LinuxPerfAsmProfiler.java:160)
> with comment "we are not prepared to handle this event, skip"
> So in my case all events were skipped without any notification. I think
> jmh should take into account such things and report to users in order to
> not confuse less experienced users by wrong or empty profiles.
>
>
>
> 2017-01-18 22:34 GMT+03:00 Bartosz Skrzypczak <barteks2x at gmail.com>:
>
>> While trying to find some way to reproduce a JVM crash with
>> JMH+perfasm+gc profiler I got the following exception several times:
>>
>> # Processing profiler results: LinuxPerfAsmProfiler Exception in
>> thread "main" java.util.NoSuchElementException
>> at java.util.TreeMap.key(TreeMap.java:1327)
>> at java.util.TreeMap$NavigableSubMap.firstKey(TreeMap.java:1561)
>> at java.util.TreeSet.first(TreeSet.java:394)
>> at org.openjdk.jmh.profile.AbstractPerfAsmProfiler.figureHotInt
>> ervals(AbstractPerfAsmProfiler.java:707)
>> at org.openjdk.jmh.profile.AbstractPerfAsmProfiler.makeRegions(
>> AbstractPerfAsmProfiler.java:670)
>> at org.openjdk.jmh.profile.AbstractPerfAsmProfiler.processAssem
>> bly(AbstractPerfAsmProfiler.java:375)
>> at org.openjdk.jmh.profile.AbstractPerfAsmProfiler.afterTrial(A
>> bstractPerfAsmProfiler.java:273)
>> at org.openjdk.jmh.runner.Runner.runSeparate(Runner.java:673)
>> at org.openjdk.jmh.runner.Runner.runBenchmarks(Runner.java:542)
>> at org.openjdk.jmh.runner.Runner.internalRun(Runner.java:313)
>> at org.openjdk.jmh.runner.Runner.run(Runner.java:206)
>> at benchmark.TestBenchmark.main(TestBenchmark.java:80)
>>
>> It's even more rare than the JVM crash I was getting, but unlike the
>> JVM crash this is likely to be an issue with JMH. Unfortunately the
>> only way I found to maybe get this exception was to run many forks
>> (>100) with perfasm and gc profilers. I'm also not sure if the
>> benchmark itself also affects it.
>>
>> Could I also get some information at least where should I report the
>> JVM crash and how to get some crash log? It doesn't generage hs_err
>> and running with -v EXTRA seems to make the JVM crash go away and
>> produces huge logs.
>>
>
>
>
> --
> Thanks,
> Ivan
>
--
Thanks,
Ivan
More information about the jmh-dev
mailing list