JDK-5029618 : SA utilities: jinfo -sysprops throws NPE when debuggee is runs with class sharin
  • Type: Bug
  • Component: core-svc
  • Sub-Component: debugger
  • Affected Version: 5.0
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2004-04-09
  • Updated: 2004-05-10
  • Resolved: 2004-04-19
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 b48Fixed
Related Reports
Duplicate :  
Description
Debuggee was run with class sharing on :

java -client t  // by default class sharing is on

or

java -client -Xshare:on t // explicit class sharing on


Then, 

jinfo -sysprops <pid> 

is run, NPE is thrown:


null = Exception in thread "main" java.lang.NullPointerException
    at java.util.Hashtable.get(Hashtable.java:336)
    at sun.jvm.hotspot.tools.SysPropsDumper.run(SysPropsDumper.java:26)
    at sun.jvm.hotspot.tools.JInfo.run(JInfo.java:46)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:204)
    at sun.jvm.hotspot.tools.JInfo.main(JInfo.java:73)


###@###.### 2004-04-09

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger-beta2 FIXED IN: tiger-beta2 INTEGRATED IN: tiger-b48 tiger-beta2 VERIFIED IN: tiger-beta2
14-06-2004

SUGGESTED FIX Webrev: http://bongo.india/debugging/sa/unsupp-utils/5029618-and-5029631/webrev/ ###@###.### 2004-04-13
13-04-2004

EVALUATION When class sharing is on, some strings may be located in shared heap. sun.jvm.hotspot.utilities.ObjectReader checks validity of OopHandle using RobustOopDeterminator -- which uses Universe.isIn(Address) method to check whether the pointer is in collected heap. CollectedHeap in turn checks whether the pointer falls in any of Generations. In perm gen. pointer check, shared heap should be considered. Currently, CompactingPermGenGen class inherits isIn() from super class. Instead of this, the code should look similar to is_in() in VM code. (which takes care of shared heap). ###@###.### 2004-04-09
09-04-2004