eclipse.platform.ui icon indicating copy to clipboard operation
eclipse.platform.ui copied to clipboard

CompatibilityPart/IntroPart: tries to dispose in not-SWT thread

Open jukzi opened this issue 5 months ago • 1 comments

locally running CTabItemTest (passes) logs This is not an UI thread (or Device already disposed).

java.lang.NullPointerException: This is not an UI thread (or Device already disposed)
	at java.base/java.util.Objects.requireNonNull(Objects.java:259)
	at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:243)
	at org.eclipse.ui.part.IntroPart.dispose(IntroPart.java:99)
	at org.eclipse.ui.intro.config.CustomizableIntroPart.dispose(CustomizableIntroPart.java:347)
	at org.eclipse.ui.internal.ViewIntroAdapterPart.dispose(ViewIntroAdapterPart.java:150)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:264)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:977)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:939)
	at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:435)
	at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:161)
	at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:83)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:68)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:179)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:164)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:164)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:164)
	at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:102)
	at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:144)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:982)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:235)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:134)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:126)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:229)
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:531)
	at org.eclipse.osgi.container.Module.doStop(Module.java:693)
	at org.eclipse.osgi.container.Module.stop(Module.java:554)
	at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:212)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:240)
	at java.base/java.lang.Thread.run(Thread.java:1583)

sounds like that should be done in SWT thread. i don't know where that should be changed

jukzi avatar Sep 23 '24 15:09 jukzi