Bug 59420 - Deadlock between AnnotationPainter and AnnotationModel lock
Summary: Deadlock between AnnotationPainter and AnnotationModel lock
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Text (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P1 major (vote)
Target Milestone: 3.0 M9   Edit
Assignee: Dani Megert CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 60122 60530 61205 (view as bug list)
Depends on:
Blocks:
 
Reported: 2004-04-21 09:21 EDT by Christof Marti CLA
Modified: 2004-05-10 12:25 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 Christof Marti CLA 2004-04-21 09:21:49 EDT
I200404201300

Found one Java-level deadlock:
=============================
"Worker-113":
  waiting to lock monitor 0x009bf2bc (object 0x192b2a70, a org.eclipse.jface.tex
t.source.AnnotationPainter),
  which is held by "main"
"main":
  waiting to lock monitor 0x009bf29c (object 0x192b10f0, a java.lang.Object),
  which is held by "Worker-113"

Java stack information for the threads listed above:
===================================================
"Worker-113":
        at org.eclipse.jface.text.source.AnnotationPainter.modelChanged(Annotati
onPainter.java:812)
        - waiting to lock <0x192b2a70> (a org.eclipse.jface.text.source.Annotati
onPainter)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(Annota
tionModel.java:396)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(Annota
tionModel.java:360)
        at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(Anno
tationModel.java:208)
        at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(Anno
tationModel.java:173)
        at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$OccurrencesFinderJo
b.run(JavaEditor.java:3342)
        - locked <0x192b10f0> (a java.lang.Object)
        at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.updateOccurrenceAnn
otations(JavaEditor.java:3433)
        at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$7.selectionChanged(
JavaEditor.java:3441)
        at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManag
er$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:
128)
        at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManag
er$1.run(SelectionListenerWithASTManager.java:101)
        - locked <0x192aaf00> (a org.eclipse.jdt.internal.ui.viewsupport.Selecti
onListenerWithASTManager$PartListenerGroup)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)
"main":
        at org.eclipse.jface.text.source.AnnotationMap.get(AnnotationMap.java:10
0)
        - waiting to lock <0x192b10f0> (a java.lang.Object)
        at org.eclipse.jface.text.source.AnnotationModel.getPosition(AnnotationM
odel.java:526)
        at org.eclipse.jface.text.source.AnnotationPainter.getDecoration(Annotat
ionPainter.java:576)
        at org.eclipse.jface.text.source.AnnotationPainter.catchupWithModel(Anno
tationPainter.java:469)
        - locked <0x192b2a70> (a org.eclipse.jface.text.source.AnnotationPainter
)
        at org.eclipse.jface.text.source.AnnotationPainter.updatePainting(Annota
tionPainter.java:730)
        at org.eclipse.jface.text.source.AnnotationPainter.access$1(AnnotationPa
inter.java:727)
        at org.eclipse.jface.text.source.AnnotationPainter$1.run(AnnotationPaint
er.java:836)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.ja
va:106)
        - locked <0x109db1b0> (a org.eclipse.swt.widgets.RunnableLock)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:2569)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2274)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1437)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1408)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.jav
a:244)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:140)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:90
)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformAct
ivator.java:280)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.ja
va:240)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.ja
va:117)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:267)
        at org.eclipse.core.launcher.Main.run(Main.java:699)
        at org.eclipse.core.launcher.Main.main(Main.java:683)

Found 1 deadlock.
Comment 1 Dani Megert CLA 2004-05-03 07:03:27 EDT
*** Bug 60530 has been marked as a duplicate of this bug. ***
Comment 2 Dani Megert CLA 2004-05-03 07:06:17 EDT
see also bug 60122
Comment 3 Dani Megert CLA 2004-05-06 10:01:13 EDT
*** Bug 61205 has been marked as a duplicate of this bug. ***
Comment 4 Philipe Mulet CLA 2004-05-07 07:44:42 EDT
Got it again today. Slightly different trace, I'll attach it in case useful.

Found one Java-level deadlock:
=============================
"org.eclipse.jdt.internal.ui.text.JavaReconciler":
  waiting to lock monitor 0x00a0ec9c (object 0x16d3dce8, a 
org.eclipse.jface.text.source.AnnotationPainter),
  which is held by "main"
"main":
  waiting to lock monitor 0x00a0ecfc (object 0x15c31d70, a java.lang.Object),
  which is held by "org.eclipse.jdt.internal.ui.text.JavaReconciler"

Java stack information for the threads listed above:
===================================================
"org.eclipse.jdt.internal.ui.text.JavaReconciler":
        at org.eclipse.jface.text.source.AnnotationPainter.modelChanged
(AnnotationPainter.java:847)
        - waiting to lock <0x16d3dce8> (a 
org.eclipse.jface.text.source.AnnotationPainter)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged
(AnnotationModel.java:396)
        at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged
(AnnotationModel.java:360)
        at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations
(AnnotationModel.java:208)
        at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations
(AnnotationModel.java:173)
        at 
org.eclipse.jdt.internal.ui.javaeditor.OverrideIndicatorManager.updateAnnotatio
ns(OverrideIndicatorManager.java:253)
        - locked <0x15c31d70> (a java.lang.Object)
        at 
org.eclipse.jdt.internal.ui.javaeditor.OverrideIndicatorManager.reconciled
(OverrideIndicatorManager.java:294)
        - locked <0x16d3d968> (a 
org.eclipse.jdt.internal.ui.javaeditor.OverrideIndicatorManager)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.reconciled
(CompilationUnitEditor.java:1735)
        at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:117)
        at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:129)
        at 
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile
(CompositeReconcilingStrategy.java:86)
        at 
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile
(JavaCompositeReconcilingStrategy.java:96)
        at org.eclipse.jface.text.reconciler.MonoReconciler.process
(MonoReconciler.java:76)
        at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:189)
"main":
        at org.eclipse.jface.text.source.AnnotationMap.get
(AnnotationMap.java:100)
        - waiting to lock <0x15c31d70> (a java.lang.Object)
        at org.eclipse.jface.text.source.AnnotationModel.getPosition
(AnnotationModel.java:534)
        at org.eclipse.jface.text.source.AnnotationPainter.getDecoration
(AnnotationPainter.java:611)
        at org.eclipse.jface.text.source.AnnotationPainter.catchupWithModel
(AnnotationPainter.java:504)
        - locked <0x16d3dce8> (a 
org.eclipse.jface.text.source.AnnotationPainter)
        at org.eclipse.jface.text.source.AnnotationPainter.updatePainting
(AnnotationPainter.java:765)
        at org.eclipse.jface.text.source.AnnotationPainter.access$1
(AnnotationPainter.java:762)
        at org.eclipse.jface.text.source.AnnotationPainter$1.run
(AnnotationPainter.java:871)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages
(Synchronizer.java:106)
        - locked <0x100459e0> (a org.eclipse.swt.widgets.RunnableLock)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:2571)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2276)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1353)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1324)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench
(Workbench.java:243)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:140)
        at org.eclipse.ui.internal.ide.IDEApplication.run
(IDEApplication.java:90)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:283)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:242)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:119)
        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:269)
        at org.eclipse.core.launcher.Main.run(Main.java:700)
        at org.eclipse.core.launcher.Main.main(Main.java:684)

Found 1 deadlock.
Comment 5 Philipe Mulet CLA 2004-05-07 07:45:25 EDT
I agree this is a P1, as it results in data loss (cannot save editor contents).
Comment 6 Dani Megert CLA 2004-05-10 10:43:47 EDT
*** Bug 60122 has been marked as a duplicate of this bug. ***
Comment 7 Dani Megert CLA 2004-05-10 12:25:31 EDT
Released fix.
Will go into tonights I-build.