Bug 138959 - Too large code locks up platform
Summary: Too large code locks up platform
Status: RESOLVED DUPLICATE of bug 108813
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 3.1.2   Edit
Hardware: PC All
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Felipe Heidrich CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
Depends on:
Blocks:
 
Reported: 2006-04-27 11:46 EDT by Benjamin Ranck CLA
Modified: 2006-05-09 17:29 EDT (History)
4 users (show)

See Also:


Attachments
Test case for code too large. (627.55 KB, application/octet-stream)
2006-04-27 12:39 EDT, Benjamin Ranck CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Ranck CLA 2006-04-27 11:46:52 EDT
When attempting to compile a very large class file the eclipse platform locks up consuming 100% of cpu resources and slowly increasing it's memory footprint.  This lockup appears to go indefinitely until the process is manually killed. I recreated this a number of times. When attempting the same with javac at the command line a "code too large" error is returned within 10 seconds or so. This behaviour is much more desirable.

JDT:
Version: 3.1.2
Build id: I20050627-1435

javac:
javac 1.5.0_06

jdk:
javac 1.5.0_06

machine:
1GB RAM
Athlon 64 3000
WinXP sp2


Thanks,
Benjamin

/* http://www.benjaminranck.com */
Comment 1 Olivier Thomann CLA 2006-04-27 11:52:43 EDT
Could you please provide a test case ?
Comment 2 Olivier Thomann CLA 2006-04-27 12:21:38 EDT
First question should be how do you end up with such a huge compilation unit?
I'd like to get a test case to see if we end up reporting an error or compiling the code successfully.
Closing as REMIND.
Reopen when a test case is available.
Comment 3 Philipe Mulet CLA 2006-04-27 12:36:40 EDT
Also, compiling with Eclipse batch compiler vs. IDE builder could show interesting differences.
Comment 4 Benjamin Ranck CLA 2006-04-27 12:39:36 EDT
Created attachment 39692 [details]
Test case for code too large.
Comment 5 Benjamin Ranck CLA 2006-04-27 12:41:41 EDT
I have a attached my generated lookup table. This obvious workaround is runtime generation, however that isn't implicitly related to the behavior of the JDT when the code is too large.

Cheers,
Benjamin
Comment 6 Olivier Thomann CLA 2006-04-27 12:52:36 EDT
Using I20060427-0800, and the batch compiler I get the answer in 4s.

[compiled 15 lines in 3875 ms: 3.8 lines/s]
----------
1. ERROR in D:\tests_sources\X.java
 (at line 1)
	final class X {
	            ^
The code for the static initializer is exceeding the 65535 bytes limit
----------
1 problem (1 error)
Comment 7 Olivier Thomann CLA 2006-04-27 12:54:23 EDT
Inside Eclipse, it is really slow in the Java editor.
Moving to JDT/Text for investigation.
Comment 8 Olivier Thomann CLA 2006-04-27 13:03:15 EDT
Thread dump looks like this:
"main" prio=6 tid=0x00034b58 nid=0x8dc runnable [0x0007d000..0x0007fc44]
        at org.eclipse.swt.graphics.TextLayout.setStyle(TextLayout.java:1994)
        at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:841)
        at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:673)
        at org.eclipse.swt.custom.StyledTextRenderer.calculate(StyledTextRenderer.java:200)
        at org.eclipse.swt.custom.StyledTextRenderer.calculateClientArea(StyledTextRenderer.java:218)
        at org.eclipse.swt.custom.StyledText.resetCache(StyledText.java:6336)
        at org.eclipse.swt.custom.StyledText.setStyleRanges(StyledText.java:7804)
        at org.eclipse.swt.custom.StyledText.replaceStyleRanges(StyledText.java:6259)
        at org.eclipse.jface.text.TextViewer.addPresentation(TextViewer.java:4210)
        at org.eclipse.jface.text.TextViewer.changeTextPresentation(TextViewer.java:4289)
        at org.eclipse.jface.text.presentation.PresentationReconciler.applyTextRegionCollection(PresentationReconciler.java:573)
        at org.eclipse.jface.text.presentation.PresentationReconciler.processDamage(PresentationReconciler.java:562)
        at org.eclipse.jface.text.presentation.PresentationReconciler.access$3(PresentationReconciler.java:558)
        at org.eclipse.jface.text.presentation.PresentationReconciler$InternalListener.textChanged(PresentationReconciler.java:224)
        at org.eclipse.jface.text.TextViewer.updateTextListeners(TextViewer.java:2396)
        at org.eclipse.jface.text.TextViewer$VisibleDocumentListener.documentChanged(TextViewer.java:346)
        at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:699)
        at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:672)
        at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:657)
        at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:722)
        at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1116)
        at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:179)
        - locked <0x07f71878> (a java.lang.Object)
        at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1097)
        at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:165)
        - locked <0x07f71878> (a java.lang.Object)
        at org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter$DocumentSetCommand.run(DocumentAdapter.java:105)
        at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:152)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:28)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java:3763)
        at org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter$DocumentSetCommand.set(DocumentAdapter.java:110)
        at org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter.setContents(DocumentAdapter.java:424)
        at org.eclipse.jdt.internal.core.CreateCompilationUnitOperation.executeOperation(CreateCompilationUnitOperation.java:95)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1737)
        at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:784)
        at org.eclipse.jdt.internal.core.PackageFragment.createCompilationUnit(PackageFragment.java:141)
        at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$1.run(PasteAction.java:432)
        at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1737)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:4011)
        at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
        at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:369)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:313)
        at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:763)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
        at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:760)
        at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2283)
        at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:1130)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
        at org.eclipse.ui.internal.progress.ProgressManager.runInUI(ProgressManager.java:1126)
        at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$TextPaster.paste(PasteAction.java:475)
        at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction.run(PasteAction.java:200)
        at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:267)
        at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:243)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:499)
        at org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:229)
        at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
        at org.eclipse.core.commands.Command.executeWithChecks(Command.java:461)
        at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:424)
        at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:160)
        at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:466)
        at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:799)
        at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:846)
        at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:564)
        at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:506)
        at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:122)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Display.filterEvent(Display.java:982)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:924)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:949)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:934)
        at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:962)
        at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:958)
        at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1272)
        at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3346)
        at org.eclipse.swt.widgets.Tree.WM_CHAR(Tree.java:4699)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3246)
        at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:4695)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1922)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
        at org.eclipse.core.launcher.Main.run(Main.java:977)
        at org.eclipse.core.launcher.Main.main(Main.java:952)

After several minutes, it still in the same code.
Comment 9 Dani Megert CLA 2006-04-27 13:19:31 EDT
Olivier, what is the X.java? The test case has a different name.
Comment 10 Olivier Thomann CLA 2006-04-27 13:45:07 EDT
X.java is simply a rename of the test case provided in the PR when I tried to compile using the batch compiler.
Try to paste the unit provided in the test case inside an existing java project.
Comment 11 Tom Hofmann CLA 2006-04-27 14:22:10 EDT
One point is that the eclipse editors are not made to edit files in the mega-byte range. A large source file like SWT's StyledText.java, which has around 9K lines, amounts to 280KBytes, while X.java is almost 2MBytes.

Second, these 2MBytes are distributed on only 15 lines, the longest lines being almost 400K characters long. Very long lines are handled badly by some algorithms in StyledText and elsewhere.

I see the same devastating effect when opening X.java on Linux-GTK with:
- gedit (as soon as word wrap gets disabled)
- vim (vi is ok)
- nedit (opens ok, but hangs when one tries to get to the end of line 10)

Ok are:
- vi
- xemacs

Some tools work better with extremely long lines, notably UltraEdit caps the maximum line size to 4096 characters and forcibly wraps the lines after that, thus not needing to read more than (visible lines * 4096) of the file into memory.

StyledText also seems to do something similar, but only much later: the 400K characters long line #10 appears to be wrapped (drawn over each other).
Comment 12 Benjamin Ranck CLA 2006-04-27 14:56:39 EDT
That's interesting, but I don't know if the line length is actually the problem. I can successfully paste in the longest line as a string variable and save without issue (it even compiles) within the JDT and I can run the program.
Comment 13 Dani Megert CLA 2006-04-27 16:31:48 EDT
Main "hang" is in StyledText. To find problems regarding large files in Text click:
https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=large&classification=Eclipse&product=JDT&product=Platform&component=Text&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=

Steps:
1. put the attached file into a Java project
2. disable folding
3. open the file using Java editor (not a problem with text editor)
==> "hangs" (or loops?) minutes in:
"main" prio=6 tid=0x00036810 nid=0x618 runnable [0x0007a000..0x0007fc40]
        at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:841)
        at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:673)
        at org.eclipse.swt.custom.StyledTextRenderer.calculate(StyledTextRenderer.java:200)
        at org.eclipse.swt.custom.StyledTextRenderer.calculateClientArea(StyledTextRenderer.java:218)
        at org.eclipse.swt.custom.StyledText.handleResize(StyledText.java:5302)
        at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:4840)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:949)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:930)
        at org.eclipse.swt.widgets.Control.WM_SIZE(Control.java:3880)
        at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:333)
        at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1375)
        at org.eclipse.swt.widgets.Canvas.WM_SIZE(Canvas.java:303)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917)
        at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method)
        at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:703)
        at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:669)
        at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:875)
        at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1390)
        at org.eclipse.swt.widgets.Canvas.WM_SIZE(Canvas.java:303)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917)
        at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
        at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111)
        at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198)
        at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989)
        at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917)
        at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
        at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2180)
        at org.eclipse.swt.custom.StackLayout.layout(StackLayout.java:116)
        at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989)
        at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917)
        at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
        at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111)
        at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198)
        at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989)
        at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917)
        at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
        at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111)
        at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198)
        at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989)
        at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917)
        at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
        at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
        at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111)
        at org.eclipse.swt.widgets.Control.setBounds(Control.java:2180)
        at org.eclipse.ui.internal.LayoutPart.setBounds(LayoutPart.java:300)
        at org.eclipse.ui.internal.presentations.PresentablePart.setBounds(PresentablePart.java:130)
        at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.layoutContent(PresentablePartFolder.java:129)
        at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.layout(PresentablePartFolder.java:410)
        at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:289)
        at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
        at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:394)
        at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1144)
        at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1097)
        at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1311)
        at org.eclipse.ui.internal.PartStack.add(PartStack.java:455)
        at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102)
        at org.eclipse.ui.internal.PartStack.add(PartStack.java:441)
        at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111)
        at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:60)
        at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:217)
        at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:207)
        at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:819)
        at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:718)
        at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:679)
        at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2535)
        at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2470)
        at org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPage.java:2462)
        at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:2447)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2442)
        at org.eclipse.ui.actions.OpenWithMenu.openEditor(OpenWithMenu.java:288)
        at org.eclipse.ui.actions.OpenWithMenu.access$0(OpenWithMenu.java:280)
        at org.eclipse.ui.actions.OpenWithMenu$2.handleEvent(OpenWithMenu.java:184)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
        at org.eclipse.core.launcher.Main.run(Main.java:977)
        at org.eclipse.core.launcher.Main.main(Main.java:952)

"VM Thread" prio=10 tid=0x00a833c8 nid=0x228 runnable

"VM Periodic Task Thread" prio=10 tid=0x00a93398 nid=0x2dc waiting on condition


Comment 14 Steve Northover CLA 2006-05-08 15:17:12 EDT
Not for 3.2.
Comment 15 Philipe Mulet CLA 2006-05-09 03:47:59 EDT
fyi - I saw some IDE reviews, where one of the key differenciator was resilience to a 20Mb source file. Probably some corner situation to challenge in a forthcoming release.
Comment 16 Felipe Heidrich CLA 2006-05-09 17:29:13 EDT
Well, TextLayout#setStyle doesn't scale well, see bug 108813 comment 5.

I think I can improve that and make this case not so bad. But, I think the Text component also should be smart here: for example, line 9 has nearly 200000 styles, all they do is to set the foreground of the numbers to black and the font of the commas to NORMAL. They are all useless.
I'll try to make sure that StyledText ignores them but a better solution would be not having these objects created in the first place.

*** This bug has been marked as a duplicate of 108813 ***