Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 315367 - Deadlock when changing selection in synchronize view
Summary: Deadlock when changing selection in synchronize view
Status: RESOLVED INVALID
Alias: None
Product: Subversive
Classification: Technology
Component: UI (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 critical (vote)
Target Milestone: ---   Edit
Assignee: Igor Burilo CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-02 05:54 EDT by Benno Baumgartner CLA
Modified: 2010-12-13 01:40 EST (History)
1 user (show)

See Also:


Attachments
thread dump (23.39 KB, text/plain)
2010-06-02 05:54 EDT, Benno Baumgartner CLA
no flags Details
Locked threads (11.25 KB, text/plain)
2010-12-13 01:34 EST, Alexander Gurov CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Benno Baumgartner CLA 2010-06-02 05:54:10 EDT
Created attachment 170768 [details]
thread dump

Eclipse RC2

See thread dump. I've changed selection in synchronize view while a ''override and update'' operation was in progress.
Comment 1 Alexander Gurov CLA 2010-12-13 01:34:48 EST
Created attachment 185038 [details]
Locked threads

As you can see from the thread dumps (complete thread dumps for the 3 selected threads you can see in attachement), there were no deadlock. It's just that 2 threads were awaiting for the completion of the third one.

"SVN-Y7J5W" prio=6 tid=0x57e01800 nid=0xfcc runnable [0x56e9e000]
   java.lang.Thread.State: RUNNABLE
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(Unknown Source)
        at java.io.BufferedInputStream.fill(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        - locked <0x09a541f0> (a java.io.BufferedInputStream)
        at org.tmatesoft.svn.core.internal.wc.SVNFileUtil.compareFiles(SVNFileUtil.java:950)
        at org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea.compareAndVerify(SVNAdminArea.java:1429)
        at org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea.hasTextModifications(SVNAdminArea.java:218)
..........................
        at org.tmatesoft.svn.core.javahl.SVNClientImpl.status(SVNClientImpl.java:282)
        at org.polarion.team.svn.connector.svnkit.SVNKitConnector.status(SVNKitConnector.java:336)
        at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.status(ThreadNameModifier.java:608)
        at org.eclipse.team.svn.core.utility.SVNUtility.status(SVNUtility.java:299)
        at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.getStatuses(SVNRemoteStorage.java:862)
        at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.loadLocalResourcesSubTreeSVNImpl(SVNRemoteStorage.java:777)
        at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.loadLocalResourcesSubTree(SVNRemoteStorage.java:656)
        at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.asLocalResource(SVNRemoteStorage.java:421)
        - locked <0x18c695f8> (a org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage)
        at org.eclipse.team.svn.core.utility.FileUtility.addChildren(FileUtility.java:806)
        at org.eclipse.team.svn.core.utility.FileUtility.getResourcesRecursive(FileUtility.java:411)
        at org.eclipse.team.svn.core.utility.FileUtility.getResourcesRecursive(FileUtility.java:406)
        at org.eclipse.team.svn.ui.mapping.UpdateSubscriberContext$3.getResources(UpdateSubscriberContext.java:179)
        at org.eclipse.team.svn.core.operation.local.AbstractWorkingCopyOperation.operableData(AbstractWorkingCopyOperation.java:56)
        at org.eclipse.team.svn.core.operation.local.UpdateOperation.runImpl(UpdateOperation.java:81)
..........................
        at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)



"Worker-9" prio=6 tid=0x560b0000 nid=0xf28 waiting for monitor entry [0x5954f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.getRegisteredChildren(SVNRemoteStorage.java:367)
        - waiting to lock <0x18c695f8> (a org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage)
        at org.eclipse.team.svn.core.operation.local.GetAllResourcesOperation.runImpl(GetAllResourcesOperation.java:37)
        at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
        at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
        at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
        at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
        at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternalDefault(ProgressMonitorUtility.java:77)
        at org.eclipse.team.svn.core.utility.FileUtility.getAllMembers(FileUtility.java:820)
        at org.eclipse.team.svn.core.utility.FileUtility.checkForResourcesPresence(FileUtility.java:379)
        at org.eclipse.team.svn.core.utility.FileUtility.checkForResourcesPresenceRecursive(FileUtility.java:348)
        at org.eclipse.team.svn.ui.decorator.SVNLightweightDecorator.getStatus(SVNLightweightDecorator.java:419)
        at org.eclipse.team.svn.ui.decorator.SVNLightweightDecorator.decorateResource(SVNLightweightDecorator.java:226)
        at org.eclipse.team.svn.ui.decorator.SVNLightweightDecorator.decorate(SVNLightweightDecorator.java:193)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:263)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:81)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:365)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:347)
        at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:371)
        at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:331)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)




"main" prio=6 tid=0x008f6400 nid=0x460 waiting for monitor entry [0x0012e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.asLocalResource(SVNRemoteStorage.java:417)
        - waiting to lock <0x18c695f8> (a org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage)
        at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber.getSyncInfo(AbstractSVNSubscriber.java:138)
        at org.eclipse.team.svn.ui.synchronize.action.AbstractSynchronizeLogicalModelAction.getFilteredResources(AbstractSynchronizeLogicalModelAction.java:237)
        at org.eclipse.team.svn.ui.synchronize.action.AbstractSynchronizeLogicalModelAction.isEnabledForSelection(AbstractSynchronizeLogicalModelAction.java:67)
        at org.eclipse.team.ui.synchronize.ModelParticipantAction.updateSelection(ModelParticipantAction.java:88)
        at org.eclipse.team.svn.ui.synchronize.action.logicalmodel.OpenInExternalCompareEditorModelAction.updateSelection(OpenInExternalCompareEditorModelAction.java:60)
        at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:124)
..........................
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
Comment 2 Alexander Gurov CLA 2010-12-13 01:40:45 EST
There were no deadlock, it's just that you caused some UI threads waiting for the completion of previously started action. Although it is obviously no good when UI threads waiting for something there are no critical issues like deadlock.