RFR: 8044398 Attach code should propagate errors in Diagnostic Commands as errors

Markus Grönlund markus.gronlund at oracle.com
Fri May 30 07:26:19 UTC 2014


Looks good.

/Markus

-----Original Message-----
From: Staffan Larsen 
Sent: den 30 maj 2014 08:51
To: serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net; hotspot-runtime-dev
Subject: RFR: 8044398 Attach code should propagate errors in Diagnostic Commands as errors

The code in attachListener.cpp does this: 

  DCmd::parse_and_execute(DCmd_Source_AttachAPI, out, op->arg(0), ' ', THREAD); 
  if (HAS_PENDING_EXCEPTION) { 
    java_lang_Throwable::print(PENDING_EXCEPTION, out); 
    out->cr(); 
    CLEAR_PENDING_EXCEPTION; 
    // The exception has been printed on the output stream 
    // If the JVM returns JNI_ERR, the attachAPI throws a generic I/O 
    // exception and the content of the output stream is not processed. 
    // By returning JNI_OK, the exception will be displayed on the client side 
  } 
  return JNI_OK; 

That was correct before the fix of JDK-8039173. After that fix, the attach framework is able to propagate error messages as exceptions when an attach command fails. 

The code in attachListener.cpp should be updated to: 

  DCmd::parse_and_execute(DCmd_Source_AttachAPI, out, op->arg(0), ' ', THREAD); 
  if (HAS_PENDING_EXCEPTION) { 
    java_lang_Throwable::print(PENDING_EXCEPTION, out); 
    out->cr(); 
    CLEAR_PENDING_EXCEPTION; 
    return JNI_ERR; 
  } 
  return JNI_OK; 

webrev: http://cr.openjdk.java.net/~sla/8044398/webrev.00/
bug: https://bugs.openjdk.java.net/browse/JDK-8044398

Thanks,
/Staffan


More information about the hotspot-runtime-dev mailing list