Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 316363 - SWTExceptions with @UIEventTopic on bundle shutdown
Summary: SWTExceptions with @UIEventTopic on bundle shutdown
Status: RESOLVED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: E4 (show other bugs)
Version: unspecified   Edit
Hardware: Macintosh Mac OS X
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-09 15:26 EDT by Brian de Alwis CLA
Modified: 2012-12-13 15:00 EST (History)
1 user (show)

See Also:


Attachments
Patch (9.24 KB, patch)
2010-06-14 13:37 EDT, Oleg Besedin CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Brian de Alwis CLA 2010-06-09 15:26:18 EDT
BuildId: HEAD from 2010/06/09 AM

I'm porting the e4rover code to HEAD.  It makes use of the @UIEventTopic annotation.  On shutdown, I get dozens of SWTExceptions like the the following:

***WARNING: Display must be created on main thread due to Cocoa restrictions.
2010-06-09 15:11:28.399 Log ErrorException while dispatching event org.osgi.service.event.Event [topic=org/eclipsecon/e4rover/robot] to handler org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler@6a581b90
org.eclipse.swt.SWTException: Invalid thread access
	at org.eclipse.swt.SWT.error(SWT.java:4083)
	at org.eclipse.swt.SWT.error(SWT.java:3998)
	at org.eclipse.swt.SWT.error(SWT.java:3969)
	at org.eclipse.swt.widgets.Display.error(Display.java:1027)
	at org.eclipse.swt.widgets.Display.createDisplay(Display.java:794)
	at org.eclipse.swt.widgets.Display.create(Display.java:777)
	at org.eclipse.swt.graphics.Device.<init>(Device.java:130)
	at org.eclipse.swt.widgets.Display.<init>(Display.java:668)
	at org.eclipse.swt.widgets.Display.<init>(Display.java:659)
	at org.eclipse.swt.widgets.Display.getDefault(Display.java:1303)
	at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:38)
	at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:188)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:198)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
	at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:139)
	at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
	at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
	at org.eclipsecon.e4rover.core.ContestPlatform.fireRobotUpdated(ContestPlatform.java:262)
	at org.eclipsecon.e4rover.core.ContestPlatform.access$7(ContestPlatform.java:260)
	at org.eclipsecon.e4rover.core.ContestPlatform$1.run(ContestPlatform.java:172)
Comment 1 Oleg Besedin CLA 2010-06-14 13:37:41 EDT
Created attachment 171851 [details]
Patch

I am unable to duplicate the problem, but from the call stack it looks like we attempting to create a Display after its instance has been released.

The patch places the initial Display instance in the context for "pure" e4 apps and compatibility. The UI event processing code has been modified to create a warning whenever it receives UI message, but there is no Display available.
Comment 2 Oleg Besedin CLA 2010-06-14 13:38:46 EDT
Patch applied to CVS Head.