Community
Participate
Working Groups
Created attachment 289192 [details] icon with low resolution and "mat" name The application icon has a very low resolution see attached screenshot. Also, the application name is "mat" instead of "Eclipse Memory Analyzer" or "Memory Analyzer". I have downloaded: https://www.eclipse.org/downloads/download.php?file=/mat/1.14.0/rcp/MemoryAnalyzer-1.14.0.20230315-macosx.cocoa.aarch64.dmg ```shell $ sw_vers ProductName: macOS ProductVersion: 14.0 BuildVersion: 23A344 $ uname -a Darwin dev 23.0.0 Darwin Kernel Version 23.0.0: Fri Sep 15 14:41:34 PDT 2023; root:xnu-10002.1.13~1/RELEASE_ARM64_T8103 arm64 $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment Homebrew (build 21) OpenJDK 64-Bit Server VM Homebrew (build 21, mixed mode, sharing) $ /usr/libexec/PlistBuddy -c "Print:CFBundleName" -c "Print:CFBundleVersion" /Applications/mat.app/Contents/Info.plist MemoryAnalyzer 1.14.0.202303151743 ``` https://developer.apple.com/design/human-interface-guidelines/app-icons#macOS-app-icon-sizes https://wiki.eclipse.org/Platform-releng/Updating_Branding#MacOSX https://bootcamp.uxdesign.cc/5-steps-to-create-a-macos-app-icon-in-icns-format-a659f27f1a85
Created attachment 289193 [details] low resolution in finder as well
Thanks for report, and for the images. I think the icons come from org.eclipse.mat.ui.rcp/icons, and this link shows them: https://eclipse.googlesource.com/mat/org.eclipse.mat/+/refs/heads/master/plugins/org.eclipse.mat.ui.rcp/icons/ It looks like both of the images in the attachments are like: https://eclipse.googlesource.com/mat/org.eclipse.mat/+/refs/heads/master/plugins/org.eclipse.mat.ui.rcp/icons/memory_analyzer_48.png There is some help for icon editing here: https://wiki.eclipse.org/MemoryAnalyzer/Contributor_Reference#Creating_and_editing_icons I created some of those icons via bug 477796. The finder icon looks like this: https://eclipse.googlesource.com/mat/org.eclipse.mat/+/refs/heads/master/plugins/org.eclipse.mat.ui.rcp/icons/memory_analyzer_48.png but perhaps is packaged in memory_analyzer.icns Add launcher icon for macOS https://git.eclipse.org/r/c/mat/org.eclipse.mat/+/169998 https://eclipse.googlesource.com/mat/org.eclipse.mat/+/f51794338d4ceedf398e5a53560c354bc13a4010
I generated the higher resolution icons based on https://wiki.eclipse.org/File:Des_cons_core-wiz.gif but with an extra link half-way up the database and by reflecting the find icon.
The memory_analyzer.icns file just had two icons: File: memory_analyzer.icns info: 310 bytes, plist: info ic07: 15382 bytes, png: 128x128 ic05: 2253 bytes, argb: 32x32 and the 128x128 icon was jagged. I have updated the 48x48 icon to use a higher resolution magnifying glass; I hope it is not too big. I have also rebuilt the memory_analyzer.icns file with as many icons as I can: File: memory_analyzer.icns TOC : 72 bytes, bin: TOC ic04: 722 bytes, argb: 16x16 ic11: 900 bytes, png: 16x16@2x SB24: 2082 bytes, png: 24x24@2x ic05: 2319 bytes, argb: 32x32 ic12: 4700 bytes, png: 32x32@2x icp6: 2082 bytes, png: 48x48 ic07: 6094 bytes, png: 128x128 ic13: 7507 bytes, png: 128x128@2x ic08: 7507 bytes, png: 256x256 https://git.eclipse.org/r/c/mat/org.eclipse.mat/+/204834 https://git.eclipse.org/c/mat/org.eclipse.mat.git/commit/?id=0fd9941d6d0870b1e81aa42873b99c5bd505ba2b Sebastian, please retest with a snapshot build: https://eclipse.dev/mat/snapshotBuilds.php If you can test at a variety of resolutions, or with a monitor and a laptop display, so much the better. I haven't done anything about the mat.app name yet.
On Windows with a 2560x1600 16-inch display (~188dpi) at 150% for icons, Windows 11 uses the 48x48 icon, which is now the icon with the bigger magnifying glass. Other lower resolutions seem to use a different icon - perhaps 32x32.
I don't yet understand the mat.app problem. The Memory Analyzer dmg unpacks to: mat/mat.app/Contents The Eclipse dmg unpacks into Eclipse/Eclipse.app/Contents but I thought that the Info.plist file in those directories was more significant, with fields like: <key>CFBundleName</key> <string>MemoryAnalyzer</string> <key>CFBundleDisplayName</key> <string>MemoryAnalyzer</string> compared to <key>CFBundleName</key> <string>Eclipse</string> <key>CFBundleDisplayName</key> <string>Eclipse</string> Perhaps those are used when the application is actually installed.
(In reply to Andrew Johnson from comment #6) > I don't yet understand the mat.app problem. Normally on macOS, the name of the .app is human friendly; presumably, something like Eclipse Memory Analyzer Tool. I use something like the following internally: <build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-p2-director-plugin</artifactId> <configuration> <products> <product> <id>... uid from .product file ...</id> <rootFolders> <macosx>Eclipse Memory Analyzer Tool.app</macosx> </rootFolders> </product> </products>
Kevin, please could you experiment with the app name problem. I thought Info.plist should have helped, but perhaps not. I think the directory names on Windows should be short, as our documentation already might refer to the /mat directory. Also Windows has trouble with long paths. so perhaps? <rootFolder>mat</rootFolder> <rootFolders> <macosx>Eclipse Memory Analyzer tool.app</macosx> </rootFolders> or <macosx>Eclipse Memory Analyzer.app</macosx> or <macosx>Memory Analyzer.app</macosx> depending on what the style is for a Mac, as 'tool' is not part of the official name so shouldn't be capitalized? The Info.plist files gives the name as 'MemoryAnalyzer'. https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundlename https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundledisplayname Where does that 'MemoryAnalyzer' come from? It appears in mat.product as <launcher name="MemoryAnalyzer"> but that is common across platforms, and the Eclipse version of Info.plist has 'Eclipse' has the cfbundlename, but 'eclipse' as the executable. https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#/apple_ref/doc/uid/20001431-110725 >In macOS, before displaying a localized name for your bundle, the Finder compares the value of this key against the actual name of your bundle in the file system. If the two names match, the Finder >proceeds to display the localized name from the appropriate InfoPlist.strings file of your bundle. If the names do not match, the Finder displays the file-system name. so I think we should match the name. I think there are some Mac signing references to 'mat.app' elsewhere in the POM which would need to be fixed for the new name. This might be how Info.plist is built: https://github.com/eclipse-equinox/p2/blob/master/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java#L549 Perhaps the name has to be "MemoryAnalyzer".
I've changed the build to now have MemoryAnalyzer.app The p2 builder has the CFBundleName matching the executable, and for MacOS CFBundleName should match the .app name to allow the bundle name to be localized with a InfoPlist.strings file. Does this Mac build still run properly? Does it display any better?
https://git.eclipse.org/r/c/mat/org.eclipse.mat/+/204896 https://git.eclipse.org/c/mat/org.eclipse.mat.git/commit/?id=c25da90d0d4830d47e00a7b8279a89313d81ae59
I tried a nightly build and the name looks good now (MemoryAnalyzer) but it fails to launch: $ ./MemoryAnalyzer -debug -consoleLog Start VM: --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED -Xmx1024m -Dorg.eclipse.swt.internal.carbon.smallFonts -XstartOnFirstThread -Djava.class.path=/Users/kevin/work/mat/nightly/MemoryAnalyzer.app/Contents/MacOS//../Eclipse/plugins/org.eclipse.equinox.launcher_1.6.600.v20231012-1237.jar -os macosx -ws cocoa -arch aarch64 -showsplash -launcher /Users/kevin/work/mat/nightly/MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer -name MemoryAnalyzer --launcher.library /Users/kevin/work/mat/nightly/MemoryAnalyzer.app/Contents/MacOS//../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.aarch64_1.2.800.v20231003-1442/eclipse_11802.so -startup /Users/kevin/work/mat/nightly/MemoryAnalyzer.app/Contents/MacOS//../Eclipse/plugins/org.eclipse.equinox.launcher_1.6.600.v20231012-1237.jar --launcher.overrideVmargs -debug -consoleLog -vm /Library/Java/JavaVirtualMachines/ibm-semeru-open-17.jdk/Contents/Home/bin/../lib/server/libjvm.dylib -vmargs --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED -Xmx1024m -Dorg.eclipse.swt.internal.carbon.smallFonts -XstartOnFirstThread -Djava.class.path=/Users/kevin/work/mat/nightly/MemoryAnalyzer.app/Contents/MacOS//../Eclipse/plugins/org.eclipse.equinox.launcher_1.6.600.v20231012-1237.jar Exception in thread "(unnamed thread)" java/lang/InternalError: linkToTargetMethod=Lambda(a0:L,a1:L)=>{ t2:L=MethodHandle.invokeBasic(a1:L,a0:L);t2:L} at java/lang/invoke/MethodHandleStatics.newInternalError (java.base@17.0.8.1/MethodHandleStatics.java:151) at java/lang/invoke/LambdaForm.compileToBytecode (java.base@17.0.8.1/LambdaForm.java:871) at java/lang/invoke/Invokers.callSiteForm (java.base@17.0.8.1/Invokers.java:609) at java/lang/invoke/Invokers.linkToTargetMethod (java.base@17.0.8.1/Invokers.java:574) at java/lang/invoke/MethodHandleNatives.linkCallSiteImpl (java.base@17.0.8.1/MethodHandleNatives.java:288) at java/lang/invoke/MethodHandleNatives.linkCallSite (java.base@17.0.8.1/MethodHandleNatives.java:271) at java/lang/invoke/MethodHandleResolver.resolveInvokeDynamic (java.base@17.0.8.1/MethodHandleResolver.java:199) at java/lang/WeakPairMap.computeIfAbsent (java.base@17.0.8.1/WeakPairMap.java:157) at java/lang/Module.implAddExportsOrOpens (java.base@17.0.8.1/Module.java:957) at java/lang/Module.implAddExportsToAllUnnamed (java.base@17.0.8.1/Module.java:868) at java/lang/Access.addExportsToAllUnnamed (java.base@17.0.8.1/Access.java:273) at jdk/internal/module/Modules.addExportsToAllUnnamed (java.base@17.0.8.1/Modules.java:119) at jdk/internal/module/ModuleBootstrap.addExtraExportsOrOpens (java.base@17.0.8.1/ModuleBootstrap.java:773) at jdk/internal/module/ModuleBootstrap.addExtraExportsAndOpens (java.base@17.0.8.1/ModuleBootstrap.java:705) at jdk/internal/module/ModuleBootstrap.boot2 (java.base@17.0.8.1/ModuleBootstrap.java:465) at jdk/internal/module/ModuleBootstrap.boot (java.base@17.0.8.1/ModuleBootstrap.java:181) at java/lang/ClassLoader.initializeClassLoaders (java.base@17.0.8.1/ClassLoader.java:214) at java/lang/Thread.initialize (java.base@17.0.8.1/Thread.java:441) at java/lang/Thread.<init> (java.base@17.0.8.1/Thread.java:168)
That error was with IBM Semeru Runtimes. Launching with HotSpot works. I could previously launch MAT with IBM Semeru Runtimes (e.g. the most recent 1.14 build).
I don't know what has gone wrong. Can you reproduce the error with a local build? If so, if you revert this change, does it fix it? We now hava a moving target, as https://download.eclipse.org/eclipse/updates/4.30-I-builds/ in mat-2023-12i can change. That's another possibility.
Perhaps that error would go away if --add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED was removed, but that is needed to get the IBM DTFJ plugin to work.
I failed to reproduce with a local build (with IBM Semeru Runtimes): 1. git clone... 2. cd org.eclipse.mat/parent 3. mvn -DskipTests=true clean install 4. cd ../org.eclipse.mat.product/target/products/org.eclipse.mat.ui.rcp.MemoryAnalyzer/macosx/cocoa/aarch64/MemoryAnalyzer.app/Contents/MacOS 5. ./MemoryAnalyzer Do I need some other arguments to match what the build server is creating?
Yes, the build server is building with -Dmat-target=mat-2023-12i -Dmat-product=mat-2023-12 See bug 582476 comment 4.
With that build definition, I can reproduce the launch failure locally. Again, the failure is only with IBM Semeru Runtimes. I received the following failure the first time and every subsequent launch I receive the java/lang/InternalError failure as originally reported. !ENTRY org.eclipse.osgi 4 0 2023-10-17 15:36:11.735 !MESSAGE An error occurred while automatically activating bundle org.eclipse.equinox.registry (130). !STACK 0 org.osgi.framework.BundleException: Exception in org.eclipse.core.internal.registry.osgi.Activator.start() of bundle org.eclipse.equinox.registry. at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:839) at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767) at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032) at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371) at org.eclipse.osgi.container.Module.doStart(Module.java:605) at org.eclipse.osgi.container.Module.start(Module.java:468) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513) at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570) at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397) at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) at org.eclipse.osgi.internal.loader.sources.MultiSourcePackage.loadClass(MultiSourcePackage.java:37) at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:496) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1095) at java.base/java.lang.J9VMInternals.prepareClassImpl(Native Method) at java.base/java.lang.J9VMInternals.prepare(J9VMInternals.java:361) at java.base/java.lang.Class.getConstructors(Class.java:743) at org.apache.felix.scr.impl.inject.internal.ComponentConstructorImpl.<init>(ComponentConstructorImpl.java:98) at org.apache.felix.scr.impl.inject.internal.ComponentMethodsImpl.initComponentMethods(ComponentMethodsImpl.java:110) at org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:1029) at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1057) at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955) at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:776) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:437) at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:671) at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:310) at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:593) at org.apache.felix.scr.impl.Activator.access$200(Activator.java:74) at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:460) at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:139) at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:49) at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475) at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:949) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229) at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138) at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217) at org.eclipse.osgi.container.Module.publishEvent(Module.java:499) at org.eclipse.osgi.container.Module.start(Module.java:486) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1852) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1845) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1786) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1750) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1672) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) Caused by: java.lang.NullPointerException at java.base/java.util.HashMap.resize(HashMap.java:702) at java.base/java.util.HashMap.putVal(HashMap.java:661) at java.base/java.util.HashMap.put(HashMap.java:610) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.<init>(XML11Configuration.java:645) at java.xml/com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:130) at java.xml/com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:91) at java.xml/com.sun.org.apache.xerces.internal.parsers.SAXParser.<init>(SAXParser.java:113) at java.xml/com.sun.org.apache.xerces.internal.parsers.SAXParser.<init>(SAXParser.java:98) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.<init>(SAXParserImpl.java:405) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:137) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:124) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:95) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:134) at org.eclipse.core.internal.registry.ExtensionsParser.parseManifest(ExtensionsParser.java:409) at org.eclipse.core.internal.registry.ExtensionRegistry.addContribution(ExtensionRegistry.java:1081) at org.eclipse.core.internal.registry.ExtensionRegistry.addContribution(ExtensionRegistry.java:1058) at org.eclipse.core.internal.registry.osgi.EclipseBundleListener.addBundle(EclipseBundleListener.java:186) at org.eclipse.core.internal.registry.osgi.EclipseBundleListener.processBundles(EclipseBundleListener.java:94) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.onStart(RegistryStrategyOSGI.java:243) at org.eclipse.core.internal.registry.ExtensionRegistry.<init>(ExtensionRegistry.java:740) at org.eclipse.core.runtime.RegistryFactory.createRegistry(RegistryFactory.java:61) at org.eclipse.core.internal.registry.osgi.Activator.startRegistry(Activator.java:143) at org.eclipse.core.internal.registry.osgi.Activator.start(Activator.java:60) at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818) at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) at java.base/java.security.AccessController.doPrivileged(AccessController.java:748) at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810) ... 59 more Root exception: java.lang.NullPointerException at java.base/java.util.HashMap.resize(HashMap.java:702) at java.base/java.util.HashMap.putVal(HashMap.java:661) at java.base/java.util.HashMap.put(HashMap.java:610) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.<init>(XML11Configuration.java:645) at java.xml/com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:130) at java.xml/com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:91) at java.xml/com.sun.org.apache.xerces.internal.parsers.SAXParser.<init>(SAXParser.java:113) at java.xml/com.sun.org.apache.xerces.internal.parsers.SAXParser.<init>(SAXParser.java:98) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.<init>(SAXParserImpl.java:405) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:137) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:124) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:95) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:134) at org.eclipse.core.internal.registry.ExtensionsParser.parseManifest(ExtensionsParser.java:409) at org.eclipse.core.internal.registry.ExtensionRegistry.addContribution(ExtensionRegistry.java:1081) at org.eclipse.core.internal.registry.ExtensionRegistry.addContribution(ExtensionRegistry.java:1058) at org.eclipse.core.internal.registry.osgi.EclipseBundleListener.addBundle(EclipseBundleListener.java:186) at org.eclipse.core.internal.registry.osgi.EclipseBundleListener.processBundles(EclipseBundleListener.java:94) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.onStart(RegistryStrategyOSGI.java:243) at org.eclipse.core.internal.registry.ExtensionRegistry.<init>(ExtensionRegistry.java:740) at org.eclipse.core.runtime.RegistryFactory.createRegistry(RegistryFactory.java:61) at org.eclipse.core.internal.registry.osgi.Activator.startRegistry(Activator.java:143) at org.eclipse.core.internal.registry.osgi.Activator.start(Activator.java:60) at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818) at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) at java.base/java.security.AccessController.doPrivileged(AccessController.java:748) at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810) at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767) at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032) at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371) at org.eclipse.osgi.container.Module.doStart(Module.java:605) at org.eclipse.osgi.container.Module.start(Module.java:468) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513) at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570) at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397) at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) at org.eclipse.osgi.internal.loader.sources.MultiSourcePackage.loadClass(MultiSourcePackage.java:37) at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:496) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1095) at java.base/java.lang.J9VMInternals.prepareClassImpl(Native Method) at java.base/java.lang.J9VMInternals.prepare(J9VMInternals.java:361) at java.base/java.lang.Class.getConstructors(Class.java:743) at org.apache.felix.scr.impl.inject.internal.ComponentConstructorImpl.<init>(ComponentConstructorImpl.java:98) at org.apache.felix.scr.impl.inject.internal.ComponentMethodsImpl.initComponentMethods(ComponentMethodsImpl.java:110) at org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:1029) at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1057) at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955) at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:776) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674) at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:437) at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:671) at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:310) at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:593) at org.apache.felix.scr.impl.Activator.access$200(Activator.java:74) at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:460) at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:139) at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:49) at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475) at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:949) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229) at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138) at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217) at org.eclipse.osgi.container.Module.publishEvent(Module.java:499) at org.eclipse.osgi.container.Module.start(Module.java:486) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1852) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1845) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1786) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1750) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1672) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)
I would like to know if the failure is caused by the mat.app -> MemoryAnalyzer.app change or the mat-2023-12i.target change. Does an I-build of Eclipse 4.30 run correctly with those start-up options? https://download.eclipse.org/eclipse/downloads/index.html Does MAT run if installed into that Eclipse? The mat-2023-12i target references https://download.eclipse.org/eclipse/updates/4.30-I-builds/ which has a new version every day, and is so might not be stable. Eclipse 4.29 referenced in mat-2023-09 works for you, which is good. Do other versions fail? E.g. the first drop for Eclipse 4.30? https://download.eclipse.org/eclipse/updates/4.30-I-builds/I20230906-0400/ Perhaps try the version which was used for Eclipse 4.30-M1 https://download.eclipse.org/eclipse/downloads/drops4/S-4.30M1-202309271800/ https://download.eclipse.org/eclipse/updates/4.30-I-builds/I20230927-1800/ Is this that failing line? Root exception: java.lang.NullPointerException at java.base/java.util.HashMap.resize(HashMap.java:702) https://github.com/openjdk/jdk/blob/dfacda488bfbe2e11e8d607a6d08527710286982/src/java.base/share/classes/java/util/HashMap.java#L702C9-L702C9 Could it be a JVM problem?
I reverted https://git.eclipse.org/c/mat/org.eclipse.mat.git/commit/?id=c25da90d0d4830d47e00a7b8279a89313d81ae59 but I can still reproduce the error. It seems like the error is non-deterministic as now it is: Exception in thread "main" java.lang.ExceptionInInitializerError at java.base/java.lang.J9VMInternals.ensureError(J9VMInternals.java:206) at java.base/java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:195) at java.base/sun.security.util.DisabledAlgorithmConstraints$Constraints.<init>(DisabledAlgorithmConstraints.java:371) at java.base/sun.security.util.DisabledAlgorithmConstraints.<init>(DisabledAlgorithmConstraints.java:150) at java.base/sun.security.util.DisabledAlgorithmConstraints.<init>(DisabledAlgorithmConstraints.java:124) at java.base/sun.security.util.DisabledAlgorithmConstraints$JarHolder.<clinit>(DisabledAlgorithmConstraints.java:100) at java.base/sun.security.util.DisabledAlgorithmConstraints.jarConstraints(DisabledAlgorithmConstraints.java:114) at java.base/sun.security.pkcs.SignerInfo.<clinit>(SignerInfo.java:61) at java.base/sun.security.pkcs.PKCS7.parseSignedData(PKCS7.java:364) at java.base/sun.security.pkcs.PKCS7.parse(PKCS7.java:158) at java.base/sun.security.pkcs.PKCS7.parse(PKCS7.java:126) at java.base/sun.security.pkcs.PKCS7.<init>(PKCS7.java:108) at java.base/sun.security.util.SignatureFileVerifier.<init>(SignatureFileVerifier.java:125) at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:308) at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:239) at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:761) at java.base/java.util.jar.JarFile.ensureInitialization(JarFile.java:1035) at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:72) at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:1015) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:1160) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:961) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:867) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:825) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1095) Caused by: java.lang.NullPointerException at java.base/java.util.Arrays.copyOfRange(Arrays.java:3854) at java.base/java.lang.StringUTF16.newString(StringUTF16.java:1179) at java.base/java.lang.String.substring(String.java:3483) at java.base/java.math.BigInteger.<init>(BigInteger.java:537) at java.base/sun.security.util.CurveDB.bi(CurveDB.java:109) at java.base/sun.security.util.CurveDB.add(CurveDB.java:128) at java.base/sun.security.util.CurveDB.<clinit>(CurveDB.java:558) ... 23 more > Does an I-build of Eclipse 4.30 run correctly with those start-up options? > https://download.eclipse.org/eclipse/downloads/index.html > Does MAT run if installed into that Eclipse? What's the best way to install my local build of MAT into a downloaded Eclipse?
Caused by: java.lang.NullPointerException at java.base/java.util.Arrays.copyOfRange(Arrays.java:3854) at java.base/java.lang.StringUTF16.newString(StringUTF16.java:1179) if the failure is roughly here: https://github.com/openjdk/jdk/blob/dfacda488bfbe2e11e8d607a6d08527710286982/src/java.base/share/classes/java/util/Arrays.java#L3854 was the array null, or did new short[] is return null! The Maven build should produce an update site. See project: org.eclipse.mat.updatesite There might be an unpacked update site at target/repository and a zipped one at org.eclipse.mat.updatesite-1.15.0-SNAPSHOT.zip
I have opened Bug 582551 for bundling a JRE within the MAT application.
I installed 4.30M1, then added MAT using org.eclipse.mat.product-1.15.0-SNAPSHOT.zip, restarted, switched to the MAT perspective and everything worked fine (with the same IBM Semeru Runtimes JVM that fails if I try the mat.app build directly). Opened OpenJ9 bug report: https://github.com/eclipse-openj9/openj9/issues/18336
My launch failures are due to a bug in IBM Semeru Runtimes: https://github.com/eclipse-openj9/openj9/issues/18336#issuecomment-1776608320
For the Semeru JIT bug: https://github.com/eclipse-openj9/openj9/issues/18336#issuecomment-1787282636 >Confirmed issue is fixed, thanks! So for this bug - are the icons good, and is the application name acceptable? Can we mark this as fixed?
Yes, I think so, thanks!
Created attachment 289221 [details] no alpha channel and lower resolution than the other 2 icons
Created attachment 289222 [details] resolution looks OK but no alpha channel
Created attachment 289223 [details] resolution not OK and no alpha channel
Created attachment 289224 [details] resolution not OK compare the resolution of the home icon with the others
> Can we mark this as fixed? The screen name has been fixed. The icons still look not good -- take a look at the added attachments I checked: Memory Analyzer Tool 1.15.0.202311030913
re: Comment 26 attachment 289221 [details] RCP Feature icon from branding plugin o.e.mat.rcp.ui featureImage=icons/memory_analyzer_32.png There is alpha, but just transparent / opaque, not graduated. The icon was designed for light mode, not dark mode, hence the gray shadow underneath. A bigger icon doesn't work here - so needs a sharper 32x32 icon. re: Comment 27 attachment 289222 [details] Icon used for finder. This is probably the memory_analyzer_64.png icon There is alpha, but just transparent / opaque, not graduated. Has a gray shadown under the database drum and under the magnifying glass. re: Comment 28 attachment 289223 [details] launchpad This is probably the memory_analyzer_64.png icon, but might be the memory_analyzer_128.png icon which looks to be a straight doubling of the 64x64 icon - no resolution improvement, just double size pixels. re: Comment 29 attachment 289224 [details] icons down the side of the welcome screen. I think these are based on the original memory_analyzer_16.gif or equivalent memory_analyzer_16.png icons. There is alpha, but just transparent / opaque, not graduated. I think the icon is just blocky, I don't think we can use a bigger icon here. So in conclusion - the 128x128 and 256x256 icons are just scaled up from 64x64 icon. The shadow doesn't look good in dark mode for the 32x32 and above icons. The small 16x16 icon is a bit blocky - and could have more graduated colours. Unfortunately I'm not an icon designer, fixing this requires skill, and won't get done unless someone else can do it.
Marking this as done for 1.15.0 - if we need to do more we could reopen later, or create a new bug.