RFR(XXS): 8227117: normal interpreter table is not restored after single stepping with TLH

Daniel D. Daugherty daniel.daugherty at oracle.com
Fri Jul 5 20:24:11 UTC 2019


Greetings,

Here's the new webrev URLs after CR0:

Full:

http://cr.openjdk.java.net/~dcubed/8227117-webrev/1_for_jdk14.full/

Inc:

http://cr.openjdk.java.net/~dcubed/8227117-webrev/1_for_jdk14.inc/

Only src/hotspot/share/prims/jvmtiEventController.cpp changed in this
round. The only code change was this:

  VM_ChangeSingleStep::VM_ChangeSingleStep(bool on)
-  : _on(on != 0)
+  : _on(on)
  {
  }

The other change is a header comment block rewrite...

Thanks, in advance, for questions, comments or suggestions.

Dan



On 7/3/19 10:04 PM, Daniel D. Daugherty wrote:
> Greetings,
>
> Robbin recently discovered this issue with Thread Local Handshakes. Since
> he's not available at the moment, I'm handling the issue:
>
>     JDK-8227117 normal interpreter table is not restored after single 
> stepping with TLH
>     https://bugs.openjdk.java.net/browse/JDK-8227117
>
> When using Thread Local Handshakes, the normal interpreter table is
> not restored after single stepping. This issue is caused by the
> VM_ChangeSingleStep VM-op relying on SafepointSynchronize::end() to
> restore the normal interpreter table for the "off" case.
>
> Prior to Thread Local Handshakes, this was a valid assumption to make.
> SafepointSynchronize::end() has been refactored into
> disarm_safepoint() and it only calls Interpreter::ignore_safepoints()
> on the global safepoint branch. That matches up with the call to
> Interpreter::notice_safepoints() that is also on the global safepoint
> branch.
>
> The solution is for the VM_ChangeSingleStep VM-op for the "off" case
> to call Interpreter::ignore_safepoints() directly.
>
> Here's the webrev URL:
>
> http://cr.openjdk.java.net/~dcubed/8227117-webrev/0_for_jdk14/
>
> The fix is just a small addition to VM_ChangeSingleStep::doit():
>
>    if (_on) {
>      Interpreter::notice_safepoints();
> +  } else {
> +    Interpreter::ignore_safepoints();
>    }
>
> Everything else is just new logging support for future debugging of
> interpreter table management and single stepping.
>
> Tested this fix with Mach5 Tier[1-3] on the standard Oracle platforms.
> Mach5 Tier[4-6] on standard Oracle platforms is running now.
>
> Thanks, in advance, for questions, comments or suggestions.
>
> Dan
>
>



More information about the hotspot-runtime-dev mailing list