Menu

#282 Eclipse hanging forever due to spell checker?

v1.4.0
closed-fixed
None
5
2010-09-04
2010-05-01
Steve Ash
No

I just installed 1.4.0 last week and like the new features a lot. However, when working in the Java perspective, every once in a while (4 times in the last 24 hours), eclipse just suddenly hangs and wont repaint the screen or anything. When I pull a jstack, I see something interesting:

My main UI loop is suspended waiting on the "reconcilers" to be done (Im guessing, I know nothing of Eclipse plugin development):

"main" prio=6 tid=0x0169f400 nid=0xa3c in Object.wait() [0x0012d000..0x0012fc10]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.suspendCallerWhileDirty(AbstractReconciler.java:119)
- locked <0x04b90070> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
at org.eclipse.jface.text.reconciler.AbstractReconciler$Listener.inputDocumentAboutToBeChanged(AbstractReconciler.java:276)
at org.eclipse.jface.text.reconciler.AbstractReconciler.uninstall(AbstractReconciler.java:488)
at org.eclipse.jface.text.source.SourceViewer.unconfigure(SourceViewer.java:610)
at org.eclipse.jface.text.source.SourceViewer.handleDispose(SourceViewer.java:663)
at org.eclipse.jface.text.TextViewer$2.widgetDisposed(TextViewer.java:1726)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:117)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:770)
at org.eclipse.swt.custom.StyledText.handleDispose(StyledText.java:5044)
at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:4872)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1008)
at org.eclipse.swt.widgets.Widget.release(Widget.java:804)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:174)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Widget.dispose(Widget.java:441)
at org.eclipse.ui.internal.PartPane.dispose(PartPane.java:179)
at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:678)
at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1682)
at org.eclipse.ui.internal.WorkbenchPage.handleDeferredEvents(WorkbenchPage.java:1389)
at org.eclipse.ui.internal.WorkbenchPage.deferUpdates(WorkbenchPage.java:1373)
at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:1347)
at org.eclipse.ui.internal.WorkbenchPage.closeEditor(WorkbenchPage.java:1411)
at org.eclipse.ui.internal.CloseEditorHandler.execute(CloseEditorHandler.java:47)

Then I see a separate thread, the MonoReconciler, which is blocking due to a call coming out of the Texlipse spelling engine:

"org.eclipse.jface.text.reconciler.MonoReconciler" daemon prio=2 tid=0x356d7800 nid=0xfd4 in Object.wait() [0x39d2f000..0x39d2fce8]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:185)
- locked <0x04243778> (a org.eclipse.swt.widgets.RunnableLock)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4251)
at net.sourceforge.texlipse.TexlipsePlugin.getCurrentWorkbenchPage(TexlipsePlugin.java:249)
at net.sourceforge.texlipse.TexlipsePlugin.getCurrentProject(TexlipsePlugin.java:221)
at net.sourceforge.texlipse.spelling.TexSpellingEngine.check(TexSpellingEngine.java:182)
at org.eclipse.ui.texteditor.spelling.SpellingService$1.run(SpellingService.java:104)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.ui.texteditor.spelling.SpellingService.check(SpellingService.java:109)
at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.reconcile(SpellingReconcileStrategy.java:198)
at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.reconcile(SpellingReconcileStrategy.java:187)
at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:73)
at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:206)

So there are no threads that aren't in a monitor wait state right now...so I think Im stuck forever :-) I've had to restart eclipse each time.

Discussion

  • Phil Mayer

    Phil Mayer - 2010-05-04

    Hi, I am not a developer of Texlipse but I had a similar problem (Eclipse hanging on Quickfix in JDT). Using the Texlipse source from SVN seems to fix the problem. Perhaps you could try that.

     
  • Anonymous

    Anonymous - 2010-07-19

    Me and several other people had the same problem:
    https://bugs.eclipse.org/bugs/show_bug.cgi?id=319098

     
  • Boris von Loesch

    • assigned_to: nobody --> borisvl
    • status: open --> open-fixed
     
  • Boris von Loesch

    Fixed in latest release, please update your TeXlipse.

     
  • Boris von Loesch

    • status: open-fixed --> closed-fixed
     

Log in to post a comment.