Skip to content

NPE in Ruby heap viewer #196

@chrisseaton

Description

@chrisseaton

Describe the bug
NPE when using the Ruby view of the heap.

To Reproduce
Connected to a TruffleRuby process. Take a heap dump. Try to view as Ruby.

Expected behavior
Being able to see the Ruby heap.

VisualVM log

java.lang.NullPointerException
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObjectDetailsProvider.getInstanceId(DynamicObjectDetailsProvider.java:111)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObjectDetailsProvider.getJSUdefined(DynamicObjectDetailsProvider.java:100)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObjectDetailsProvider.getDetailsString(DynamicObjectDetailsProvider.java:59)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.api.DetailsSupport.getDetailsString(DetailsSupport.java:70)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.spi.DetailsUtils.getInstanceString(DetailsUtils.java:204)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.spi.DetailsUtils.getInstanceFieldString(DetailsUtils.java:200)
	at org.graalvm.visualvm.heapviewer.truffle.details.SourceDetailsProvider.getDetailsString(SourceDetailsProvider.java:91)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.api.DetailsSupport.getDetailsString(DetailsSupport.java:70)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.spi.DetailsUtils.getInstanceString(DetailsUtils.java:204)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject$Property.<init>(DynamicObject.java:428)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject$Property.<init>(DynamicObject.java:418)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject.initFields(DynamicObject.java:226)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject.getFieldValues(DynamicObject.java:123)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject.getFieldValue(DynamicObject.java:128)
	at org.graalvm.visualvm.heapviewer.truffle.lang.ruby.RubyDetailsProvider.getDetailsString(RubyDetailsProvider.java:146)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.api.DetailsSupport.getDetailsString(DetailsSupport.java:70)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObjectDetailsProvider.getDetailsString(DynamicObjectDetailsProvider.java:75)
	at org.graalvm.visualvm.lib.profiler.heapwalk.details.api.DetailsSupport.getDetailsString(DetailsSupport.java:70)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject.computeType(DynamicObject.java:172)
	at org.graalvm.visualvm.heapviewer.truffle.dynamicobject.DynamicObject.getType(DynamicObject.java:160)
	at org.graalvm.visualvm.heapviewer.truffle.TruffleType$TypesComputer.getTypeName(TruffleType.java:179)
	at org.graalvm.visualvm.heapviewer.truffle.TruffleType$TypesComputer.addObject(TruffleType.java:157)
	at org.graalvm.visualvm.heapviewer.truffle.TruffleLanguageHeapFragment.computeStatistics(TruffleLanguageHeapFragment.java:165)
	at org.graalvm.visualvm.heapviewer.truffle.TruffleLanguageHeapFragment.checkInitialized(TruffleLanguageHeapFragment.java:123)
	at org.graalvm.visualvm.heapviewer.truffle.TruffleLanguageHeapFragment.getHeapSize(TruffleLanguageHeapFragment.java:78)
	at org.graalvm.visualvm.heapviewer.truffle.ui.TruffleSummaryView$OverviewSection.computeHeapData(TruffleSummaryView.java:248)
	at org.graalvm.visualvm.heapviewer.truffle.ui.TruffleSummaryView$OverviewSection.computeData(TruffleSummaryView.java:234)
	at org.graalvm.visualvm.heapviewer.truffle.ui.TruffleSummaryView$1$1.run(TruffleSummaryView.java:124)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
Caused: org.openide.util.RequestProcessor$SlowItem: task failed due to
	at org.openide.util.RequestProcessor.post(RequestProcessor.java:395)
	at org.graalvm.visualvm.heapviewer.truffle.ui.TruffleSummaryView$1.uiCreated(TruffleSummaryView.java:120)
	at org.graalvm.visualvm.heapviewer.ui.SummaryView.initUI(SummaryView.java:115)
	at org.graalvm.visualvm.heapviewer.ui.SummaryView.getComponent(SummaryView.java:83)
	at org.graalvm.visualvm.heapviewer.truffle.ui.TruffleSummaryView.getComponent(TruffleSummaryView.java:148)
	at org.graalvm.visualvm.heapviewer.ui.HeapViewerComponent$MainView.selectFeature(HeapViewerComponent.java:366)
	at org.graalvm.visualvm.heapviewer.ui.HeapViewerComponent$MainView$2.fireItemStateChanged(HeapViewerComponent.java:498)
	at javax.swing.AbstractButton$Handler.itemStateChanged(AbstractButton.java:2355)
	at javax.swing.DefaultButtonModel.fireItemStateChanged(DefaultButtonModel.java:455)
	at javax.swing.JToggleButton$ToggleButtonModel.setSelected(JToggleButton.java:272)
	at javax.swing.ButtonGroup.setSelected(ButtonGroup.java:165)
	at javax.swing.JToggleButton$ToggleButtonModel.setSelected(JToggleButton.java:254)
	at javax.swing.AbstractButton.setSelected(AbstractButton.java:348)
	at org.graalvm.visualvm.lib.ui.swing.StayOpenPopupMenu.performAction(StayOpenPopupMenu.java:132)
	at org.graalvm.visualvm.lib.ui.swing.StayOpenPopupMenu.performAction(StayOpenPopupMenu.java:143)
	at org.graalvm.visualvm.lib.ui.swing.StayOpenPopupMenu.access$000(StayOpenPopupMenu.java:71)
	at org.graalvm.visualvm.lib.ui.swing.StayOpenPopupMenu$RadioButtonItem.processMouseEvent(StayOpenPopupMenu.java:257)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
[catch] at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Screenshots
n/a

Desktop (please complete the following information):

  • OS: MacOS
  • JDK version 1.8.0_222; OpenJDK 64-Bit Server VM 25.222-b10; AdoptOpenJDK
  • Version 1.8

Additional context
n/a

CC @eregon.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions