Grouped method entry events
Egor Ushakov
egor.ushakov at jetbrains.com
Fri Aug 5 16:59:17 UTC 2022
Hi,
we're experiencing strange grouping of method entry/exit events, is this
a bug or a feature?
We have one method entry request active with suspend policy 1 (suspend
thread).
important: we also have one active step request (step over)
In jdk 11 we have one composite event for each event, which is what's
expected:
event set, policy:1, count:1 =
{MethodEntryEvent at java.lang.ClassLoader:522 in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at jdk.internal.loader.ClassLoaders$AppClassLoader:170 in
thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.System:375 in
thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at jdk.internal.loader.BuiltinClassLoader:579 in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at jdk.internal.loader.BuiltinClassLoader:591 in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.lang.ClassLoader:665 in thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.Object:50 in
thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:1541 in thread
main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:1011 in thread
main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.String:1502
in thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.String:3266
in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.lang.StringLatin1:194 in thread main}
...
In jdk 18 they are grouped now!
event set, policy:1, count:17 =
{MethodEntryEvent at java.lang.ClassLoader:521 in thread main,
MethodEntryEvent at jdk.internal.loader.ClassLoaders$AppClassLoader:180 in
thread main, MethodEntryEvent at java.lang.System:490 in thread main,
MethodEntryEvent at java.lang.System:198 in thread main,
MethodEntryEvent at jdk.internal.loader.BuiltinClassLoader:639 in thread
main, MethodEntryEvent at jdk.internal.loader.BuiltinClassLoader:651 in
thread main, MethodEntryEvent at java.lang.ClassLoader:664 in thread main,
MethodEntryEvent at java.lang.Object:44 in thread main,
MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:1541 in thread
main, MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:1011 in
thread main, MethodEntryEvent at java.lang.String:2336 in thread main,
MethodEntryEvent at java.lang.String:4546 in thread main,
MethodEntryEvent at java.lang.StringLatin1:192 in thread main,
MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:697 in thread
main, MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:760 in
thread main, MethodEntryEvent at jdk.internal.misc.Unsafe:2153 in thread
main,
MethodEntryEvent at jdk.internal.misc.Unsafe.getReferenceVolatile(java.lang.Object,
long)+-1 in thread main}
event set, policy:1, count:4 =
{MethodEntryEvent at java.util.concurrent.ConcurrentHashMap$Node:631 in
thread main, MethodEntryEvent at java.lang.Object:44 in thread main,
MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:765 in thread
main,
MethodEntryEvent at jdk.internal.misc.Unsafe.compareAndSetReference(java.lang.Object,
long, java.lang.Object, java.lang.Object)+-1 in thread main}
event set, policy:1, count:2 =
{MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:2326 in thread
main,
MethodEntryEvent at jdk.internal.misc.Unsafe.compareAndSetLong(java.lang.Object,
long, long, long)+-1 in thread main}
Which is really strange and breaks some login in IDEA debugger.
Without the active step request it works in jdk 18 as in jdk 11:
event set, policy:1, count:1 =
{MethodEntryEvent at java.lang.ClassLoader:521 in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at jdk.internal.loader.ClassLoaders$AppClassLoader:180 in
thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.System:490 in
thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.System:198 in
thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at jdk.internal.loader.BuiltinClassLoader:639 in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at jdk.internal.loader.BuiltinClassLoader:651 in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.lang.ClassLoader:664 in thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.Object:44 in
thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:1541 in thread
main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.util.concurrent.ConcurrentHashMap:1011 in thread
main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.String:2336
in thread main}
event set, policy:1, count:1 = {MethodEntryEvent at java.lang.String:4546
in thread main}
event set, policy:1, count:1 =
{MethodEntryEvent at java.lang.StringLatin1:192 in thread main}
Could anyone have a look please.
Thanks,
Egor
More information about the serviceability-dev
mailing list