| Summary: | UI blocked selecting in package explorer | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Nick Edgar <n.a.edgar> | ||||||
| Component: | UI | Assignee: | JDT-UI-Inbox <jdt-ui-inbox> | ||||||
| Status: | RESOLVED DUPLICATE | QA Contact: | |||||||
| Severity: | critical | ||||||||
| Priority: | P3 | CC: | eclipse, erich_gamma, jean-michel_lemieux, john.arthorne, Mike_Wilson, philippe_mulet | ||||||
| Version: | 3.0 | ||||||||
| Target Milestone: | --- | ||||||||
| Hardware: | PC | ||||||||
| OS: | Windows 2000 | ||||||||
| Whiteboard: | |||||||||
| Attachments: |
|
||||||||
Not sure why it was computing sync state. The sync view was not frontmost. This bug is comparable to bug 52474. The problem is that as soon as you start working in the package explorer we access the Java model which initialize the JRE Container which does changes to the classpath. The Java Model needs the workspace look to do so (see bug 52474/Comment 22). We can start looking at all our action to not access the Java model in selection change events. But this would lead to always enabled actions. Addionally this wouldn't help much. As soon as you open a node you will be faced with the same situation. Can someone from the Team team please comment on why the sync state is computed in this situation. Changed title to UI blocked selecting in package explorer since this isn't a deadlock. Philippe, can you comment on why project.exists initializes the JRE Container ? The project uses the default exist implementation in our model which attempts to populate and answers false if unable to do so. We will investigate making it a bit smarter, but this isn't a regression, rather the way it used to be since ever (i.e. this is not was causes this new blocking situation...). Entered bug 56316 for project existency check. This isn't a regression and may have subtle ramifications. Thus I'd rather not make this for M8, as it is too late in the game. We shouldn't make this for M8. In addition, this doesn't solve the full problem, as soon as the user expands the project the class paths needs to be resolved. The caching proposal from John A in bug 52474 would address this one, but this is definitly not for M8 When the synchronize view is shown at startup we have a job that calculates the outgoing changes in your workspace. It doesn't lock any resources though, so I would be curious about why it blocked a foreground operations. It is quite possible that a scheduled synchronize as running as well. We have an existing bug 48827 that will be resolved in M9 that deals with initialization of the synchronize view. The blockage here is essentially a dup of bug 52474. What disturbs me about this stack is that there are three asyncExecs being processed in the main thread simultaneously, since we spin the event loop to keep the UI painting when the UI thread is blocked. If another async comes in that tries to acquire a lock, then we become reentrant (in this case the Java classpath computation is re-entered). This reentrant issue has also been reported already (bug 51996), but I don't know what the solution is (other than avoiding the acquisition of locks from inside asyncExecs). I think this recursion is the cause of the "apparent deadlock" that Nick observes. When the lock gets released by the background thread, the acquire at the bottom of the stack is granted the lock, but the the acquire at the top of the stack is still blocked. Explict user cancelation of the UI thread blockage is required to bring it back to life. I think this bug can be closed as a dup (take your pick of bug 52474 or bug 51996). Re comment #9, note that the Sync view had not yet been activated. It was in a tab folder with other views, and was not the selected one, so it should not have been instantiated. Re comment #4, It appeared to be a deadlock since the progress dialog was not going away, and CPU was at 0%. Re comment #10. I tried canceling all jobs, but the UI job kept coming back. I just had this happen in M8, and I experienced the same symptoms as Nick where attempting to cancel the blocked UI operation caused the block dialog to keep coming back. The answer to the puzzle was in the log file. JRE container initialization happens inside an ISafeRunnable to protected JDT core from errors in the container initializer. When the user attempts to cancel the blocked operation in the UI thread, it throws OperationCanceledException. This propagates down to the safe runnable, which logs and swallows it. JDT just treats this as an error on the part of that one container initializer, so it keeps trying to initialize other containers. The short summary is that the user will get a "block UI" dialog for each JRE container in their workspace, for each JDT core operation that attempts to initialize the variables. The result is a "blocked" dialog that is essentially impossible to get rid of. Would it be reasonable for JDT core to just propogate this OperationCanceledException (simpy rethrow it from the ISafeRunnable exception handler). This would be the only way to truly unwind the entire stack in the UI thread and get back to the event loop. Here is a sample from my log file (one per click on the cancel button): !ENTRY org.eclipse.jdt.core 4 4 Mar 30, 2004 09:52:51.309 !MESSAGE Exception occurred in classpath container initializer: org.eclipse.jdt.internal.launching.JREContainerInitializer@23e023e0 !STACK 0 org.eclipse.core.runtime.OperationCanceledException at java.lang.Throwable.<init>(Throwable.java) at org.eclipse.core.runtime.OperationCanceledException.<init>(OperationCanceledException.java:22) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:109) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) .... this block repeats several times ... at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.internal.core.search.JavaSearchScope.add(JavaSearchScope.java:78) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.initialize(JavaWorkspaceScope.java:79) at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:52) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.<init>(JavaWorkspaceScope.java:30) at org.eclipse.jdt.core.search.SearchEngine.createWorkspaceScope(SearchEngine.java:430) at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.run(OpenTypeAction.java:54) at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.run(OpenTypeAction.java:80) Created attachment 9019 [details]
Log file
Created attachment 9020 [details]
Dump of hung threads
Philippe, has JDT/Core implemented John's sugestion from comment #14 No, we didn't notice this suggestion which look valid. We should always let cancellation propagate through. Entered bug 59363 for JDTCore counterpart. Closing as dup since the JDT counterpart is fixed. *** This bug has been marked as a duplicate of 52474 *** |
build I20040325-2030 - shortly after startup, I clicked in the package explorer to select the JFace project - got a progress dialog indicating that it was computing sync state, and that a UI operation was blocked - this seemed deadlocked (no CPU, did not come back) - canceled the sync job - canceled the UI operation - the UI operation came back - Ctrl+Break shows: Full thread dump Java HotSpot(TM) Client VM (1.4.2_01-b06 mixed mode): "Worker-4" prio=5 tid=0x21139008 nid=0x618 in Object.wait() [225cf000..225cfd90] at java.lang.Object.wait(Native Method) - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184) - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "All Types Caching" prio=4 tid=0x213a4e90 nid=0x72c in Object.wait() [2258f000..2258fd90] at java.lang.Object.wait(Native Method) - waiting on <0x12c8e030> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:118) - locked <0x12c8e030> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:147) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:698) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.internal.core.search.JavaSearchScope.add(JavaSearchScope.java:78) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.initialize(JavaWorkspaceScope.java:79) at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:52) at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.<init>(JavaWorkspaceScope.java:30) at org.eclipse.jdt.core.search.SearchEngine.createWorkspaceScope(SearchEngine.java:430) at org.eclipse.jdt.internal.corext.util.AllTypesCache.search(AllTypesCache.java:502) at org.eclipse.jdt.internal.corext.util.AllTypesCache$TypeCacher.doSearchTypes(AllTypesCache.java:180) at org.eclipse.jdt.internal.corext.util.AllTypesCache$TypeCacher.run(AllTypesCache.java:149) "Worker-3" prio=5 tid=0x21358010 nid=0x90c in Object.wait() [223ff000..223ffd90] at java.lang.Object.wait(Native Method) - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184) - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-2" prio=5 tid=0x21319048 nid=0x874 in Object.wait() [223bf000..223bfd90] at java.lang.Object.wait(Native Method) - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184) - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-1" prio=5 tid=0x21053d08 nid=0x510 in Object.wait() [2237f000..2237fd90] at java.lang.Object.wait(Native Method) - waiting on <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:184) - locked <0x1116b060> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:210) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Java indexing" daemon prio=4 tid=0x20fc3008 nid=0x9b4 in Object.wait() [2220f000..2220fd90] at java.lang.Object.wait(Native Method) - waiting on <0x11a57790> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:327) - locked <0x11a57790> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:534) "Start Level Event Dispatcher" daemon prio=5 tid=0x21029440 nid=0x89c in Object.wait() [2124f000..2124fd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f93da8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at java.lang.Object.wait(Object.java:429) at org.eclipse.osgi.framework.eventmgr.EventThread.getNextEvent(EventThread.java:167) - locked <0x10f93da8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:118) "Framework Event Dispatcher" daemon prio=5 tid=0x009b13a0 nid=0x554 in Object.wait() [2120f000..2120fd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f93df8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at java.lang.Object.wait(Object.java:429) at org.eclipse.osgi.framework.eventmgr.EventThread.getNextEvent(EventThread.java:167) - locked <0x10f93df8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:118) "Signal Dispatcher" daemon prio=10 tid=0x00970e90 nid=0x994 waiting on condition [0..0] "YJP CPU Sampler" daemon prio=5 tid=0x0023fdb0 nid=0x85c runnable [0..0] "YJP RequestServer" daemon prio=5 tid=0x00970c18 nid=0x910 runnable [20e6f000..20e6fd90] at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353) - locked <0x10f93fa0> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at com.yourkit.runtime.RequestServer.startServerImpl(RequestServer.java:180) at com.yourkit.runtime.RequestServer.access$000(RequestServer.java:18) at com.yourkit.runtime.RequestServer$1.run(RequestServer.java:56) "Finalizer" daemon prio=9 tid=0x0091e1e8 nid=0x838 in Object.wait() [209ef000..209efd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f940b8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10f940b8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x0091ce38 nid=0x400 in Object.wait() [209af000..209afd90] at java.lang.Object.wait(Native Method) - waiting on <0x10f94120> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x10f94120> (a java.lang.ref.Reference$Lock) "main" prio=7 tid=0x00234dc0 nid=0x22c in Object.wait() [6c000..6fc3c] at java.lang.Object.wait(Native Method) - waiting on <0x10650748> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:118) - locked <0x10650748> (a org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.computeExpandedClasspath(JavaProject.java:350) at org.eclipse.jdt.internal.core.JavaProject.computeExpandedClasspath(JavaProject.java:367) at org.eclipse.jdt.internal.core.JavaProject.getExpandedClasspath(JavaProject.java:1315) at org.eclipse.jdt.internal.core.JavaProject.getExpandedClasspath(JavaProject.java:1294) at org.eclipse.jdt.internal.core.PackageFragmentRoot.determineKind(PackageFragmentRoot.java:302) at org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:172) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:169) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:543) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:280) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:266) at org.eclipse.jdt.internal.core.PackageFragmentRoot.getKind(PackageFragmentRoot.java:504) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.hasSourceFolders(OrganizeImportsAction.java:254) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.isEnabled(OrganizeImportsAction.java:237) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.selectionChanged(OrganizeImportsAction.java:150) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:200) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:195) at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:159) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:157) at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:1310) at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:666) at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:690) at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:178) at org.eclipse.jface.util.OpenStrategy.access$3(OpenStrategy.java:173) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2578) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2256) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop(EventLoopProgressMonitor.java:114) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.isCanceled(EventLoopProgressMonitor.java:94) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.isCanceled(ImplicitJobs.java:137) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:106) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:261) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:169) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:543) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:280) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:266) at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:137) at org.eclipse.jdt.internal.core.JavaProject.exists(JavaProject.java:894) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyToClipboar d(CopyToClipboardAction.java:328) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyAllToClipb oard(CopyToClipboardAction.java:322) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canEnable(CopyToC lipboardAction.java:310) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.canEnable(CopyToClipboardAction.java:140) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.selectionChanged(CopyToClipboardAction.java:105) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:200) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:195) at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:159) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:157) at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:1310) at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:666) at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:690) at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:178) at org.eclipse.jface.util.OpenStrategy.access$3(OpenStrategy.java:173) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2578) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2256) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop(EventLoopProgressMonitor.java:114) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.isCanceled(EventLoopProgressMonitor.java:94) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.isCanceled(ImplicitJobs.java:137) at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.joinRun(ImplicitJobs.java:106) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:265) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:88) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1521) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2584) at org.eclipse.jdt.core.JavaCore$5.run(JavaCore.java:3339) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3316) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:147) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:698) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3196) at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3325) at org.eclipse.pde.internal.core.ModelEntry.updateClasspathContainer(ModelEntry.java:107) at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:40) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1176) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1171) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1841) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1764) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1736) at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:261) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:169) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:543) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:280) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:266) at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:137) at org.eclipse.jdt.internal.core.JavaProject.exists(JavaProject.java:894) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyToClipboar d(CopyToClipboardAction.java:328) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyAllToClipb oard(CopyToClipboardAction.java:322) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canEnable(CopyToC lipboardAction.java:310) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.canEnable(CopyToClipboardAction.java:140) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.selectionChanged(CopyToClipboardAction.java:105) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:200) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:195) at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:159) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:610) at org.eclipse.core.runtime.Platform.run(Platform.java:521) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:157) at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:1310) at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:666) at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:690) at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:178) at org.eclipse.jface.util.OpenStrategy.access$3(OpenStrategy.java:173) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2578) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2256) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1562) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1536) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:257) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:90) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:277) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:239) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:117) 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:316) at org.eclipse.core.launcher.Main.run(Main.java:741) at org.eclipse.core.launcher.Main.main(Main.java:725) "VM Thread" prio=5 tid=0x0095cd38 nid=0x830 runnable "VM Periodic Task Thread" prio=10 tid=0x0095e880 nid=0x8f0 waiting on condition "Suspend Checker Thread" prio=10 tid=0x00970d80 nid=0x4e4 runnable