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