From 52458bf82ef76c103c8bc57648150fdaa2442666 Mon Sep 17 00:00:00 2001 From: Cheleswer Sahu Date: Thu, 29 Oct 2015 05:24:30 -0700 Subject: [PATCH] 8129348: Debugger hangs in trace mode with TRACE_SENDS Reviewed-by: sspitsyn --- .../classes/com/sun/tools/jdi/InvokableTypeImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/jdk/src/jdk.jdi/share/classes/com/sun/tools/jdi/InvokableTypeImpl.java b/jdk/src/jdk.jdi/share/classes/com/sun/tools/jdi/InvokableTypeImpl.java index 61a23301861..3672435273a 100644 --- a/jdk/src/jdk.jdi/share/classes/com/sun/tools/jdi/InvokableTypeImpl.java +++ b/jdk/src/jdk.jdi/share/classes/com/sun/tools/jdi/InvokableTypeImpl.java @@ -236,6 +236,15 @@ abstract class InvokableTypeImpl extends ReferenceTypeImpl { final MethodImpl method, final ValueImpl[] args, final int options) { + /* + * Cache the values of args when TRACE_SENDS is enabled, for later printing. + * If not cached, printing causes a remote call while synchronized, and deadlock. + */ + if ((vm.traceFlags & VirtualMachineImpl.TRACE_SENDS) != 0) { + for (ValueImpl arg: args) { + arg.toString(); + } + } CommandSender sender = getInvokeMethodSender(thread, method, args, options); PacketStream stream; if ((options & ClassType.INVOKE_SINGLE_THREADED) != 0) {