| Summary: | Eclipse froze when expanding node in Variables view | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Dirk Baeumer <dirk_baeumer> | ||||||||
| Component: | Debug | Assignee: | Luc Bourlier <eclipse> | ||||||||
| Status: | VERIFIED FIXED | QA Contact: | |||||||||
| Severity: | normal | ||||||||||
| Priority: | P3 | CC: | darin.eclipse, eclipse | ||||||||
| Version: | 3.1 | ||||||||||
| Target Milestone: | 3.1 M3 | ||||||||||
| Hardware: | PC | ||||||||||
| OS: | Windows XP | ||||||||||
| Whiteboard: | |||||||||||
| Attachments: |
|
||||||||||
Do you have a way to reproduce this. It looks like an evaluation to produce a 'toString()' in the details area and an evaluation to produce the logical structure are running. The logical structure evaluations is waiting for its evaluation to finish which is blocking the UI thread. I'm not sure it is a deadlock, or just a temporary "block". Unfortunatelly no steps to reproduce. I killed Eclipse and restarted it and could happly debug and inspect the code then. From the thread dump, it looks like the logical structure computation was simply not complete. Blocking the UI thread should be avoided with background content generation. *** This bug has been marked as a duplicate of 44724 *** And then... it happenned to me... Stack of relevant threads: Thread [main] (Suspended) Object.wait(long) line: not available [native method] CollectionStructureType(Object).wait() line: 429 CollectionStructureType (LogicalObjectStructureInterfaceType).getLogicalStructure(IValue) line: 132 LogicalStructureType.getLogicalStructure(IValue) line: 91 VariablesViewContentProvider.getLogicalValue(IValue) line: 222 VariablesViewContentProvider.getValueChildren(IDebugElement, IValue) line: 124 VariablesViewContentProvider.getModelSpecificChildren(IDebugElement, IValue) line: 109 VariablesViewContentProvider.getChildren(Object) line: 89 VariablesViewer(AbstractTreeViewer).getRawChildren(Object) line: 738 VariablesViewer(StructuredViewer).getFilteredChildren(Object) line: 663 VariablesViewer(StructuredViewer).getSortedChildren(Object) line: 778 VariablesViewer(AbstractTreeViewer).updateChildren(Widget, Object, Object[], boolean) line: 1504 VariablesViewer(AbstractTreeViewer).internalRefreshStruct(Widget, Object, boolean) line: 1081 VariablesViewer(AbstractTreeViewer).internalRefreshStruct(Widget, Object, boolean) line: 1088 VariablesViewer(AbstractTreeViewer).internalRefreshStruct(Widget, Object, boolean) line: 1088 VariablesViewer(AbstractTreeViewer).internalRefresh(Widget, Object, boolean, boolean) line: 1058 VariablesViewer(AbstractTreeViewer).internalRefresh(Object, boolean) line: 1023 VariablesViewer(AbstractTreeViewer).internalRefresh(Object) line: 1010 StructuredViewer$7.run() line: 1127 VariablesViewer(StructuredViewer).preservingSelection(Runnable) line: 1064 VariablesViewer(StructuredViewer).refresh(Object) line: 1125 VariablesViewer(StructuredViewer).refresh() line: 1084 VariablesViewer.refresh() line: 69 VariablesViewEventHandler(AbstractDebugEventHandler).refresh() line: 146 VariablesViewEventHandler.doHandleChangeEvent(DebugEvent) line: 116 VariablesViewEventHandler.doHandleDebugEvents(DebugEvent[]) line: 46 AbstractDebugEventHandler$1.run() line: 70 RunnableLock.run() line: 35 UISynchronizer(Synchronizer).runAsyncMessages() line: 108 Display.runAsyncMessages() line: 2761 Display.readAndDispatch() line: 2446 Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 1443 Workbench.runUI() line: 1414 Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 271 PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 144 IDEApplication.run(Object) line: 102 PlatformActivator$1.run(Object) line: 335 EclipseStarter.run(Object) line: 273 EclipseStarter.run(String[], Runnable) line: 129 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object[]) line: 324 Main.basicRun(String[]) line: 185 Main.run(String[]) line: 684 Main.main(String[]) line: 668 Thread [Worker-13] (Suspended) Object.wait(long) line: not available [native method] PacketReceiveManager.waitForPacketAvailable(long) line: 170 PacketReceiveManager.getReply(int, long) line: 136 PacketReceiveManager.getReply(JdwpCommandPacket) line: 158 ObjectReferenceImpl(MirrorImpl).requestVM(int, byte[]) line: 173 ObjectReferenceImpl(MirrorImpl).requestVM(int, ByteArrayOutputStream) line: 191 ObjectReferenceImpl.invokeMethod(ThreadReference, Method, List, int) line: 344 JDIThread.invokeMethod(ClassType, ObjectReference, Method, List, boolean) line: 810 JDIObjectValue.sendMessage(String, String, IJavaValue[], IJavaThread, boolean) line: 79 CollectionStructureType$1.run(IJavaThread, IProgressMonitor) line: 32 JDIThread.runEvaluation(IEvaluationRunnable, IProgressMonitor, int, boolean) line: 659 LogicalObjectStructureInterfaceType$1.run() line: 119 JDIThread$ThreadJob.run(IProgressMonitor) line: 2511 Worker.run() line: 66 Thread [Worker-8] (Suspended) Object.wait(long) line: not available [native method] PacketReceiveManager.waitForPacketAvailable(long) line: 170 PacketReceiveManager.getReply(int, long) line: 136 PacketReceiveManager.getReply(JdwpCommandPacket) line: 158 ThreadReferenceImpl(MirrorImpl).requestVM(int, byte[]) line: 173 ThreadReferenceImpl(MirrorImpl).requestVM(int, ByteArrayOutputStream) line: 191 ThreadReferenceImpl(MirrorImpl).requestVM(int, ObjectReferenceImpl) line: 206 ThreadReferenceImpl.ownedMonitors() line: 296 JDIThread.getOwnedMonitors() line: 2415 JavaMonitorThread.update() line: 164 JavaMonitorThread.refresh() line: 249 ThreadMonitorManager$RefreshAndDetectDeadlock.run() line: 165 DebugPlugin$AsynchJob.run(IProgressMonitor) line: 876 Worker.run() line: 66 Thread [org.eclipse.jdt.debug: JDI Event Dispatcher] (Suspended) Object.wait(long) line: not available [native method] PacketReceiveManager(Object).wait() line: 429 PacketReceiveManager.waitForPacketAvailable(long) line: 168 PacketReceiveManager.getCommand(int, long) line: 93 EventQueueImpl(MirrorImpl).getCommandVM(int, long) line: 276 EventQueueImpl.remove(long) line: 63 EventQueueImpl.remove() line: 48 EventDispatcher.run() line: 213 Thread.run() line: 534 The problem I am seeing seems related to the "new" monitor information in the debug view. If I turn off the monitor info, the hang does not ocurr. However, when we ask for monitor info and a method invocation at the same time, neither request seems to return. Created attachment 15148 [details]
serializes monitor information retrieval
Created attachment 15149 [details]
concurrent modification exception
I found that we had an infinite loop and concurrent modification exceptions
when I ran with my jdt-debug-ui patch. This fixes that problem.
Luc, please see if you agree with these patches. The test case to see problems
is:
(1) Breakpoint on line 28 of VectorTests
(2) Turn on logical structures
(3) Turn on Monitor information
(4) Debug to breakpoint
(5) expand fFull to see logical strucuture
> Boom
With these patches, the following problem still occurrs: the logical structures never catch up (i.e. never update, always show "...") since the monitor manager is continually refreshing and firing a change event. The variables view continually updates. If I then try to turn off the monitor into via the drop down in the debug view, Eclipse hangs. Created attachment 15153 [details] JDIThread-20041013.patch I prefer this patch instead of the one from comment 8, for the current modification problem. It's what it was supposed to be, but the synchronized block was missing. I don't see the infinite loop in the current code. humm ... I think we should move this in an other bug report, the original problem had nothing to do with the thread and monitor support. Anyway, I cannot reproduce the problem with the test case. But I suppose it depends of the order of the listener, and other things like that ... It currently refreshes for any resume or suspend event, we could filter out the evaluation events. There was a few errors in the code to determine if there was change in the thread and monitor model (bug 76220), it was sending too many debug change events. I fixed it. I noticed the variables view totaly refresh for any debug change events. Is there any reason for that, couldn't we filter the events the view really cares about ? Sorry, I did not explain the similarity well. I found that a concurrent
modification exception was being caught in JDIThread.ThreadJob.run(...), which
made for an infinite loop. The call to iter.next() caused a concurrent
modification exception, which we caught, and then looped for ever:
for (Iterator iter= runnables.iterator(); iter.hasNext() && !
fJDIThread.isTerminated() && !monitor.isCanceled();) {
try {
((Runnable) iter.next()).run();
} catch (Exception e) {
if (failed == null) {
failed = new MultiStatus
(JDIDebugPlugin.getUniqueIdentifier(), JDIDebugPlugin.INTERNAL_ERROR,
JDIDebugModelMessages.getString("JDIThread.0"), null); //$NON-NLS-1$
}
failed.add(new Status(IStatus.ERROR,
JDIDebugPlugin.getUniqueIdentifier(), JDIDebugPlugin.INTERNAL_ERROR,
JDIDebugModelMessages.getString("JDIThread.0"), e)); //$NON-NLS-1$
}
monitor.worked(1);
}
I don't know why the exception occurred yet (looking at the code, it appears
safe), but changing the code to copy the runnables into an array that I loop
thru, rather than using an iterator made things happy. See my patch to
JDIThread.
With the fix to bug 76220, I can no longer reproduce the infinite loop/update problem. However, I did see a potential cause for the concurrent modification exception - when executing the runnables in JDIThread.ThreadJob, we synchronize on fRunnables to copy the runnables to evaluate, but we did not synchronize on fRunnables when adding a new runnable to the queue. I have released this fix to JDIThread. So, this bug simply deals with the blocked thread retreiving the logical structure for an element, which now appears to be fixed with proper synchronization on evaluating runnables (which before could get into an infinite loop when there was a concurrent modification exception). The problem of using the UI thread to compute logical strucutres will be dealt with in bug 44724. Please verify my changes to JDIThread. Modified my fix. The synchronization was still flawed because we change the underlying object being synch'd on. Instead, I keep the same vector of runnables and clear it. The code the exeuctues the runnables copies the contents to an array, and then clears the runnables from the vector (which is synchronized with additions to the vector). Verified. |
I expanded an array list node in the variables view and Eclipse completely froze. ============================= VM dump ========================================= Full thread dump Java HotSpot(TM) Client VM (1.4.2-b28 mixed mode): "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x046fe3a0 nid=0xa8c in Object.wait() [41df000..41dfd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:176) - locked <0x10ae72a0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Packet Send Manager" prio=5 tid=0x049bfbd0 nid=0x848 in Object.wait() [67ef000..67efd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdi.internal.connect.PacketSendManager.sendAvailablePackets (PacketSendManager.java:94) - locked <0x18ee7728> (a org.eclipse.jdi.internal.connect.PacketSendManager) at org.eclipse.jdi.internal.connect.PacketSendManager.run (PacketSendManager.java:54) at java.lang.Thread.run(Thread.java:534) "Packet Receive Manager" prio=5 tid=0x046d12b0 nid=0xf9c runnable [676f000..676fd94] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.net.SocketInputStream.read(SocketInputStream.java:182) at java.io.DataInputStream.readInt(DataInputStream.java:443) at org.eclipse.jdi.internal.jdwp.JdwpPacket.read(JdwpPacket.java:125) at org.eclipse.jdi.internal.connect.PacketReceiveManager.readAvailablePacket (PacketReceiveManager.java:224) at org.eclipse.jdi.internal.connect.PacketReceiveManager.run (PacketReceiveManager.java:70) at java.lang.Thread.run(Thread.java:534) "ServerConnection" prio=7 tid=0x04a1f938 nid=0xabc runnable [66ef000..66efd94] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:408) at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:450) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182) - locked <0x18eed888> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(InputStreamReader.java:167) at java.io.BufferedReader.fill(BufferedReader.java:136) at java.io.BufferedReader.readLine(BufferedReader.java:299) - locked <0x18eed888> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(BufferedReader.java:362) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient.readMessage (RemoteTestRunnerClient.java:321) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient.access$29 (RemoteTestRunnerClient.java:320) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient$ServerConnection.run (RemoteTestRunnerClient.java:250) "Console Polling Thread" prio=7 tid=0x04b77ea8 nid=0x82c waiting on condition [666f000..666fd94] at java.lang.Thread.sleep(Native Method) at org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner.pollAndS leep(ConsoleDocumentPartitioner.java:5 64) at org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner$1.run (ConsoleDocumentPartitioner.java:548) at java.lang.Thread.run(Thread.java:534) "Input Stream Monitor" prio=5 tid=0x04910730 nid=0xe18 in Object.wait() [65ef000..65efd94] at java.lang.Object.wait(Native Method) - waiting on <0x18eeda28> (a java.lang.Object) at java.lang.Object.wait(Object.java:429) at org.eclipse.debug.internal.core.InputStreamMonitor.writeNext (InputStreamMonitor.java:124) - locked <0x18eeda28> (a java.lang.Object) at org.eclipse.debug.internal.core.InputStreamMonitor.write (InputStreamMonitor.java:99) at org.eclipse.debug.internal.core.InputStreamMonitor$1.run (InputStreamMonitor.java:75) at java.lang.Thread.run(Thread.java:534) "Output Stream Monitor" prio=5 tid=0x04884050 nid=0xc34 runnable [65af000..65afd94] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:177) at org.eclipse.debug.internal.core.OutputStreamMonitor.read (OutputStreamMonitor.java:132) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1 (OutputStreamMonitor.java:124) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run (OutputStreamMonitor.java:177) at java.lang.Thread.run(Thread.java:534) "Output Stream Monitor" prio=5 tid=0x04880818 nid=0xf54 runnable [54ef000..54efd94] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:194) at java.io.BufferedInputStream.read1(BufferedInputStream.java:220) at java.io.BufferedInputStream.read(BufferedInputStream.java:277) - locked <0x18ef1b78> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(FilterInputStream.java:90) at org.eclipse.debug.internal.core.OutputStreamMonitor.read (OutputStreamMonitor.java:132) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1 (OutputStreamMonitor.java:124) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run (OutputStreamMonitor.java:177) at java.lang.Thread.run(Thread.java:534) "Worker-181" prio=5 tid=0x048fbbb0 nid=0x824 in Object.wait() [445f000..445fd94] at java.lang.Object.wait(Native Method) at org.eclipse.jdi.internal.connect.PacketReceiveManager.waitForPacketAvailable (PacketReceiveManager.java:170) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply (PacketReceiveManager.java:136) - locked <0x18ee7580> (a org.eclipse.jdi.internal.connect.PacketReceiveManager) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply (PacketReceiveManager.java:158) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:173) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:191) at org.eclipse.jdi.internal.ObjectReferenceImpl.invokeMethod (ObjectReferenceImpl.java:344) at org.eclipse.jdt.internal.debug.core.model.JDIThread.invokeMethod (JDIThread.java:810) at org.eclipse.jdt.internal.debug.core.model.JDIObjectValue.sendMessage (JDIObjectValue.java:77) at org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager$EvaluationListene r.appendObjectDetail(JavaDetailFormatt ersManager.java:581) at org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager$1.run (JavaDetailFormattersManager.java:462) at org.eclipse.jdt.internal.debug.core.model.JDIThread.runEvaluation (JDIThread.java:659) at org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager$EvaluationListene r.valueToString(JavaDetailFormattersMa nager.java:469) at org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager.resolveFormatter (JavaDetailFormattersManager.java:169) at org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager.access$0 (JavaDetailFormattersManager.java:145) at org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager$4.run (JavaDetailFormattersManager.java:133) at org.eclipse.jdt.internal.debug.core.model.JDIThread$ThreadJob.run (JDIThread.java:2511) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) "Worker-176" prio=5 tid=0x049b85f0 nid=0x490 in Object.wait() [40ef000..40efd94] at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:166) - locked <0x111c10b0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob (WorkerPool.java:193) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:59) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x049b8b50 nid=0x4fc in Object.wait() [53ef000..53efd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:176) - locked <0x16c43120> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Worker-173" prio=5 tid=0x04a12a18 nid=0x118 runnable [441f000..441fd94] at java.lang.Win32Process.waitFor(Native Method) at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorJob.run (RuntimeProcess.java:362) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x048eecd8 nid=0xccc in Object.wait() [45af000..45afd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:176) - locked <0x163d3bf0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x03b72e00 nid=0xa34 in Object.wait() [662f000..662fd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:176) - locked <0x15e17450> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=5 tid=0x048c7288 nid=0xd50 in Object.wait() [66af000..66afd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:176) - locked <0x15d4b800> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Java indexing" daemon prio=4 tid=0x03c755c8 nid=0xed4 in Object.wait() [429f000..429fd94] at java.lang.Object.wait(Native Method) - waiting on <0x12209af0> (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:338) - locked <0x12209af0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:534) "Reference Cleaner - 2" prio=7 tid=0x02e26d00 nid=0x1bc in Object.wait() [3f9f000..3f9fd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x11929720> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at org.eclipse.jface.action.ActionContributionItem$ImageCache$ReferenceCleanerThre ad.run(ActionContributionItem.java:216 ) "Reference Cleaner - 1" prio=7 tid=0x02dc8920 nid=0x454 in Object.wait() [3f5f000..3f5fd94] at java.lang.Object.wait(Native Method) - waiting on <0x11929790> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x11929790> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at org.eclipse.jface.action.ActionContributionItem$ImageCache$ReferenceCleanerThre ad.run(ActionContributionItem.java:216 ) "Start Level Event Dispatcher" daemon prio=5 tid=0x02e72558 nid=0xa58 in Object.wait() [2f9f000..2f9fd94] at java.lang.Object.wait(Native Method) - waiting on <0x10fc3fd8> (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:162) - locked <0x10fc3fd8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run (EventThread.java:100) "Framework Event Dispatcher" daemon prio=5 tid=0x02e72908 nid=0xfac in Object.wait() [2f5f000..2f5fd94] at java.lang.Object.wait(Native Method) - waiting on <0x10fc4120> (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:162) - locked <0x10fc4120> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run (EventThread.java:100) "Signal Dispatcher" daemon prio=10 tid=0x0003dc80 nid=0x598 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x009c08d8 nid=0xec4 in Object.wait() [2c1f000..2c1fd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10f977b0> (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=0x009bf4a8 nid=0x9cc in Object.wait() [2bdf000..2bdfd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x10f97648> (a java.lang.ref.Reference$Lock) "main" prio=5 tid=0x00035a18 nid=0x138 in Object.wait() [7e000..7fc3c] at java.lang.Object.wait(Native Method) - waiting on <0x148cd8a0> (a org.eclipse.jdt.internal.debug.core.logicalstructures.CollectionStructureType) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdt.internal.debug.core.logicalstructures.LogicalObjectStructureInt erfaceType.getLogicalStructure(Logical ObjectStructureInterfaceType.java:132) - locked <0x148cd8a0> (a org.eclipse.jdt.internal.debug.core.logicalstructures.CollectionStructureType) - locked <0x148cd8a0> (a org.eclipse.jdt.internal.debug.core.logicalstructures.CollectionStructureType) at org.eclipse.debug.internal.core.LogicalStructureType.getLogicalStructure (LogicalStructureType.java:91) at org.eclipse.debug.internal.ui.views.variables.VariablesViewContentProvider.getL ogicalValue(VariablesViewContentProvid er.java:222) at org.eclipse.debug.internal.ui.views.variables.VariablesViewContentProvider.getV alueChildren(VariablesViewContentProvi der.java:124) at org.eclipse.debug.internal.ui.views.variables.VariablesViewContentProvider.getM odelSpecificChildren(VariablesViewCont entProvider.java:109) at org.eclipse.debug.internal.ui.views.variables.VariablesViewContentProvider.getC hildren(VariablesViewContentProvider.j ava:89) at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren (AbstractTreeViewer.java:748) at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren (StructuredViewer.java:497) at org.eclipse.jface.viewers.StructuredViewer.getSortedChildren (StructuredViewer.java:612) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run (AbstractTreeViewer.java:379) at org.eclipse.swt.custom.BusyIndicator.showWhile (BusyIndicator.java:69) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren (AbstractTreeViewer.java:361) at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand (AbstractTreeViewer.java:797) at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded (AbstractTreeViewer.java:808) at org.eclipse.swt.widgets.TypedListener.handleEvent (TypedListener.java:179) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:805) at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:2074) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:4002) at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:722) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3019) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3338) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1391) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:170) at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:1668) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3001) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3338) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1467) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2429) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1435) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1406) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench.java:263) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run (IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run (PlatformActivator.java:335) at org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:129) 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:183) at org.eclipse.core.launcher.Main.run(Main.java:644) at org.eclipse.core.launcher.Main.main(Main.java:628) "VM Thread" prio=5 tid=0x009fb720 nid=0xb58 runnable "VM Periodic Task Thread" prio=10 tid=0x009fc4a0 nid=0x708 waiting on condition "Suspend Checker Thread" prio=10 tid=0x0003d338 nid=0xd5c runnable