Bug 572904 - Stackoverflow in FileSystemElement.getAdapter
Summary: Stackoverflow in FileSystemElement.getAdapter
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.20   Edit
Hardware: All All
: P3 critical (vote)
Target Milestone: 4.20 M3   Edit
Assignee: Andrey Loskutov CLA
QA Contact:
URL:
Whiteboard:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2021-04-16 04:15 EDT by Julian Honnen CLA
Modified: 2021-04-20 04:15 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Julian Honnen CLA 2021-04-16 04:15:00 EDT
Opening the launch configuration import wizard triggers a stack overflow:

java.lang.Exception: dump
	at org.eclipse.ui.dialogs.FileSystemElement.getAdapter(FileSystemElement.java:141)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:63)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:112)
	at org.eclipse.ui.dialogs.FileSystemElement.getAdapter(FileSystemElement.java:141)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:63)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:112)
	at org.eclipse.ui.dialogs.FileSystemElement.getAdapter(FileSystemElement.java:141)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:63)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:112)
	at org.eclipse.ui.dialogs.FileSystemElement.getAdapter(FileSystemElement.java:141)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:63)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:112)
	at org.eclipse.ui.dialogs.FileSystemElement.getAdapter(FileSystemElement.java:141)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:63)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:112)
	at org.eclipse.ui.dialogs.FileSystemElement.getAdapter(FileSystemElement.java:141)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:63)
	at org.eclipse.core.runtime.Adapters.adapt(Adapters.java:112)
	at org.eclipse.ui.model.WorkbenchLabelProvider.getAdapter2(WorkbenchLabelProvider.java:142)
	at org.eclipse.ui.model.WorkbenchLabelProvider.getColor(WorkbenchLabelProvider.java:270)
	at org.eclipse.ui.model.WorkbenchLabelProvider.getBackground(WorkbenchLabelProvider.java:251)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.getBackground(WrappedViewerLabelProvider.java:94)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:152)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:144)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:959)
	at org.eclipse.jface.viewers.CheckboxTreeViewer.doUpdateItem(CheckboxTreeViewer.java:124)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:126)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1037)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:427)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2111)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:853)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:831)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:604)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:779)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1599)
	at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:780)
	at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$1(AbstractTreeViewer.java:1584)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1400)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:363)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1361)
	at org.eclipse.jface.viewers.CheckboxTreeViewer.preservingSelection(CheckboxTreeViewer.java:407)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1578)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1634)
	at org.eclipse.ui.ide.dialogs.ResourceTreeAndListGroup.initialize(ResourceTreeAndListGroup.java:755)
	at org.eclipse.ui.ide.dialogs.ResourceTreeAndListGroup.setRoot(ResourceTreeAndListGroup.java:937)
	at org.eclipse.debug.internal.ui.importexport.launchconfigurations.ImportLaunchConfigurationsWizardPage.lambda$0(ImportLaunchConfigurationsWizardPage.java:304)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.debug.internal.ui.importexport.launchconfigurations.ImportLaunchConfigurationsWizardPage.resetSelection(ImportLaunchConfigurationsWizardPage.java:295)
	at org.eclipse.debug.internal.ui.importexport.launchconfigurations.ImportLaunchConfigurationsWizardPage.createControl(ImportLaunchConfigurationsWizardPage.java:154)

The requested adapter type is org.eclipse.ui.model.IWorkbenchAdapter2.


Steps:
1) File > Import
2) Select Launch Configurations
3) Next

I couldn't immediately reproduce it in a fresh SDK installation though.

Likely caused by the change in bug 567543.
Comment 1 Julian Honnen CLA 2021-04-16 04:21:04 EDT
(In reply to Julian Honnen from comment #0)
> Steps:
> 1) File > Import
> 2) Select Launch Configurations
> 3) Next
> 
> I couldn't immediately reproduce it in a fresh SDK installation though.
Updated steps:

1) export a launch config to directory X
2) File > Import
3) Select Launch Configurations, Next
4) Select directory X
5) StackOverflow
Comment 2 Andrey Loskutov CLA 2021-04-16 04:24:42 EDT
@Lars: ALL recent changes from bug 567543 must be checked for the pattern where IAdaptable object calls now Adapters.adapt(this, adapter) - this will always lead to recursion.
Comment 3 Andrey Loskutov CLA 2021-04-16 04:27:16 EDT
I've started revert : https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/179029
Comment 4 Andrey Loskutov CLA 2021-04-16 05:22:43 EDT
Also created this revert: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/179031
Comment 5 Andrey Loskutov CLA 2021-04-16 05:26:21 EDT
Also this one: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/179032
Comment 6 Andrey Loskutov CLA 2021-04-16 05:27:51 EDT
Next one: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/179033
Comment 7 Andrey Loskutov CLA 2021-04-16 05:34:43 EDT
That one already caused regression and was reverted: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/178099.

I think I'm through the list of changes in bug 567543.
Comment 8 Andrey Loskutov CLA 2021-04-16 15:48:43 EDT
All four changes reverted.
Comment 9 Andrey Loskutov CLA 2021-04-19 14:41:38 EDT
(In reply to Julian Honnen from comment #1)
> Updated steps:
> 
> 1) export a launch config to directory X
> 2) File > Import
> 3) Select Launch Configurations, Next
> 4) Select directory X
> 5) StackOverflow

That works for me using I20210418-1800. Julian: could you confirm?
Comment 10 Julian Honnen CLA 2021-04-20 02:22:35 EDT
(In reply to Andrey Loskutov from comment #9)
> That works for me using I20210418-1800. Julian: could you confirm?
Works for me as well. Thanks, Andrey!
Comment 11 Lars Vogel CLA 2021-04-20 04:15:16 EDT
(In reply to Andrey Loskutov from comment #2)
> @Lars: ALL recent changes from bug 567543 must be checked for the pattern
> where IAdaptable object calls now Adapters.adapt(this, adapter) - this will
> always lead to recursion.

Thanks, Andrey for doing the reverts. At the time of this request I was busy with client work and could not react. Thanks for handling this.