Bug 218387 - [efs][performance] Eclipse hangs on startup of a Workspace with a large efs-shared file system on a slow connection
Summary: [efs][performance] Eclipse hangs on startup of a Workspace with a large efs-s...
Status: ASSIGNED
Alias: None
Product: Target Management
Classification: Tools
Component: RSE (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: dsdp.tm.rse-inbox CLA
QA Contact: Martin Oberhuber CLA
URL:
Whiteboard:
Keywords: performance
Depends on:
Blocks:
 
Reported: 2008-02-08 16:36 EST by Martin Oberhuber CLA
Modified: 2012-11-19 04:57 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Oberhuber CLA 2008-02-08 16:36:23 EST
RSE 3.0M4, PHPEclpise-1.2.0

I have a large workspace with one project that includes a remote folder via an RSE SSH connection. Below that remote folder, there is a pretty large hierarchy of files.

I had to quit Eclipse due to a hangup, added com.jcraft.jsch_0.1.37.jar and restarted with -clean. During startup, Eclipse hangs with this thread dump: it looks like no thread can signal on the Jobs semaphore that the main thread is holding, because there are two Worker jobs waiting on syncExec() which they cannot do because the main thread is stalled.

What's more, bundle activation is not yet complete and the "files.ui adapter loader" is also stalled on a Job. The bug could be related to incorrect adatper factory loading (bug 218304).

The deadlock is reproducable and happens when the splash screen shows "loading org.eclipse.rse.files.ui". Not even switching Eclipse installation helped, the issue is with the workspace. What finally helped was physically renaming the folder that holds the remote linked resources, such that Eclipse could no longer try and open it on startup. Closer investigation pending.

4144 eclipse.exe ( GDI+ Window ) session:0 threads:25 parent:6720
2008-02-08 22:16:20
Full thread dump Java HotSpot(TM) Client VM (1.6.0_02-b06 mixed mode):

"StackTrace Remote Thread" prio=6 tid=0x03677c00 nid=0x1054 waiting on condition [0x00000000..0x05f1fa7c]
   java.lang.Thread.State: RUNNABLE

"JMX server connection timeout 29" daemon prio=6 tid=0x037dac00 nid=0x17f8 in Object.wait() [0x05cff000..0x05cffc14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:150)
	- locked <0x147c53b0> (a [I)
	at java.lang.Thread.run(Thread.java:619)

"RMI Scheduler(0)" daemon prio=6 tid=0x0367bc00 nid=0x5b0 waiting on condition [0x0517f000..0x0517fc94]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x127e6d68> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:582)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:575)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:946)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)
	at java.lang.Thread.run(Thread.java:619)

"Java indexing" daemon prio=4 tid=0x02e1a800 nid=0x8f4 in Object.wait() [0x05e1f000..0x05e1fd94]
   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.jdt.internal.core.search.processing.JobManager.run(JobManager.java:372)
	- locked <0x146e50f8> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
	at java.lang.Thread.run(Thread.java:619)

"files.ui adapter loader" prio=6 tid=0x04606400 nid=0x1788 in Object.wait() [0x0557e000..0x0557fb14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:189)
	- locked <0x1336d370> (a java.lang.Object)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:87)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:225)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:117)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1747)
	at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1428)
	at org.eclipse.rse.internal.files.ui.resources.SystemRemoteEditManager.refreshRemoteEditProject(SystemRemoteEditManager.java:756)
	at org.eclipse.rse.internal.files.ui.Activator.start(Activator.java:65)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:999)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)
	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
	at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:419)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:344)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:412)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:373)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:361)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:289)
	at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1273)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:160)
	at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:863)
	at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
	at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
	at org.eclipse.core.internal.adapter.AdapterFactoryProxy.loadFactory(AdapterFactoryProxy.java:136)
	- locked <0x142f9840> (a org.eclipse.core.internal.adapter.AdapterFactoryProxy)
	at org.eclipse.core.internal.runtime.AdapterManager.getAdapter(AdapterManager.java:315)
	at org.eclipse.core.internal.runtime.AdapterManager.loadAdapter(AdapterManager.java:350)
	at org.eclipse.rse.internal.subsystems.files.core.Activator$1.run(Activator.java:54)

"Thread-3" prio=6 tid=0x03be9c00 nid=0x16c in Object.wait() [0x0547f000..0x0547fb94]
   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:182)
	- locked <0x145678c8> (a org.eclipse.swt.widgets.RunnableLock)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:118)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4183)
	at org.eclipse.ui.internal.StartupThreading.runWithThrowable(StartupThreading.java:85)
	at org.eclipse.ui.internal.EditorManager.restoreState(EditorManager.java:938)
	at org.eclipse.ui.internal.WorkbenchPage.restoreState(WorkbenchPage.java:3025)
	at org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:2066)
	at org.eclipse.ui.internal.Workbench.doRestoreState(Workbench.java:3364)
	at org.eclipse.ui.internal.Workbench.access$32(Workbench.java:3306)
	at org.eclipse.ui.internal.Workbench$53.run(Workbench.java:2115)
	at org.eclipse.ui.internal.Workbench.runStartupWithProgress(Workbench.java:1823)
	at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:2113)
	at org.eclipse.ui.internal.Workbench.access$30(Workbench.java:2084)
	at org.eclipse.ui.internal.Workbench$48.run(Workbench.java:1942)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1886)
	at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:183)
	at org.eclipse.ui.application.WorkbenchAdvisor$1.run(WorkbenchAdvisor.java:779)

"Worker-3" prio=6 tid=0x03758c00 nid=0x1dc8 in Object.wait() [0x0537f000..0x0537fc14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
	- locked <0x12bed858> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-2" prio=6 tid=0x03684400 nid=0x1ab8 in Object.wait() [0x0527f000..0x0527fc94]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
	- locked <0x12bed858> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Thread-2" prio=6 tid=0x03b2b400 nid=0x14f4 waiting for monitor entry [0x0507f000..0x0507fd94]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
	- waiting to lock <0x1407dfa0> (a org.eclipse.swt.widgets.RunnableLock)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:118)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4183)
	at org.eclipse.ui.internal.StartupThreading.runWithoutExceptions(StartupThreading.java:94)
	at org.eclipse.ui.internal.Workbench.init(Workbench.java:1345)
	at org.eclipse.ui.internal.Workbench.access$34(Workbench.java:1282)
	at org.eclipse.ui.internal.Workbench$57.run(Workbench.java:2304)

"Worker-0" prio=6 tid=0x03a80400 nid=0x14e8 in Object.wait() [0x04f0f000..0x04f0fa14]
   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.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:108)
	- locked <0x13f85268> (a org.eclipse.ui.internal.UISynchronizer)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4183)
	at org.eclipse.rse.core.subsystems.SubSystem.connect(SubSystem.java:2236)
	at org.eclipse.rse.internal.efs.RSEFileStoreImpl.getConnectedFileSubSystem(RSEFileStoreImpl.java:243)
	at org.eclipse.rse.internal.efs.RSEFileStoreImpl.getRemoteFileObject(RSEFileStoreImpl.java:307)
	at org.eclipse.rse.internal.efs.RSEFileStoreImpl.fetchInfo(RSEFileStoreImpl.java:487)
	at org.eclipse.rse.internal.efs.RSEFileStore.fetchInfo(RSEFileStore.java:268)
	at org.eclipse.rse.internal.efs.RSEFileStore.fetchInfo(RSEFileStore.java:250)
	at org.eclipse.core.internal.localstore.UnifiedTree.createChildForLinkedResource(UnifiedTree.java:255)
	at org.eclipse.core.internal.localstore.UnifiedTree.addChildren(UnifiedTree.java:150)
	at org.eclipse.core.internal.localstore.UnifiedTree.addNodeChildrenToQueue(UnifiedTree.java:226)
	at org.eclipse.core.internal.localstore.UnifiedTree.accept(UnifiedTree.java:100)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.refreshResource(FileSystemResourceManager.java:730)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.refresh(FileSystemResourceManager.java:714)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.refreshRoot(FileSystemResourceManager.java:761)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.refresh(FileSystemResourceManager.java:707)
	at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1432)
	at org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:141)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Bundle File Closer" daemon prio=6 tid=0x03669000 nid=0xc94 in Object.wait() [0x042af000..0x042afb14]
   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.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:375)
	- locked <0x12977ba0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:315)

"Start Level Event Dispatcher" daemon prio=6 tid=0x03a10400 nid=0x1774 in Object.wait() [0x041af000..0x041afc14]
   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.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:375)
	- locked <0x1288d5c0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:315)

"Framework Event Dispatcher" daemon prio=6 tid=0x03a2a800 nid=0xba8 in Object.wait() [0x03faf000..0x03fafd14]
   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.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:375)
	- locked <0x1288b5f0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:315)

"RMI TCP Accept-0" daemon prio=6 tid=0x03643400 nid=0x1920 runnable [0x038df000..0x038dfa14]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
	- locked <0x127f1cc0> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:453)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
	at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=6 tid=0x02ddd000 nid=0x1620 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x02dd8400 nid=0x1310 waiting on condition [0x00000000..0x0344f798]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x02dd7000 nid=0x4a8 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x02dd6400 nid=0x1e7c runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x02dc3800 nid=0x1170 in Object.wait() [0x0314f000..0x0314fc94]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
	- locked <0x127b9fa8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x02dc2800 nid=0x15c in Object.wait() [0x0304f000..0x0304fd14]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:485)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <0x127ba038> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0x008e6400 nid=0xa1c in Object.wait() [0x0012e000..0x0012fc54]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:38)
	- locked <0x147835f0> (a org.eclipse.core.internal.jobs.Semaphore)
	at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:169)
	at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:105)
	at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:82)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:118)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1747)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1795)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:785)
	at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:4713)
	at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:69)
	at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2301)
	at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1625)
	at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1644)
	at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2529)
	at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1819)
	at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:390)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:252)
	at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:478)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:234)
	at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:478)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:234)
	at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:478)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:234)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:510)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:251)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:237)
	at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:155)
	at org.eclipse.jdt.internal.core.Openable.exists(Openable.java:196)
	at org.eclipse.jdt.internal.ui.javaeditor.ClassFileEditorInputFactory.createElement(ClassFileEditorInputFactory.java:50)
	at org.eclipse.ui.internal.EditorReference.getRestoredInput(EditorReference.java:365)
	at org.eclipse.ui.internal.EditorReference.getEditorInput(EditorReference.java:328)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:591)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:428)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594)
	at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:263)
	at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1410)
	at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:944)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:130)
	- locked <0x145678c8> (a org.eclipse.swt.widgets.RunnableLock)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3737)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3374)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:801)
	at org.eclipse.ui.internal.Workbench$25.runWithException(Workbench.java:1350)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:130)
	- locked <0x1407dfa0> (a org.eclipse.swt.widgets.RunnableLock)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3737)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3374)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2312)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
	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:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1251)

"VM Thread" prio=10 tid=0x02dbf800 nid=0x11bc runnable 

"VM Periodic Task Thread" prio=10 tid=0x03648800 nid=0x854 waiting on condition
Comment 1 Martin Oberhuber CLA 2008-02-15 17:14:08 EST
Experienced a similar hang on "Import Existing Project", see bug 219164.
Comment 2 Martin Oberhuber CLA 2008-02-15 17:15:28 EST
Moving severity down to "Major" since no loss of data occurred, there is a workaround, and the stalled workspace can be cleaned and re-created.
Comment 3 Martin Oberhuber CLA 2008-02-18 06:11:38 EST
I've been re-creating the scenario with a smaller remote files tree and a faster connection, and it's been working very well.

It looks like there is no deadlock involved, but only refresh of the large file tree on a slow connection takes long; and, depending on the situation, refresh can happen in the dispatch thread. This is really a problem of the Eclipse Workspace / Resources mechanism, and may partially even be impossible to fix under all circumstances.

I'm describing the situation on the Known Issues and Workarounds page for now:
http://wiki.eclipse.org/TM_3.0_Known_Issues_and_Workarounds

In general, linking large file trees on slow connections into the Eclipse Workspace is discouraged. The RSE SystemView should be used for such slow remote resources, since it avoids unnecessary refresh and works more lazily.
Comment 4 Martin Oberhuber CLA 2008-02-18 08:17:46 EST
Here's a concrete example:

Refresh of a Linked resource to 
  dsdp.eclipse.org:/home/www-data/build/dsdp/tm/rse/downloads/drops/3.0.0
  -->  5237 folders
  --> 25890 files
over an SSH connection from Salzburg, Austria took 2 hours 20 minutes to complete (connection speed was approx 100 KB/sec with a huge scp upload running in parallel over the same connection).

The refresh operation could be "Canceled" but it could not be put into background to allow working on different parts of the project at the same time. Importing this project into a fresh workspace (or opening the first time, or opening after a Refresh had been canceled) would have blocked all of Eclipse without any chance to do anything else, and without any chance to cancel the operation.

Comment 5 Martin Oberhuber CLA 2008-02-28 12:24:37 EST
For a discussion about improving the situation from TM / RSE, see
http://dev.eclipse.org/mhonarc/lists/dsdp-tm-dev/msg01699.html ,
bug 195997, and bug 185925