charmplusplus / projections

Performance Analysis Tool for Charm++
Apache License 2.0
5 stars 3 forks source link

Remove support for long-broken Topology Display tool #53

Closed matthiasdiener closed 6 years ago

matthiasdiener commented 6 years ago

Original issue: https://charm.cs.illinois.edu/redmine/issues/1886


When trying to open Tools->Topology Display, the following message appears on the terminal:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no J3D in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at javax.media.j3d.MasterControl$22.run(MasterControl.java:889)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:886)
    at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:229)
    at javax.media.j3d.Canvas3D.<clinit>(Canvas3D.java:3533)
    at projections.Tools.TopologyDisplay.TopologyDisplayWindow.<init>(TopologyDisplayWindow.java:199)
    at projections.gui.MainMenuManager.actionPerformed(MainMenuManager.java:448)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    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:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    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)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Tested with JDK8/10 on Linux and Mac.

matthiasdiener commented 5 years ago

Original date: 2018-04-26 15:20:13


Patch to remove it: https://charm.cs.illinois.edu/gerrit/#/c/projections/+/4065/

stwhite91 commented 5 years ago

Original date: 2018-04-27 15:54:52


Follow-up to remove .topo file generation still needs to be done, as noted in the gerrit patch.

matthiasdiener commented 5 years ago

Original date: 2018-04-27 17:32:35


Are the .topo files used anywhere outside Projections?

stwhite91 commented 5 years ago

Original date: 2018-05-01 14:14:20


I don't think so. The only other thing that came to mind was BigSim, since it can simulate different network topologies, but that doesn't appear to use ".topo" anywhere.

ericjbohm commented 5 years ago

Original date: 2018-05-02 16:15:47


The .topo files were only used for display and analysis in topology aware studies. AFAIK. When it worked, the feature was enabled if projections was built with java3d support and the application was run on a machine that had a 3D topology that could be extracted.

rbuch commented 5 years ago

Original date: 2018-05-02 17:48:01


I think all of this will still work if things are run as Eric said. Using a different version of the j3d library and getting a reasonably close version of libjava3d, I was able to get a window to appear, but it then crashed, likely because the topo file was malformed (seemingly because it wasn't a 3D topology). I think instead of just taking the whole thing out, we can check to see if the j3d library can be loaded or not at startup and toggle the display of the topology tool based on the results of that.

rbuch commented 5 years ago

Original date: 2018-05-09 17:42:54


Ronak Buch wrote:

I think all of this will still work if things are run as Eric said. Using a different version of the j3d library and getting a reasonably close version of libjava3d, I was able to get a window to appear, but it then crashed, likely because the topo file was malformed (seemingly because it wasn't a 3D topology). I think instead of just taking the whole thing out, we can check to see if the j3d library can be loaded or not at startup and toggle the display of the topology tool based on the results of that.

As a matter of record, rather than doing this, it seems that this tool was of limited utility for modern/future use, so it was completely removed rather than merely disabling it if the environment isn't correct.

matthiasdiener commented 5 years ago

Original date: 2018-05-14 18:04:44


Followup patch to remove .topo file creation: https://charm.cs.illinois.edu/gerrit/#/c/charm/+/4171/ https://github.com/UIUC-PPL/charm/commit/a8b455cfe7d276aa2d7cfae6fc7fe05f1de13427