On Tue, 26 Jan 2021 00:31:56 GMT, Yasumasa Suenaga <ysuen...@openjdk.org> wrote:
>> I saw the exception as following when I chose "Monitor Cache Dump" menu on >> HSDB: >> >> Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError >> at >> jdk.hotspot.agent/sun.jvm.hotspot.ui.MonitorCacheDumpPanel.dumpOn(MonitorCacheDumpPanel.java:92) >> at >> jdk.hotspot.agent/sun.jvm.hotspot.ui.MonitorCacheDumpPanel.<init>(MonitorCacheDumpPanel.java:59) >> at >> jdk.hotspot.agent/sun.jvm.hotspot.HSDB.showMonitorCacheDumpPanel(HSDB.java:1556) >> at >> jdk.hotspot.agent/sun.jvm.hotspot.HSDB$16.actionPerformed(HSDB.java:338) >> at >> java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) >> at >> java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) >> at >> java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) >> at >> java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) >> at >> java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374) >> at >> java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1022) >> at >> java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1066) >> at >> java.desktop/java.awt.Component.processMouseEvent(Component.java:6617) >> at >> java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) >> at java.desktop/java.awt.Component.processEvent(Component.java:6382) >> at java.desktop/java.awt.Container.processEvent(Container.java:2264) >> at >> java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4993) >> at >> java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2322) >> at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825) >> at >> java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4934) >> at >> java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4563) >> at >> java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4504) >> at >> java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2308) >> at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773) >> at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825) >> at >> java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) >> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) >> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) >> at >> java.base/java.security.AccessController.doPrivileged(AccessController.java:391) >> at >> java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) >> at >> java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) >> at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) >> at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) >> at >> java.base/java.security.AccessController.doPrivileged(AccessController.java:391) >> at >> java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) >> at >> java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) >> at >> java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) >> at >> java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) >> at >> java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) >> at >> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) >> at >> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) >> at >> java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) >> Caused by: java.lang.ArithmeticException: / by zero >> at >> jdk.hotspot.agent/sun.jvm.hotspot.runtime.ObjectSynchronizer.initialize(ObjectSynchronizer.java:55) >> at >> jdk.hotspot.agent/sun.jvm.hotspot.runtime.ObjectSynchronizer$1.update(ObjectSynchronizer.java:40) >> at >> jdk.hotspot.agent/sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:578) >> at >> jdk.hotspot.agent/sun.jvm.hotspot.runtime.ObjectSynchronizer.<clinit>(ObjectSynchronizer.java:38) >> ... 41 more >> >> This exception seems to be caused by >> [JDK-8253064](https://bugs.openjdk.java.net/browse/JDK-8253064). It has >> changed `ObjectSynchronizer`, but it has not changed SA code. > > Yasumasa Suenaga has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains seven commits: > > - Update comments for ObjectMonitorIterator > - Merge remote-tracking branch 'upstream/master' into JDK-8259008 > - Update copyright year > - Remove unused code > - Fix comments > - Merge > - 8259008: ArithmeticException was thrown at "Monitor Cache Dump" on HSDB Hi Yasumasa, It looks good to me. I have one minor question. This loop in the test is a little bit confusing as it has not more than one iteration: 55 while (itr.hasNext()) { 56 ObjectMonitor mon = (ObjectMonitor)itr.next(); 57 Oop oop = heap.newOop(mon.object()); 58 System.out.println("Monitor found: " + oop.getKlass().getName().asString()); 59 return; 60 } Would it better to replace it with if-statement? Thanks, Serguei ------------- Marked as reviewed by sspitsyn (Reviewer). PR: https://git.openjdk.java.net/jdk/pull/1910