Bug 304357 - StringIndexOutOfBoundsException when copying a class
Summary: StringIndexOutOfBoundsException when copying a class
Status: CLOSED WORKSFORME
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.6   Edit
Hardware: PC Linux
: P3 major (vote)
Target Milestone: 3.6 M6   Edit
Assignee: Olivier Thomann CLA
QA Contact:
URL:
Whiteboard:
Keywords: needinfo
Depends on:
Blocks:
 
Reported: 2010-03-02 09:12 EST by Rob Gansevles CLA
Modified: 2022-08-17 04:34 EDT (History)
5 users (show)

See Also:


Attachments
"Name Conflict" resolution dialog (18.22 KB, image/png)
2018-08-15 05:34 EDT, Dmitry Katsubo CLA
no flags Details
Exception message (25.72 KB, image/png)
2018-08-15 05:34 EDT, Dmitry Katsubo CLA
no flags Details
Exception log (9.96 KB, text/plain)
2018-08-15 05:34 EDT, Dmitry Katsubo CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rob Gansevles CLA 2010-03-02 09:12:08 EST
Build Identifier: I20100129-1300 Version: 3.6.0.v20100124-2000-7z8WFRAFMTdeCo0y7FJt1Zi45027

Duplicating a java class via copy/paste from package explorer fails with StringIndexOutOfBoundsException.

Reproducible: Always

Steps to Reproduce:
From Package Explorer I select a java class that I want to duplicate.
After CTL-C, CTL-V I can choose a new name in a dialog. After changing the proposed name to a new one and hitting OK, the following exception occurs.

I could not reproduce this on a new java project with a single java class, so there is probably some dependency on the complexity of the class hierarchy.

java.lang.StringIndexOutOfBoundsException: String index out of range: 2947
        at java.lang.String.<init>(String.java:211)
        at org.eclipse.jdt.internal.core.Buffer.getText(Buffer.java:178)
        at org.eclipse.jdt.internal.corext.refactoring.rename.TypeOccurrenceCollector.acceptSearchMatch2(TypeOccurrenceCollector.java:49)
        at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange$1.acceptSearchMatch(CreateCopyOfCompilationUnitChange.java:114)
        at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine2$RefactoringSearchMatchCollector.acceptSearchMatch(RefactoringSearchEngine2.java:146)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.report(MatchLocator.java:1773)
        at org.eclipse.jdt.internal.core.search.matching.TypeReferenceLocator.matchReportReference(TypeReferenceLocator.java:513)
        at org.eclipse.jdt.internal.core.search.matching.TypeReferenceLocator.matchReportReference(TypeReferenceLocator.java:342)
        at org.eclipse.jdt.internal.core.search.matching.OrLocator.matchReportReference(OrLocator.java:265)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2581)
        at org.eclipse.jdt.internal.core.search.matching.MemberDeclarationVisitor.visit(MemberDeclarationVisitor.java:274)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1304)
        at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:484)
        at org.eclipse.jdt.internal.compiler.ast.AllocationExpression.traverse(AllocationExpression.java:397)
        at org.eclipse.jdt.internal.compiler.ast.Assignment.traverse(Assignment.java:215)
        at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:112)
        at org.eclipse.jdt.internal.compiler.ast.IfStatement.traverse(IfStatement.java:248)
        at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:112)
        at org.eclipse.jdt.internal.compiler.ast.TryStatement.traverse(TryStatement.java:849)
        at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:112)
        at org.eclipse.jdt.internal.compiler.ast.TryStatement.traverse(TryStatement.java:849)
        at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:112)
        at org.eclipse.jdt.internal.compiler.ast.IfStatement.traverse(IfStatement.java:248)
        at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:260)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2126)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2651)
        at org.eclipse.jdt.internal.core.search.matching.MemberDeclarationVisitor.visit(MemberDeclarationVisitor.java:274)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1304)
        at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:484)
        at org.eclipse.jdt.internal.compiler.ast.ReturnStatement.traverse(ReturnStatement.java:259)
        at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:260)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2126)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2651)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2378)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.process(MatchLocator.java:1640)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1050)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1091)
        at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1208)
        at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:94)
        at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:239)
        at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:523)
        at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:613)
        at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine2.searchPattern(RefactoringSearchEngine2.java:484)
        at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.getReferences(CreateCopyOfCompilationUnitChange.java:122)
        at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.createChangeManager(CreateCopyOfCompilationUnitChange.java:61)
        at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.getCopiedFileSource(CreateCopyOfCompilationUnitChange.java:92)
        at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.getOldFile(CreateCopyOfCompilationUnitChange.java:159)
        at org.eclipse.jdt.internal.corext.refactoring.nls.changes.CreateFileChange.perform(CreateFileChange.java:150)
        at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.perform(CreateCopyOfCompilationUnitChange.java:183)
        at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
        at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.access$0(DynamicValidationStateChange.java:1)
        at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange$1.run(DynamicValidationStateChange.java:98)
        at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
Comment 1 Olivier Thomann CLA 2010-03-02 09:42:46 EST
In order to investigate, we would need a reproducable test case.
If you can provide your workspace, that would definitely help.
Comment 2 Rob Gansevles CLA 2010-03-04 04:28:59 EST
Unfortunately, I can't reproduce it in a small case.
I just tried again in my workspace and now I even can't reproduce it there anymore (the class has been refactored in the mean time but when I revert that the error still does not happen).

You can't deduce from the stack trace in which situation this occurs?

In that case i think the case can be closed as non-reproducable, maybe someone else has the same error and can send in the workspace.

Rob
Comment 3 Olivier Thomann CLA 2010-03-04 10:51:33 EST
(In reply to comment #2)
> You can't deduce from the stack trace in which situation this occurs?
No, unfortunately. It just tells me that some buffer contents is inconsistent, but I cannot find out why from the stack trace.
This would explain why it is difficult to reproduce.
Closing as WORKSFORME for now.
Don't hesitate to reopen if you can provide a test case.
Comment 4 Satyam Kandula CLA 2010-03-08 05:10:13 EST
I tried reproducing but could not reproduce.
Verified for 3.6M6
Comment 5 Dmitry Katsubo CLA 2018-08-15 05:21:53 EDT
Just got the same exception:

Initial state:
* Class with name "DateTimeDeserializer.java"

Steps to reproduce:
* Drag with mouse the class "DateTimeSerializer.java" with Ctrl pressed to the same package. "Name Conflict" resolution dialog appears. [OK]
* Enter "DateTimeSerializer" and press OK. [Exception]

java.lang.StringIndexOutOfBoundsException: offset 1233, count 20, length 535
	at java.base/java.lang.String.checkBoundsOffCount(String.java:3101)
	at java.base/java.lang.String.rangeCheck(String.java:278)
	at java.base/java.lang.String.<init>(String.java:274)
	at org.eclipse.jdt.internal.core.Buffer.getText(Buffer.java:178)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TypeOccurrenceCollector.acceptSearchMatch2(TypeOccurrenceCollector.java:50)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange$1.acceptSearchMatch(CreateCopyOfCompilationUnitChange.java:115)
	at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine2$RefactoringSearchMatchCollector.acceptSearchMatch(RefactoringSearchEngine2.java:153)

Platform: Eclipse Oxygen.1a (4.7.1a) / 4.7.1.v20171009-0410
Eclipse Java Development Tools: 3.13.1.v20171009-0410
Comment 6 Dmitry Katsubo CLA 2018-08-15 05:34:18 EDT
Created attachment 275399 [details]
"Name Conflict" resolution dialog
Comment 7 Dmitry Katsubo CLA 2018-08-15 05:34:35 EDT
Created attachment 275400 [details]
Exception message
Comment 8 Dmitry Katsubo CLA 2018-08-15 05:34:55 EDT
Created attachment 275401 [details]
Exception log
Comment 9 Mauro Molinari CLA 2018-09-04 10:56:13 EDT
The problem actually exists, it happened at least with two classes to me with Photon during the latest month. When you identify such cases, it happens always.

Could you please reopen? Even if there's no test case, it's certainly a problem that affects users. The AERI also points here when the exception occurs.
Comment 10 Mauro Molinari CLA 2022-08-17 04:34:43 EDT
This is happening quite often in 2021-12, almost every day I have to restart the IDE because of this problem.

Updated stack trace:

eclipse.buildId=4.22.0.I20211124-1800
java.version=11.0.16
java.vendor=Ubuntu
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=it_IT
Command-line arguments:  -os linux -ws gtk -arch x86_64

org.eclipse.jdt.ui
Error
Wed Aug 17 10:26:28 CEST 2022
Internal Error

java.lang.StringIndexOutOfBoundsException: offset 33823, count 21, length 2922
	at java.base/java.lang.String.checkBoundsOffCount(String.java:3304)
	at java.base/java.lang.String.rangeCheck(String.java:280)
	at java.base/java.lang.String.<init>(String.java:276)
	at org.eclipse.jdt.internal.core.Buffer.getText(Buffer.java:191)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TypeOccurrenceCollector.acceptSearchMatch2(TypeOccurrenceCollector.java:53)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange$1.acceptSearchMatch(CreateCopyOfCompilationUnitChange.java:116)
	at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine2$RefactoringSearchMatchCollector.acceptSearchMatch(RefactoringSearchEngine2.java:156)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.report(MatchLocator.java:2218)
	at org.eclipse.jdt.internal.core.search.matching.TypeReferenceLocator.matchReportReference(TypeReferenceLocator.java:533)
	at org.eclipse.jdt.internal.core.search.matching.TypeReferenceLocator.matchReportReference(TypeReferenceLocator.java:362)
	at org.eclipse.jdt.internal.core.search.matching.OrLocator.matchReportReference(OrLocator.java:314)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2768)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2653)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:3331)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.reportMatching(MatchLocator.java:2895)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.process(MatchLocator.java:2070)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1369)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1415)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1557)
	at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:135)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:251)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:602)
	at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:676)
	at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine2.searchPattern(RefactoringSearchEngine2.java:495)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.getReferences(CreateCopyOfCompilationUnitChange.java:124)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.createChangeManager(CreateCopyOfCompilationUnitChange.java:64)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.getCopiedFileSource(CreateCopyOfCompilationUnitChange.java:93)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.getOldFile(CreateCopyOfCompilationUnitChange.java:162)
	at org.eclipse.jdt.internal.corext.refactoring.nls.changes.CreateFileChange.perform(CreateFileChange.java:158)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.CreateCopyOfCompilationUnitChange.perform(CreateCopyOfCompilationUnitChange.java:187)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:281)
	at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.access$0(DynamicValidationStateChange.java:1)
	at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.lambda$0(DynamicValidationStateChange.java:105)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:41)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:740)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5923)
	at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.perform(DynamicValidationStateChange.java:106)
	at org.eclipse.jdt.internal.corext.refactoring.reorg.JavaCopyProcessor$1.perform(JavaCopyProcessor.java:158)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:281)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.lambda$0(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:295)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:224)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper$Operation.run(RefactoringExecutionHelper.java:106)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:41)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:740)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5923)
	at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:108)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:434)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
	at org.eclipse.ui.internal.WorkbenchWindow.lambda$7(WorkbenchWindow.java:2345)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2343)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:187)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:151)
	at org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgCopyStarter.run(ReorgCopyStarter.java:71)
	at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$JavaElementAndResourcePaster.paste(PasteAction.java:1360)
	at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction.run(PasteAction.java:269)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:274)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:252)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
	at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
	at jdk.internal.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:317)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:251)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:580)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:647)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:439)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1937)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1514)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1541)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1563)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:924)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:3992)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:921)
	at org.eclipse.swt.widgets.Tree.gtk_key_press_event(Tree.java:2369)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2408)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:6833)
	at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:4237)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:6197)
	at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1565)
	at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4578)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1154)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1045)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1440)

The problem is not bound to the workspace, it happens some time after working with the IDE. Perhaps, something gets corrupted at a certain point and this problem starts to arise. After that point, you have no choice than restarting the IDE. I suspect this has to do with a timing issue somewhere, so it's probably easier to reproduce on a slow system, although I really have no idea on how it could be reproduced in a consistent way. It happens to me on different workspaces.