<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Hi Egor,<br>
</p>
<p>That is odd, and clearly wrong. It means that MethodEntryEvents
are being delivered when no longer even executing in the method.
And you are using the <span id="SuspendPolicy_EVENT_THREAD"></span>EVENT_THREAD
suspend policy, so there should be a suspend for each event.
Offhand I can't think of any changes that would have caused this.
I also don't see how our testing would passed with this behavior.
I'm suspecting a faulty interaction with the debug agent and IDEA
(possibly the IDEA version of JDI).</p>
<p>Can you see where the thread is actually suspended at when you
get the event set?</p>
<p>Does this happen with 17 also? It would be nice to know what
version introduced this problem.</p>
<p>Can you create a JDI test case for this?<br>
</p>
<p>> Without the active step request it works in jdk 18 as in jdk
11: <br>
</p>
<p>I'm not sure what you mean by "active step". Do you mean single
stepping is enabled? The JDWP spec does allow BreakPoint,
SingleStep, MethodEntry, and MethodExit events to be combined into
the same composite event (which should translate to the same JDI
event set) if they occur at the same location and in the same
thread. So I can see enabling single stepping having an impact on
the behavior you are seeing.<br>
</p>
<p>Chris<br>
</p>
<div class="moz-cite-prefix">On 8/5/22 9:59 AM, Egor Ushakov wrote:<br>
</div>
<blockquote type="cite" cite="mid:11c7c221-6269-75f6-3666-aa7288613151@jetbrains.com">Hi,
<br>
<br>
we're experiencing strange grouping of method entry/exit events,
is this a bug or a feature?
<br>
We have one method entry request active with suspend policy 1
(suspend thread).
<br>
important: we also have one active step request (step over)
<br>
<br>
In jdk 11 we have one composite event for each event, which is
what's expected:
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.ClassLoader:522">MethodEntryEvent@java.lang.ClassLoader:522</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.ClassLoaders$AppClassLoader:170">MethodEntryEvent@jdk.internal.loader.ClassLoaders$AppClassLoader:170</a>
in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.System:375">MethodEntryEvent@java.lang.System:375</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:579">MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:579</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:591">MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:591</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.ClassLoader:665">MethodEntryEvent@java.lang.ClassLoader:665</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.Object:50">MethodEntryEvent@java.lang.Object:50</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1541">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1541</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1011">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1011</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.String:1502">MethodEntryEvent@java.lang.String:1502</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.String:3266">MethodEntryEvent@java.lang.String:3266</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.StringLatin1:194">MethodEntryEvent@java.lang.StringLatin1:194</a> in thread main}
<br>
...
<br>
<br>
In jdk 18 they are grouped now!
<br>
event set, policy:1, count:17 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.ClassLoader:521">MethodEntryEvent@java.lang.ClassLoader:521</a> in thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.ClassLoaders$AppClassLoader:180">MethodEntryEvent@jdk.internal.loader.ClassLoaders$AppClassLoader:180</a>
in thread main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.System:490">MethodEntryEvent@java.lang.System:490</a> in thread
main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.System:198">MethodEntryEvent@java.lang.System:198</a> in thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:639">MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:639</a> in
thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:651">MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:651</a> in
thread main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.ClassLoader:664">MethodEntryEvent@java.lang.ClassLoader:664</a> in thread
main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.Object:44">MethodEntryEvent@java.lang.Object:44</a> in thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1541">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1541</a> in
thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1011">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1011</a> in
thread main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.String:2336">MethodEntryEvent@java.lang.String:2336</a> in thread
main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.String:4546">MethodEntryEvent@java.lang.String:4546</a> in thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.StringLatin1:192">MethodEntryEvent@java.lang.StringLatin1:192</a> in thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:697">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:697</a> in
thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:760">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:760</a> in
thread main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.misc.Unsafe:2153">MethodEntryEvent@jdk.internal.misc.Unsafe:2153</a> in
thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.misc.Unsafe.getReferenceVolatile">MethodEntryEvent@jdk.internal.misc.Unsafe.getReferenceVolatile</a>(java.lang.Object,
long)+-1 in thread main}
<br>
event set, policy:1, count:4 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap$Node:631">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap$Node:631</a>
in thread main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.Object:44">MethodEntryEvent@java.lang.Object:44</a> in thread
main, <a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:765">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:765</a>
in thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.misc.Unsafe.compareAndSetReference">MethodEntryEvent@jdk.internal.misc.Unsafe.compareAndSetReference</a>(java.lang.Object,
long, java.lang.Object, java.lang.Object)+-1 in thread main}
<br>
event set, policy:1, count:2 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:2326">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:2326</a> in
thread main,
<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.misc.Unsafe.compareAndSetLong">MethodEntryEvent@jdk.internal.misc.Unsafe.compareAndSetLong</a>(java.lang.Object,
long, long, long)+-1 in thread main}
<br>
<br>
Which is really strange and breaks some login in IDEA debugger.
<br>
<br>
Without the active step request it works in jdk 18 as in jdk 11:
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.ClassLoader:521">MethodEntryEvent@java.lang.ClassLoader:521</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.ClassLoaders$AppClassLoader:180">MethodEntryEvent@jdk.internal.loader.ClassLoaders$AppClassLoader:180</a>
in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.System:490">MethodEntryEvent@java.lang.System:490</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.System:198">MethodEntryEvent@java.lang.System:198</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:639">MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:639</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:651">MethodEntryEvent@jdk.internal.loader.BuiltinClassLoader:651</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.ClassLoader:664">MethodEntryEvent@java.lang.ClassLoader:664</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.Object:44">MethodEntryEvent@java.lang.Object:44</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1541">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1541</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1011">MethodEntryEvent@java.util.concurrent.ConcurrentHashMap:1011</a> in
thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.String:2336">MethodEntryEvent@java.lang.String:2336</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.String:4546">MethodEntryEvent@java.lang.String:4546</a> in thread main}
<br>
event set, policy:1, count:1 =
{<a class="moz-txt-link-abbreviated" href="mailto:MethodEntryEvent@java.lang.StringLatin1:192">MethodEntryEvent@java.lang.StringLatin1:192</a> in thread main}
<br>
<br>
Could anyone have a look please.
<br>
Thanks,
<br>
Egor
<br>
</blockquote>
</body>
</html>