Bug 31148 - freezes when editing a java file and adding while(st.hasMoreTokes())
Summary: freezes when editing a java file and adding while(st.hasMoreTokes())
Status: RESOLVED DUPLICATE of bug 30946
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 2.1 RC1   Edit
Assignee: David Audel CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-02-06 14:56 EST by Johan Compagner CLA
Modified: 2003-02-07 07:20 EST (History)
0 users

See Also:


Attachments
The java file (3.04 KB, text/plain)
2003-02-06 14:58 EST, Johan Compagner CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Johan Compagner CLA 2003-02-06 14:56:59 EST
I will attache a file which does hang my eclipse version (Ibuild 20030205) 
always when i add:

while(st.hasMoreTokens())[cursor-here] and then do CTRL-S (save file)

on the position just after (around line 39):

StringBuffer sb = new StringBuffer();
StringTokenizer st = new StringTokenizer()

it always completely freezes eclipse and eclipse consumes 100% of the cpu.

it also locks up when i don't save the file but press enter after the while() 
and try to type a { on the next row.

This is the thread dump of te freeze with the {

Full thread dump Java HotSpot(TM) Server VM (1.4.1_01-b01 mixed mode):

"Text Viewer Hover Presenter" daemon prio=2 tid=0x19C11870 nid=0x184 waiting 
for monitor entry [1e17f000..1e17fdc0]
        at 
org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getHover
Info(AbstractJavaEditorTextHover.java:88)
        - waiting to lock <03410788> (a 
org.eclipse.jdt.internal.core.WorkingCopy)
        at 
org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo
(BestMatchHover.java:130)
        at 
org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInf
o(JavaEditorTextHoverProxy.java:132)
        at org.eclipse.jface.text.TextViewerHoverManager$2.run
(TextViewerHoverManager.java:108)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x1A191330 
nid=0xc1c runnable [1e0df000..1e0dfdc0]
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse
(Parser.java:6899)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse
(Parser.java:7070)
        at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements
(MethodDeclaration.java:95)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethod
(TypeDeclaration.java:725)
        at org.eclipse.jdt.internal.compiler.Compiler.getMethodBodies
(Compiler.java:391)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:576)
        at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process
(CompilationUnitProblemFinder.java:204)
        at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure
(CompilationUnit.java:90)
        at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent
(CompilationUnit.java:664)
        at org.eclipse.jdt.internal.core.WorkingCopy.reconcile
(WorkingCopy.java:439)
        at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:73)
        - locked <03410788> (a org.eclipse.jdt.internal.core.WorkingCopy)
        at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:100)
        at org.eclipse.jface.text.reconciler.MonoReconciler.process
(MonoReconciler.java:76)
        at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:189)

"Decoration" prio=2 tid=0x19BF2A10 nid=0x57c in Object.wait() 
[1dddf000..1dddfdc0]
        at java.lang.Object.wait(Native Method)
        - waiting on <0533D720> (a 
org.eclipse.ui.internal.decorators.DecorationScheduler)
        at java.lang.Object.wait(Object.java:426)
        at org.eclipse.ui.internal.decorators.DecorationScheduler.next
(DecorationScheduler.java:247)
        - locked <0533D720> (a 
org.eclipse.ui.internal.decorators.DecorationScheduler)
        at org.eclipse.ui.internal.decorators.DecorationScheduler$3.run
(DecorationScheduler.java:273)
        at java.lang.Thread.run(Thread.java:536)

"Java indexing" daemon prio=4 tid=0x19A433C8 nid=0xb98 suspended 
[1dd9f000..1dd9fdc0]
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run
(JobManager.java:334)
        at java.lang.Thread.run(Thread.java:536)

"Snapshot" prio=5 tid=0x19C664F0 nid=0xbf0 in Object.wait() [1a8bf000..1a8bfdc0]

        at java.lang.Object.wait(Native Method)
        - waiting on <05142340> (a 
org.eclipse.core.internal.resources.DelayedSnapshotRunnable)
        at org.eclipse.core.internal.resources.DelayedSnapshotRunnable.run
(DelayedSnapshotRunnable.java:38)
        - locked <05142340> (a 
org.eclipse.core.internal.resources.DelayedSnapshotRunnable)
        at java.lang.Thread.run(Thread.java:536)

"Signal Dispatcher" daemon prio=10 tid=0x009BD188 nid=0x63c waiting on 
condition [0..0]

"Finalizer" daemon prio=9 tid=0x009B9CA0 nid=0x724 in Object.wait() 
[197ff000..197ffdc0]
        at java.lang.Object.wait(Native Method)
        - waiting on <04D47D20> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <04D47D20> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x009B9070 nid=0xf78 in Object.wait() [95
f000..95fdc0]
        at java.lang.Object.wait(Native Method)
        - waiting on <04D47D88> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:426)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:113)
        - locked <04D47D88> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=0x00034C38 nid=0x894 runnable [7e000..7fc28]
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse
(Parser.java:6899)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse
(Parser.java:7070)
        at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements
(MethodDeclaration.java:95)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethod
(TypeDeclaration.java:725)
        at org.eclipse.jdt.core.dom.CompilationUnitResolver.parse
(CompilationUnitResolver.java:213)
        at org.eclipse.jdt.core.dom.AST.parseCompilationUnit(AST.java:523)
        at 
org.eclipse.jdt.internal.ui.text.java.SmartBracesAutoEditStrategy.smartBraces
(SmartBracesAutoEditStrategy.java:474)
        at 
org.eclipse.jdt.internal.ui.text.java.SmartBracesAutoEditStrategy.customizeDocum
entCommand(SmartBracesAutoEditStrategy.java:180)
        at org.eclipse.jface.text.TextViewer.customizeDocumentCommand
(TextViewer.java:2625)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer
.customizeDocumentCommand(CompilationUnitEditor.java:210)
        at org.eclipse.jface.text.TextViewer.handleVerifyEvent
(TextViewer.java:2644)
        at org.eclipse.jface.text.TextViewer$TextVerifyListener.verifyText
(TextViewer.java:318)
        at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:187)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:836)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:861)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:845)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:652)
        at org.eclipse.swt.custom.StyledText.modifyContent(StyledText.java:5671)
        at org.eclipse.swt.custom.StyledText.sendKeyEvent(StyledText.java:6651)
        at org.eclipse.swt.custom.StyledText.doContent(StyledText.java:2708)
        at org.eclipse.swt.custom.StyledText.handleKey(StyledText.java:5097)
        at org.eclipse.swt.custom.StyledText.handleKeyDown(StyledText.java:5120)
        at org.eclipse.swt.custom.StyledText$8.handleEvent(StyledText.java:4867)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:836)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1692)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1410)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1289)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:1272)
        at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:845)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461)
        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:324)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:247)
        at org.eclipse.core.launcher.Main.run(Main.java:703)
        at org.eclipse.core.launcher.Main.main(Main.java:539)

"VM Thread" prio=5 tid=0x009B85A0 nid=0xe94 runnable

"VM Periodic Task Thread" prio=10 tid=0x009BBE78 nid=0x1a4 waiting on condition

"Suspend Checker Thread" prio=10 tid=0x009BC7C8 nid=0xe60 runnable
Comment 1 Johan Compagner CLA 2003-02-06 14:58:14 EST
Created attachment 3336 [details]
The java file
Comment 2 Erich Gamma CLA 2003-02-06 18:47:22 EST
this looks like a dup of bug 30946 
Philippe pls confirm
Comment 3 Philipe Mulet CLA 2003-02-07 06:09:39 EST
Smells like our parser automaton infinite loop (bug 30946).
John - this would be resolved in a 20030206 build.
Comment 4 David Audel CLA 2003-02-07 06:40:22 EST

*** This bug has been marked as a duplicate of 30946 ***
Comment 5 Johan Compagner CLA 2003-02-07 07:20:46 EST
yes is fixed in 0206