Hi,

I'd like a sanity check review for backporting this from latest/9 to jdk8u. It's changing os:free to delete.

In 8u the same change is relevant, the changeset does not import directly as we have to remove an (unnecessary) NMT parameter (which gets removed by 8060074 in jdk9).

Thanks
Kevin

diff --git a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp 
b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
@@ -68,11 +68,11 @@
~JvmtiConstantPoolReconstituter() {
     if (_symmap != NULL) {
-      os::free(_symmap, mtClass);
+      delete _symmap;
       _symmap = NULL;
     }
     if (_classmap != NULL) {
-      os::free(_classmap, mtClass);
+      delete _classmap;
       _classmap = NULL;
     }
   }



-------- Forwarded Message --------
Subject:        Re: RFR: 8035938: Memory leak in JvmtiEnv::GetConstantPool
Date:   Fri, 16 Jan 2015 18:28:50 +0000
From:   Kevin Walls <[email protected]>
Organization:   Oracle Corporation
To: [email protected], Mattis Castegren <[email protected]>
CC:     [email protected]



Thanks Serguei, thanks Dan!


On 16/01/2015 17:51, Daniel D. Daugherty wrote:
> src/share/vm/prims/jvmtiClassFileReconstituter.hpp

    These lines allocate:

    line 59:      _symmap = new SymbolHashMap();
    line 60:      _classmap = new SymbolHashMap();

    and these lines free incorrectly:

    line 71:        os::free(_symmap);
    line 75:        os::free(_classmap);

    so the proposed fix looks good!


Dan


On 1/16/15 3:17 AM, Mattis Castegren wrote:
Hi

This bug is targeted for 7u80, with rdp2 next Tuesday. It would be
great to get a review for this fix as soon as possible, so that we
can get this fix out in the last public JDK 7 release.

Kind Regards
/Mattis

-----Original Message-----
From: Kevin Walls
Sent: den 15 januari 2015 15:18
To:[email protected]
Subject: RFR: 8035938: Memory leak in JvmtiEnv::GetConstantPool

Hi,

This is a review request for a change in JVMTI, where we os::free() some
objects where we should delete them.  The problem was logged against 7,
though it exists up to the present day, below is a diff in current
latesthttp://hg.openjdk.java.net/jdk9/hs-rt/hotspot


Testing:
I've used a native JVMTI agent to call GetConstantPool() during an
object allocation callback.  Memory usage does appear less after the
change, it can be 5-6MB in a trivial testcase with a small number of
allocations monitored, each inoking GetConstantlPool().

(In my test agent the  GetConstantPool() call returns a JVMTI error 101
after a fairly short time and a relatively small number of allocations
are monitored.)

If this is OK to submit without testcase that's great.  I don't see
other examples of native agents in the standard hotspot tests.

bug
https://bugs.openjdk.java.net/browse/JDK-8035938

diff:
$ hg diff src/share/vm/prims/jvmtiClassFileReconstituter.hpp
diff --git a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp
@@ -68,11 +68,11 @@

     ~JvmtiConstantPoolReconstituter() {
       if (_symmap != NULL) {
-      os::free(_symmap);
+      delete _symmap;
         _symmap = NULL;
       }
       if (_classmap != NULL) {
-      os::free(_classmap);
+      delete _classmap;
         _classmap = NULL;
       }
     }



Thanks
Kevin







Reply via email to