Bug 3267 - Deadlock while refreshing form local (1GDTUSD)
Summary: Deadlock while refreshing form local (1GDTUSD)
Status: RESOLVED WORKSFORME
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.0   Edit
Hardware: All Windows 2000
: P3 normal (vote)
Target Milestone: 2.0 F3   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2001-10-10 22:52 EDT by Dirk Baeumer CLA
Modified: 2002-06-04 10:10 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dirk Baeumer CLA 2001-10-10 22:52:17 EDT
- opened the type hierarchy on IChange
	- selected org.eclipse.ui
	- pressed refresh from local (change two files directly on disk)

	==> deadlock:

	Assume that:
		JavaElement.getElementInfo does a synchronized on fgJavaModelManager
		one of the jdt.core methods on the main thread also do a synchronized on fgJavaModelManager.


Full thread dump Classic VM (JDK-1.2.2_007, native threads):
    "BusyCursorRunnableContext-Thread" (TID:0x1ecd460, sys_thread_t:0x1150dbc8, state:MW, native ID:0x684) prio=5
        at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProject.getJavaProjectElementInfo(JavaProject.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProject.getSearchableNameEnvironment(JavaProject.java:828)
        at org.eclipse.jdt.internal.core.hierarchy.HierarchyBuilder.<init>(HierarchyBuilder.java:56)
        at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.<init>(IndexBasedHierarchyBuilder.java:84)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.compute(TypeHierarchy.java:240)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.refresh(TypeHierarchy.java:1026)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle$1.run(TypeHierarchyLifeCycle.java:111)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$ThreadContext.run(BusyIndicatorRunnableContext.java:40)
    "ModalContext" (TID:0x1ff8d50, sys_thread_t:0x114f1a60, state:CW, native ID:0x690) prio=5
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java, Compiled Code)
        at org.eclipse.ui.internal.Semaphore.acquire(Semaphore.java, Compiled Code)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java, Compiled Code)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java, Compiled Code)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.checkedSyncExec(TypeHierarchyViewPart.java:626)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.typeHierarchyChanged(TypeHierarchyViewPart.java:572)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.fireChange(TypeHierarchyLifeCycle.java, Compiled Code)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.typeHierarchyChanged(TypeHierarchyLifeCycle.java:141)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.fireChange(TypeHierarchy.java, Compiled Code)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.elementChanged(TypeHierarchy.java:306)
        at org.eclipse.jdt.internal.core.JavaModelManager.fire(JavaModelManager.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaModelManager.resourceChanged(JavaModelManager.java, Compiled Code)
        at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java, Compiled Code)
        at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java, Compiled Code)
        at org.eclipse.core.runtime.Platform.run(Platform.java, Compiled Code)
        at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java, Compiled Code)
        at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java, Compiled Code)
        at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java, Compiled Code)
        at org.eclipse.core.internal.resources.Workspace.broadcastChanges(Workspace.java, Compiled Code)
        at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java, Compiled Code)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java, Compiled Code)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:79)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:102)
    "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x1eaf470, sys_thread_t:0xcf5d498, state:CW, native ID:0x48c) prio=1
        at java.lang.Object.wait(Native Method)
        at org.eclipse.jdt.internal.ui.text.JavaReconciler$BackgroundThread.run(JavaReconciler.java, Compiled Code)
    "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x1f1f958, sys_thread_t:0xcf0e868, state:CW, native ID:0x620) prio=1
        at java.lang.Object.wait(Native Method)
        at org.eclipse.jdt.internal.ui.text.JavaReconciler$BackgroundThread.run(JavaReconciler.java, Compiled Code)
    "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x1f64160, sys_thread_t:0xcf18ca0, state:CW, native ID:0x4f8) prio=1
        at java.lang.Object.wait(Native Method)
        at org.eclipse.jdt.internal.ui.text.JavaReconciler$BackgroundThread.run(JavaReconciler.java, Compiled Code)
    "org.eclipse.jdt.internal.ui.text.JavaReconciler" (TID:0x22c20b8, sys_thread_t:0xceaed50, state:CW, native ID:0x5c8) prio=1
        at java.lang.Object.wait(Native Method)
        at org.eclipse.jdt.internal.ui.text.JavaReconciler$BackgroundThread.run(JavaReconciler.java, Compiled Code)
    "Java indexing: org.eclipse.jdt.internal.core.search.indexing.IndexManager" (TID:0x248d3f8, sys_thread_t:0xc7c45b8, state:CW, native ID:0x460) prio=5
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java, Compiled Code)
        at java.lang.Thread.run(Thread.java:479)
    "SymcJIT-LazyCompilation-0" (TID:0x2015578, sys_thread_t:0xa9ffc68, state:CW, native ID:0x5d0) prio=1
        at SymantecJITCompilationThread.DoCompileMethod(Native Method)
        at SymantecJITCompilationThread.run(JITcompilationthread.java, Compiled Code)
    "SymcJIT-LazyCompilation-PA" (TID:0x2015540, sys_thread_t:0xa16b4a0, state:CW, native ID:0x4d0) prio=10
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:424)
        at SymantecJITCompilationThread.run(JITcompilationthread.java, Compiled Code)
    "Finalizer" (TID:0x20106c0, sys_thread_t:0xa0c18a8, state:CW, native ID:0x64c) prio=8
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java, Compiled Code)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java, Compiled Code)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:174)
    "Reference Handler" (TID:0x2010498, sys_thread_t:0xa08cd00, state:CW, native ID:0x594) prio=10
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java, Compiled Code)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:114)
    "Signal dispatcher" (TID:0x20105d0, sys_thread_t:0xa0a6370, state:R, native ID:0x69c) prio=5
    "main" (TID:0x2010380, sys_thread_t:0x2f3b28, state:CW, native ID:0x5a0) prio=5
        at java.lang.Object.wait(Native Method)
        at java.lang.Thread.join(Thread.java:920)
        at java.lang.Thread.join(Thread.java:973)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$ThreadContext.sync(BusyIndicatorRunnableContext.java:57)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext.internalRun(BusyIndicatorRunnableContext.java:113)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext.access$0(BusyIndicatorRunnableContext.java:102)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$BusyRunnable.run(BusyIndicatorRunnableContext.java:73)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java, Compiled Code)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext.run(BusyIndicatorRunnableContext.java:90)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.ensureRefreshedTypeHierarchy(TypeHierarchyLifeCycle.java:120)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart$9.run(TypeHierarchyViewPart.java:579)
        at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java, Compiled Code)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java, Compiled Code)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java, Compiled Code)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.checkedSyncExec(TypeHierarchyViewPart.java:626)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.typeHierarchyChanged(TypeHierarchyViewPart.java:572)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.fireChange(TypeHierarchyLifeCycle.java, Compiled Code)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.typeHierarchyChanged(TypeHierarchyLifeCycle.java:141)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.fireChange(TypeHierarchy.java, Compiled Code)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.elementChanged(TypeHierarchy.java:306)
        at org.eclipse.jdt.internal.core.JavaModelManager.fire(JavaModelManager.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.attachSource(JarPackageFragmentRoot.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.openWhenClosed(JarPackageFragmentRoot.java:553)
        at org.eclipse.jdt.internal.core.JavaElement.openHierarchy(JavaElement.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProject.getPackageFragmentsInRoots(JavaProject.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragments(JavaProject.java:359)
        at org.eclipse.jdt.internal.core.NameLookup.configureFromProject(NameLookup.java, Compiled Code)
        at org.eclipse.jdt.internal.core.NameLookup.<init>(NameLookup.java:58)
        at org.eclipse.jdt.internal.core.JavaProject.getNameLookup(JavaProject.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProject.findPackageFragmentRoot(JavaProject.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProjectElementInfo.computeNonJavaResources(JavaProjectElementInfo.java, Compiled Code)
        at org.eclipse.jdt.internal.core.JavaProjectElementInfo.getNonJavaResources(JavaProjectElementInfo.java:141)
        at org.eclipse.jdt.internal.core.JavaProject.getNonJavaResources(JavaProject.java:561)
        at org.eclipse.jdt.ui.JavaElementContentProvider.getNonProjectPackageFragmentRoots(JavaElementContentProvider.java, Compiled Code)
        at org.eclipse.jdt.ui.JavaElementContentProvider.getChildren(JavaElementContentProvider.java, Compiled Code)
        at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.StructuredViewer.getSortedChildren(StructuredViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java, Compiled Code)
        at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java, Compiled Code)
        at org.eclipse.jdt.ui.JavaElementContentProvider$2.run(JavaElementContentProvider.java:279)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java, Compiled Code)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java, Compiled Code)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java, Compiled Code)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java, Compiled Code)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java, Compiled Code)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:267)
        at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:337)
        at org.eclipse.ui.actions.WorkspaceAction.run(WorkspaceAction.java:297)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:421)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(ActionContributionItem.java, Compiled Code)
        at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java, Compiled Code)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java, Compiled Code)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java, Compiled Code)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java, Compiled Code)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java, Compiled Code)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java, Compiled Code)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:691)
        at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:850)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:280)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:67)
        at org.eclipse.core.launcher.Main.run(Main.java:299)
        at org.eclipse.core.launcher.UIMain.main(UIMain.java:43)
Monitor Cache Dump:
    java.lang.ref.ReferenceQueue$Lock@20106D0/2614908: <unowned>
        Waiting to be notified:
            "Finalizer" (0xa0c18a8)
    java.lang.ref.Reference$Lock@20104A8/26143B8: <unowned>
        Waiting to be notified:
            "Reference Handler" (0xa08cd00)
    org.eclipse.jdt.internal.core.JavaModelManager@23BAA20/2938418: owner "main" (0x2f3b28) 1 entry
        Waiting to enter:
            "BusyCursorRunnableContext-Thread" (0x1150dbc8)
    java.lang.Object@1F64150/6647570: <unowned>
        Waiting to be notified:
            "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0xcf18ca0)
    org.eclipse.ui.actions.WorkspaceAction$1@1FFA758/5FF9490: owner "ModalContext" (0x114f1a60) 1 entry
    org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$ThreadContext@1ECD460/647CCC8: <unowned>
        Waiting to be notified:
            "main" (0x2f3b28)
    java.lang.Object@1F1F950/68EF348: <unowned>
        Waiting to be notified:
            "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0xcf0e868)
    java.lang.Object@1EAF468/6D15898: <unowned>
        Waiting to be notified:
            "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0xcf5d498)
    java.lang.Object@22C20A8/5BF9300: <unowned>
        Waiting to be notified:
            "org.eclipse.jdt.internal.ui.text.JavaReconciler" (0xceaed50)
    org.eclipse.swt.widgets.RunnableLock@1F5DDA0/61F8248: owner "main" (0x2f3b28) 1 entry
    org.eclipse.ui.internal.Semaphore@1ECD288/6475AF0: <unowned>
        Waiting to be notified:
            "ModalContext" (0x114f1a60)
    SymantecJITCompilationThread@2015578/263B1A0: <unowned>
        Waiting to be notified:
            "SymcJIT-LazyCompilation-PA" (0xa16b4a0)
Registered Monitor Dump:
    SymcJIT Method Monitor: <unowned>
    SymcJIT Method Monitor: <unowned>
    SymcJIT Lazy Queue Lock: <unowned>
        Waiting to be notified:
            "SymcJIT-LazyCompilation-0" (0xa9ffc68)
    SymcJIT Method Monitor: <unowned>
    SymcJIT Method List Monitor: <unowned>
    SymcJIT Lock: <unowned>
    utf8 hash table: <unowned>
    JNI pinning lock: <unowned>
    JNI global reference lock: <unowned>
    BinClass lock: <unowned>
    Class linking lock: <unowned>
    System class loader lock: <unowned>
    Code rewrite lock: <unowned>
    Heap lock: <unowned>
    Monitor cache lock: owner "Signal dispatcher" (0xa0a6370) 1 entry
    Thread queue lock: owner "Signal dispatcher" (0xa0a6370) 1 entry
    Monitor registry: owner "Signal dispatcher" (0xa0a6370) 1 entry





NOTES:
Comment 1 DJ Houghton CLA 2001-10-23 23:53:30 EDT
PRODUCT VERSION:
	107

Comment 2 Philipe Mulet CLA 2002-06-04 10:10:49 EDT
This problem was due to the fact deltas were notified during jar root opening 
(when source was attached). Deltas got disabled a long time ago.

Closing.