PING: RFR: JDK-8151815: Could not parse core image with JSnap.

Yasumasa Suenaga yasuenag at gmail.com
Wed Apr 13 12:20:25 UTC 2016


Hi all,

Could you review and sponsor it?

>    http://cr.openjdk.java.net/~ysuenaga/JDK-8151815/webrev.01/

If it is not accepted, I think that we can add new field to PerfMemory for using in JSnap:
-----------------------
diff -r 4823056a5bbd src/share/vm/runtime/perfMemory.cpp
--- a/src/share/vm/runtime/perfMemory.cpp	Tue Apr 12 09:08:48 2016 +0000
+++ b/src/share/vm/runtime/perfMemory.cpp	Wed Apr 13 14:18:15 2016 +0900
@@ -45,11 +45,16 @@
                                              UINT_CHARS + 1;
  
  char*                    PerfMemory::_start = NULL;
+char*                    PerfMemory::_saved_start = NULL;
  char*                    PerfMemory::_end = NULL;
+char*                    PerfMemory::_saved_end = NULL;
  char*                    PerfMemory::_top = NULL;
+char*                    PerfMemory::_saved_top = NULL;
  size_t                   PerfMemory::_capacity = 0;
+size_t                   PerfMemory::_saved_capacity = 0;
  jint                     PerfMemory::_initialized = false;
  PerfDataPrologue*        PerfMemory::_prologue = NULL;
+PerfDataPrologue*        PerfMemory::_saved_prologue = NULL;
  
  void perfMemory_init() {
  
@@ -103,6 +108,8 @@
  
    // allocate PerfData memory region
    create_memory_region(capacity);
+  _saved_start = _start;
+  _saved_capacity = _capacity;
  
    if (_start == NULL) {
  
@@ -132,8 +139,11 @@
      }
  
      _prologue = (PerfDataPrologue *)_start;
+    _saved_prologue = _prologue;
      _end = _start + _capacity;
+    _saved_end = _end;
      _top = _start + sizeof(PerfDataPrologue);
+    _saved_top = _top;
    }
  
    assert(_prologue != NULL, "prologue pointer must be initialized");
-----------------------

If it is better, I will upload a webrev.


Thanks,

Yasumasa


On 2016/04/06 12:42, Yasumasa Suenaga wrote:
> Hi Dmitry,
>
> Thanks for your comment.
>
> I uploaded a new webrev. Could you review again?
>    http://cr.openjdk.java.net/~ysuenaga/JDK-8151815/webrev.01/
>
> On 2016/04/06 0:31, Dmitry Samersoff wrote:
>> Yasumasa,
>>
>> 1. It's better to change JSnap code to produce meaningful error message
>> instead of NPE.
>
> I added null check and set message to PerfMemory.java .
>
>
>> 2. We should check that no other consumer of perf counters rely on the
>> fact it's NULL after call to destroy(). I'm not sure that this part of
>> the fix is not dangerous.
>
> I added new flag (_destroyed) in PerfMemory class.
> This flag set true at PerfMemory::destroy().
>
> _start, _end, and more field which I removed from destroy() are private member of
> PerfMemory. I implemented that the getter functions of them check _destroyed flag,
> and returns same value before this change.
>
> So I think this change does not affect other place.
>
>
> Thanks,
>
> Yasumasa
>
>
>> -Dmitry
>>
>> On 2016-03-29 15:02, Yasumasa Suenaga wrote:
>>> PING: Could you review it?
>>>
>>>
>>> Yasumasa
>>>
>>>
>>> On 2016/03/22 21:24, Yasumasa Suenaga wrote:
>>>> PING: Could you review it?
>>>>
>>>> Yasumasa
>>>>
>>>> 2016/03/14 23:39 "Yasumasa Suenaga" <yasuenag at gmail.com
>>>> <mailto:yasuenag at gmail.com>>:
>>>>
>>>>      Hi all,
>>>>
>>>>      When I use `jhsdb jsnap` to get PerfCounter from core images, I
>>>> encountered NPE:
>>>>      -------------
>>>>      Exception in thread "main" java.lang.NullPointerException
>>>>               at sun.jvm.hotspot.tools.JSnap.run(JSnap.java:45)
>>>>               at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
>>>>               at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
>>>>               at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
>>>>               at sun.jvm.hotspot.tools.JSnap.main(JSnap.java:67)
>>>>               at sun.jvm.hotspot.SALauncher.runJSNAP(SALauncher.java:352)
>>>>               at sun.jvm.hotspot.SALauncher.main(SALauncher.java:404)
>>>>      -------------
>>>>
>>>>      PerfMemory::destroy() clears all members which are used in JSnap.
>>>>      Thus NPE is occurred.
>>>>
>>>>      I uploaded webrev for this issue.
>>>>      Could you review it?
>>>>
>>>>      http://cr.openjdk.java.net/~ysuenaga/JDK-8151815/webrev.00/
>>>>
>>>>      I cannot access JPRT.
>>>>      So I need a Sponsor.
>>>>
>>>>
>>>>      Thanks,
>>>>
>>>>      Yasumasa
>>>>
>>
>>


More information about the serviceability-dev mailing list