Community
Participate
Working Groups
"Backporting" links to commit / gerrit as requested in bug 477579 comment 16. JDT UI activator could do less things in startup(): https://git.eclipse.org/r/131872 https://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=a73822ec12b13bd4ac73d1f502e5b8b6f7544fd7 Patch is already merged.
Thanks Mark!
Dani reported issues with this change in the PMC call. Dani, can you add details?
That changes causes this on my Windows 7 machine (4 cores, 16 GB RAM) with Java 11 using the first build (I20190125-1800) that has that change: org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:88) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:76) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:118) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:96) at org.eclipse.jface.resource.JFaceResources.getColorRegistry(JFaceResources.java:191) at org.eclipse.jdt.ui.PreferenceConstants.initializeDeprecatedColorConstants(PreferenceConstants.java:4350) at org.eclipse.jdt.ui.PreferenceConstants.initializeDefaultValues(PreferenceConstants.java:4027) at org.eclipse.jdt.internal.ui.JavaUIPreferenceInitializer.initializeDefaultPreferences(JavaUIPreferenceInitializer.java:38) at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:301) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.runInitializer(PreferenceServiceRegistryHelper.java:304) at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.applyRuntimeDefaults(PreferenceServiceRegistryHelper.java:134) at org.eclipse.core.internal.preferences.PreferencesService.applyRuntimeDefaults(PreferencesService.java:375) at org.eclipse.core.internal.preferences.DefaultPreferences.applyRuntimeDefaults(DefaultPreferences.java:225) at org.eclipse.core.internal.preferences.DefaultPreferences.load(DefaultPreferences.java:279) at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:370) at org.eclipse.core.internal.preferences.EclipsePreferences.internalNode(EclipsePreferences.java:623) at org.eclipse.core.internal.preferences.EclipsePreferences.node(EclipsePreferences.java:766) at org.eclipse.core.internal.preferences.AbstractScope.getNode(AbstractScope.java:41) at org.eclipse.core.runtime.preferences.DefaultScope.getNode(DefaultScope.java:77) at org.eclipse.jdt.internal.core.manipulation.MembersOrderPreferenceCacheCommon.install(MembersOrderPreferenceCacheCommon.java:112) at org.eclipse.jdt.internal.ui.preferences.MembersOrderPreferenceCache.install(MembersOrderPreferenceCache.java:38) at org.eclipse.jdt.internal.ui.JavaPlugin.createMemberOrderPreferenceCache(JavaPlugin.java:682) at org.osgi.util.promise.DeferredPromiseImpl$Submit.run(DeferredPromiseImpl.java:658) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) And I see JDT UI preferences not being correctly set. For example the 'Build Path' page has no default values. As a result, creating a new Java project results in an error. I will revert the change to see, whether it works again in tomorrow's build.
.
(In reply to Dani Megert from comment #3) Yep, the stack is direct result of the patch. If the code running before managed to init ColorRegistry, you will see no issues. Sadly, is that in this concrete case htere is no need in the Display at all, only RGB values are needed by org.eclipse.jdt.ui.PreferenceConstants.initializeDeprecatedColorConstants(IPreferenceStore).
(In reply to Dani Megert from comment #3) > I will revert the change to see, whether it works again in tomorrow's build. Done. I was already sceptical when I saw the bug report.
Reverting the change gets rid of the exception and creating new Java projects works again. Tested with eclipse-SDK-I20190129-1800-win32-x86_64.
Besides that it badly broke things there are other issues with the proposed fix. Biggest issue is that it can cause a deadlock because getMemberOrderPreferenceCache() method blocks on promise.getValue. Depending on which thread (and its locks) calls getValue this can cause a deadlock. Furthermore we do not have any performance measurements that would show a performance improvement.