Bug 550737 - Cleanup action create UI freezes > 300 seconds
Summary: Cleanup action create UI freezes > 300 seconds
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.13   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 4.14 M1   Edit
Assignee: Paul Pazderski CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 550209
  Show dependency tree
 
Reported: 2019-09-04 06:08 EDT by Lars Vogel CLA
Modified: 2019-09-20 02:03 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lars Vogel CLA 2019-09-04 06:08:43 EDT
I see frequently UI freezes due to the code cleanup actions. 

I suggest to cancel the cleanup actions if they run to long.


How to reproduce:

1.) Activate cleanup actions
2.) Copy a Java file
3.) In this new file repeat at least 5 times: press Ctrl+A, Ctrl+C, Ctrl+V,Ctrl+V,Ctrl+V

Save

Stack Trace
	at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1122)
	at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:154)
	at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:871)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.nextToken(JavaIndenter.java:1998)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.nextToken(JavaIndenter.java:1983)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.skipScope(JavaIndenter.java:2165)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.looksLikeArrayInitializerIntro(JavaIndenter.java:1769)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.skipToStatementStart(JavaIndenter.java:1360)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.handleScopeIntroduction(JavaIndenter.java:1715)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.findReferencePosition(JavaIndenter.java:1056)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.findReferencePosition(JavaIndenter.java:830)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.getReferenceIndentation(JavaIndenter.java:456)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.computeIndentation(JavaIndenter.java:489)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.computeIndentation(JavaIndenter.java:475)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.computeReplaceData(IndentAction.java:353)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.indent(IndentAction.java:271)
	at org.eclipse.jdt.internal.corext.fix.CodeFormatFix.createCleanUp(CodeFormatFix.java:148)
	at org.eclipse.jdt.internal.ui.fix.CodeFormatCleanUp.createFix(CodeFormatCleanUp.java:64)
	at org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring.calculateChange(CleanUpRefactoring.java:792)
	at org.eclipse.jdt.internal.corext.fix.CleanUpPostSaveListener.saved(CleanUpPostSaveListener.java:390)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$5.run(CompilationUnitDocumentProvider.java:1639)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.notifyPostSaveListeners(CompilationUnitDocumentProvider.java:1633)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1413)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$4.execute(CompilationUnitDocumentProvider.java:1491)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:133)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:71)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:110)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$$Lambda$1188/0x000000080215e840.run(Unknown Source)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2295)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2322)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:76)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:66)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:461)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:764)
	at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5052)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1275)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1329)
	at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7181)
	at org.eclipse.ui.Saveable.doSave(Saveable.java:213)
	at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:333)
	at org.eclipse.ui.internal.SaveableHelper.lambda$1(SaveableHelper.java:196)
	at org.eclipse.ui.internal.SaveableHelper$$Lambda$1195/0x000000080215d440.run(Unknown Source)
	at org.eclipse.ui.internal.SaveableHelper.lambda$3(SaveableHelper.java:271)
	at org.eclipse.ui.internal.SaveableHelper$$Lambda$1196/0x000000080215c840.run(Unknown Source)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
	at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:2364)
	at org.eclipse.ui.internal.WorkbenchWindow$$Lambda$781/0x0000000801d5cc40.run(Unknown Source)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2362)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:278)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:260)
	at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:207)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:150)
	at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3830)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3843)
	at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:57)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:95)
	at jdk.internal.reflect.GeneratedMethodAccessor180.invoke(Unknown Source)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:318)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:252)
	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:498)
	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:584)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386)
	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:1836)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1404)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1431)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1414)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1455)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:819)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:4012)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:857)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2243)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:6846)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5842)
	at org.eclipse.swt.internal.gtk.GTK._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.GTK.gtk_main_do_event(GTK.java:4154)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1474)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1603)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4404)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633)
	at org.eclipse.ui.internal.Workbench$$Lambda$122/0x00000008013bdc40.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660)
	at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:597)
	at app//org.eclipse.equinox.launcher.Main.run(Main.java:1468)
	at app//org.eclipse.equinox.launcher.Main.main(Main.java:1441)
Comment 1 Lars Vogel CLA 2019-09-04 06:11:35 EDT
Roland, can you have a look? AFAIR you were working on code completion performance with a timeout before.

Also adding Paul, who improved performance in the text framework in the past.
Comment 2 Paul Pazderski CLA 2019-09-04 06:58:33 EDT
A possible performance improvement: from your stacktrace it spent its time in TreeLineTracker. This class is already really fast but most requests are still not trivial.
JavaIndenter requests the line every time the position is changed which is done (I assume) much more often than the line is actually required to know.
Improvement is therefor to remove the line field and calculate it on demand.
Comment 3 Eclipse Genie CLA 2019-09-04 06:59:41 EDT
New Gerrit change created: https://git.eclipse.org/r/148885
Comment 4 Lars Vogel CLA 2019-09-04 08:12:58 EDT
(In reply to Paul Pazderski from comment #2)
> A possible performance improvement: from your stacktrace it spent its time
> in TreeLineTracker. This class is already really fast but most requests are
> still not trivial.
> JavaIndenter requests the line every time the position is changed which is
> done (I assume) much more often than the line is actually required to know.
> Improvement is therefor to remove the line field and calculate it on demand.

Awesome Paul, with your patch the freeze is way shorter even for huge files. It is now only a 1.1 second freeze for ~100000 lines. 2.5 freeze for a larger one.

Here is the new stack trace:

Stack Trace
	at org.eclipse.jdt.internal.core.JavaModelManager.getInfo(JavaModelManager.java:2179)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:324)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:312)
	at org.eclipse.jdt.internal.core.Member.getNameRange(Member.java:353)
	at org.eclipse.jdt.ui.text.folding.DefaultJavaFoldingStructureProvider$JavaElementPosition.computeProjectionRegions(DefaultJavaFoldingStructureProvider.java:594)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.computeCollapsedRegions(ProjectionViewer.java:1103)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.widgetSelection2ModelSelection(ProjectionViewer.java:1624)
	at org.eclipse.jface.text.TextViewer.getSelectedRange(TextViewer.java:2244)
	at org.eclipse.jface.text.TextViewer.getSelection(TextViewer.java:2447)
	at org.eclipse.ui.texteditor.AbstractTextEditor.doGetSelection(AbstractTextEditor.java:2904)
	at org.eclipse.ui.texteditor.AbstractTextEditor$SelectionProvider.getSelection(AbstractTextEditor.java:1423)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$JdtSelectionProvider.getSelection(JavaEditor.java:1394)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.getSelection(IndentAction.java:774)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.update(IndentAction.java:691)
	at org.eclipse.ui.texteditor.AbstractTextEditor.updateAction(AbstractTextEditor.java:5405)
	at org.eclipse.ui.texteditor.AbstractTextEditor.updateSelectionDependentActions(AbstractTextEditor.java:5478)
	at org.eclipse.ui.texteditor.AbstractTextEditor$2.lambda$0(AbstractTextEditor.java:3096)
	at org.eclipse.ui.texteditor.AbstractTextEditor$2$$Lambda$438/0x0000000801998440.run(Unknown Source)
	at org.eclipse.ui.texteditor.AbstractTextEditor$2.selectionChanged(AbstractTextEditor.java:3107)
	at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47)
	at org.eclipse.ui.internal.JFaceUtil$$Lambda$74/0x00000008012aa040.run(Unknown Source)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
	at org.eclipse.jface.text.TextViewer.fireSelectionChanged(TextViewer.java:2598)
	at org.eclipse.jface.text.TextViewer.selectionChanged(TextViewer.java:2577)
	at org.eclipse.jface.text.TextViewer.setSelectedRange(TextViewer.java:2271)
	at org.eclipse.jface.text.TextViewer.doOperation(TextViewer.java:3851)
	at org.eclipse.jface.text.source.SourceViewer.doOperation(SourceViewer.java:1064)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.doOperation(ProjectionViewer.java:1466)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.doOperation(JavaSourceViewer.java:199)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(CompilationUnitEditor.java:206)
	at org.eclipse.ui.texteditor.TextOperationAction.lambda$0(TextOperationAction.java:130)
	at org.eclipse.ui.texteditor.TextOperationAction$$Lambda$673/0x0000000801c06c40.run(Unknown Source)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
	at org.eclipse.ui.texteditor.TextOperationAction.run(TextOperationAction.java:130)
	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:95)
	at jdk.internal.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:318)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:252)
	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:498)
	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:584)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386)
	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:1838)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1404)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1431)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1414)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1455)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:819)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:4012)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:857)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2243)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:6846)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5841)
	at org.eclipse.swt.internal.gtk.GTK._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.GTK.gtk_main_do_event(GTK.java:4154)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1476)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1603)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4403)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633)
	at org.eclipse.ui.internal.Workbench$$Lambda$110/0x000000080132a040.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660)
	at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:597)
	at app//org.eclipse.equinox.launcher.Main.run(Main.java:1468)
	at app//org.eclipse.equinox.launcher.Main.main(Main.java:1441)
Comment 5 Lars Vogel CLA 2019-09-04 08:25:51 EDT
Opening the large file also freezes Eclipse, opened Bug 550744 for that.
Comment 6 Roland Grunberg CLA 2019-09-04 10:39:12 EDT
From my testing, I'm not able to see any noticeable difference between 4.12 (2019-06) and 4.13RC1 (2019-09). Both informed me that the formatting was taking long at around 100k lines, and ran out of heap space at around 300k lines (I used QuickAssistProcessor.java).
Comment 7 Lars Vogel CLA 2019-09-04 11:22:48 EDT
(In reply to Roland Grunberg from comment #6)
> From my testing, I'm not able to see any noticeable difference between 4.12
> (2019-06) and 4.13RC1 (2019-09). Both informed me that the formatting was
> taking long at around 100k lines, and ran out of heap space at around 300k
> lines (I used QuickAssistProcessor.java).

It is not a regression, just slow.
Comment 9 Lars Vogel CLA 2019-09-20 02:03:28 EDT
Thanks Paul for the fix and Jeff for the review.