This Bugzilla instance is deprecated, and most Eclipse projects now use GitHub or Eclipse GitLab. Please see the deprecation plan for details.
Bug 433934 - CCE in StackRenderer#findItemForPart() when dealing with standalone views
Summary: CCE in StackRenderer#findItemForPart() when dealing with standalone views
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.4   Edit
Hardware: Macintosh Mac OS X
: P3 normal (vote)
Target Milestone: 4.4 RC1   Edit
Assignee: Platform UI Triaged CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-05-01 11:15 EDT by Brian de Alwis CLA
Modified: 2014-05-16 10:59 EDT (History)
1 user (show)

See Also:
emoffatt: review+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brian de Alwis CLA 2014-05-01 11:15:21 EDT
Build-Id: 4.4.0.I20140501-0200

Seen on startup; the first main window is partially rendered.  I have a perspective with standalone parts.  StackRenderer#getItemsToSet() is looking for a standalone part.

It looks like StackRenderer#handleTransientDataEvents() method should verify that the part is hosted within an MPartStack.

Steps to reproduce:
1. Set up a perspective with standalone views.  See [1] for the definition I use.
2. Startup and switch to that perspective; quit.
3. Restart and you should see the CCE.

[1] https://github.com/briandealwis/eclipse-wbspies/blob/master/ca.mt.wb.devtools.jdt/src/ca/mt/wb/devtools/jdt/StrippedJavaBrowsingPageLayout.java

Thread [main] (Suspended (exception ClassCastException))	
	StackRenderer.findItemForPart(MUIElement, MElementContainer<MUIElement>) line: 876	
	StackRenderer.getItemsToSet(MPart) line: 187	
	StackRenderer.handleTransientDataEvents(Event) line: 229	
	GeneratedMethodAccessor24.invoke(Object, Object[]) line: not available	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 483	
	MethodRequestor.execute() line: 55	
	UIEventObjectSupplier$UIEventHandler$1.run() line: 56	
	UISynchronizer(Synchronizer).syncExec(Runnable) line: 187	
	UISynchronizer.syncExec(Runnable) line: 156	
	Display.syncExec(Runnable) line: 4722	
	E4Application$1.syncExec(Runnable) line: 207	
	UIEventObjectSupplier$UIEventHandler.handleEvent(Event) line: 53	
	EventHandlerWrapper.handleEvent(Event, Permission) line: 197	
	EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197	
	EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1	
	EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230	
	ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148	
	EventAdminImpl.dispatchEvent(Event, boolean) line: 135	
	EventAdminImpl.sendEvent(Event) line: 78	
	EventComponent.sendEvent(Event) line: 39	
	EventBroker.send(String, Object) line: 81	
	UIEventPublisher.notifyChanged(Notification) line: 59	
	PartImpl(BasicNotifierImpl).eNotify(Notification) line: 374	
	EcoreEMap$DelegateEObjectContainmentEList<E>(EcoreEList<E>).dispatchNotification(Notification) line: 249	
	EcoreEMap$DelegateEObjectContainmentEList<E>(NotifyingListImpl<E>).addUnique(E) line: 294	
	EcoreEMap$DelegateEObjectContainmentEList<E>(AbstractEList<E>).add(E) line: 303	
	EcoreEMap<K,V>(BasicEMap<K,V>).put(K, V) line: 585	
	BasicEMap$DelegatingMap.put(K, V) line: 793	
	CompatibilityView(CompatibilityPart).create() line: 328	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 483	
	MethodRequestor.execute() line: 55	
	InjectorImpl.processAnnotated(Class<Annotation>, Object, Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList<Class<?>>) line: 888	
	InjectorImpl.processAnnotated(Class<Annotation>, Object, Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList<Class<?>>) line: 869	
	InjectorImpl.inject(Object, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 120	
	InjectorImpl.internalMake(Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 337	
	InjectorImpl.make(Class<T>, PrimaryObjectSupplier) line: 258	
	ContextInjectionFactory.make(Class<T>, IEclipseContext) line: 162	
	ReflectionContributionFactory.createFromBundle(Bundle, IEclipseContext, IEclipseContext, URI) line: 104	
	ReflectionContributionFactory.doCreate(String, IEclipseContext, IEclipseContext) line: 73	
	ReflectionContributionFactory.create(String, IEclipseContext) line: 55	
	ContributedPartRenderer.createWidget(MUIElement, Object) line: 127	
	PartRenderingEngine.createWidget(MUIElement, Object) line: 984	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 663	
	PartRenderingEngine$6.run() line: 548	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement, Object, IEclipseContext) line: 532	
	ElementReferenceRenderer.createWidget(MUIElement, Object) line: 69	
	PartRenderingEngine.createWidget(MUIElement, Object) line: 984	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 663	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 68	
	SashRenderer.processContents(MElementContainer<MUIElement>) line: 185	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 675	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 68	
	SashRenderer.processContents(MElementContainer<MUIElement>) line: 185	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 675	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	PerspectiveRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 68	
	PerspectiveRenderer.processContents(MElementContainer<MUIElement>) line: 49	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 675	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	PerspectiveStackRenderer.showTab(MUIElement) line: 103	
	PerspectiveStackRenderer(LazyStackRenderer).postProcess(MUIElement) line: 98	
	PerspectiveStackRenderer.postProcess(MUIElement) line: 77	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 679	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 68	
	SashRenderer.processContents(MElementContainer<MUIElement>) line: 185	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 675	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	WBWRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 68	
	WBWRenderer.processContents(MElementContainer<MUIElement>) line: 663	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 675	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 767	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 738	
	PartRenderingEngine$7.run() line: 732	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 716	
	PartRenderingEngine$9.run() line: 1082	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 1033	
	E4Workbench.createAndRunUI(MApplicationElement) line: 148	
	Workbench$5.run() line: 635	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 578	
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 150	
	IDEApplication.start(IApplicationContext) line: 135	
	EclipseAppHandle.run(Object) line: 196	
	EclipseAppLauncher.runApplication(Object) line: 134	
	EclipseAppLauncher.start(Object) line: 104	
	EclipseStarter.run(Object) line: 379	
	EclipseStarter.run(String[], Runnable) line: 233	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 483	
	Main.invokeFramework(String[], URL[]) line: 648	
	Main.basicRun(String[]) line: 603	
	Main.run(String[]) line: 1465
Comment 1 Brian de Alwis CLA 2014-05-01 11:25:12 EDT
Simple fix pushed to https://git.eclipse.org/r/25837
Comment 3 Brian de Alwis CLA 2014-05-16 10:59:17 EDT
No stack trace seen on restart.  Thanks Eric.