[8u] RFR for JDK-8162419: closed/com/oracle/jfr/runtime/TestVMInfoEvent.sh failing after JDK-8155968

Chris Plummer chris.plummer at oracle.com
Thu Aug 11 23:20:08 UTC 2016


Hi Shafi,

Please update the copyright date to 2016 and change "numbers of" to 
"number of".

I'm not so sure I agree with the comments in the CR that you can just 
backport this change to vsnprintf(), but not the other changes in the 
relevant changeset. For example:

--- a/src/share/vm/runtime/java.cpp    Mon Nov 03 11:34:13 2014 -0800
+++ b/src/share/vm/runtime/java.cpp    Wed Oct 29 10:13:24 2014 +0100
@@ -705,25 +705,35 @@
  }

  void JDK_Version::to_string(char* buffer, size_t buflen) const {
+  assert(buffer && buflen > 0, "call with useful buffer");
    size_t index = 0;
+
    if (!is_valid()) {
      jio_snprintf(buffer, buflen, "%s", "(uninitialized)");
    } else if (is_partially_initialized()) {
      jio_snprintf(buffer, buflen, "%s", "(uninitialized) pre-1.6.0");
    } else {
-    index += jio_snprintf(
+    int rc = jio_snprintf(
          &buffer[index], buflen - index, "%d.%d", _major, _minor);
+    if (rc == -1) return;
+    index += rc;
      if (_micro > 0) {
-      index += jio_snprintf(&buffer[index], buflen - index, ".%d", _micro);
+      rc = jio_snprintf(&buffer[index], buflen - index, ".%d", _micro);
      }

I think your change to vsnprintf() will break JDK_Version::to_string() 
if the above diff if not applied. You could argue that the above code is 
already broken because -1 is could be returned to it on Windows. 
However, your changes expand that risk to all platforms.

cheers,

Chris

On 8/11/16 5:14 AM, Shafi Ahmad wrote:
 > Hi,
 >
 > Could I get one more review for this safe change.
 >
 > Regards,
 > Shafi
 >
 >> -----Original Message-----
 >> From: David Holmes
 >> Sent: Thursday, August 11, 2016 9:52 AM
 >> To: Shafi Ahmad; hotspot-runtime-dev at openjdk.java.net
 >> Subject: Re: [8u] RFR for JDK-8162419:
 >> closed/com/oracle/jfr/runtime/TestVMInfoEvent.sh failing after JDK-
 >> 8155968
 >>
 >> Hi Shafi,
 >>
 >> On 10/08/2016 6:34 PM, Shafi Ahmad wrote:
 >>> Hi,
 >>>
 >>> Please review the code change for "JDK-8162419:
 >> closed/com/oracle/jfr/runtime/TestVMInfoEvent.sh failing after JDK-
 >> 8155968" to jdk8u.
 >>> Please note this is partial backport of
 >> http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/110ec5963eb1#l23.1
 >>> Summary:
 >>> Microsoft version of vsnprintf() behaves differently from the 
standard C
 >> version when there is not enough space in the buffer.
 >>> Microsoft version doesn't null terminates its output under error 
conditions,
 >> whereas the standard C version does. On Windows, it returns -1.
 >>> We handle both cases here and always return -1, and perform null
 >> termination.
 >>
 >> This looks fine to me.
 >>
 >> Thanks,
 >> David
 >>
 >>> Jdk8 bug: https://bugs.openjdk.java.net/browse/JDK-8162419
 >>> Webrev link: http://cr.openjdk.java.net/~shshahma/8162419/webrev.00/
 >>>
 >>> Testing: jprt
 >>>
 >>> Regards,
 >>> Shafi
 >>>




More information about the hotspot-runtime-dev mailing list