2009-03-06 59 views
1

我正在開發自己的Eclipse插件,並遇到了一個非常奇怪的行爲。在一些非常特殊的情況下,當我關閉工作臺時,Eclipse不會退出。它直到我殺死這個過程才停止。這在通過PDE運行時以及作爲常規安裝運行時發生。Eclipse不會退出我的插件

真的很難提供更多的細節,我知道這是一個非常普遍的問題。然而,我想知道是否有人遇到過這種行爲,並可以分享解決方案。

謝謝。 Zviki

PS。在工作臺退出後,我附加了所有正在運行的線程的堆棧跟蹤。也許會彈出一些東西。此跟蹤是通過以調試模式運行IDE,在其凍結並暫停後複製所有線程樹來實現的。

Test1 [Eclipse Application] 
org.eclipse.equinox.launcher.Main at localhost:54840 (Suspended)  
    Daemon System Thread [Finalizer] (Suspended)  
     Object.wait(long) line: not available [native method] 
     ReferenceQueue<T>.remove(long) line: 120  
     ReferenceQueue<T>.remove() line: 136  
     Finalizer$FinalizerThread.run() line: 159 
    Daemon System Thread [Reference Handler] (Suspended)  
     Object.wait(long) line: not available [native method] 
     Reference$Lock(Object).wait() line: 474 
     Reference$ReferenceHandler.run() line: 116 
    Thread [main] (Suspended) 
    Daemon System Thread [Signal Dispatcher] (Suspended)  
    Daemon Thread [Thread-0] (Suspended)  
     OS.CFRunLoopRunInMode(int, double, boolean) line: not available [native method] 
     Display.sleep() line: 3902 
     IDEWorkbenchAdvisor(WorkbenchAdvisor).eventLoopIdle(Display) line: 364 
     Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2383  
     Workbench.runUI() line: 2346  
     Workbench.access$4(Workbench) line: 2198  
     Workbench$5.run() line: 493 
     Realm.runWithDefault(Realm, Runnable) line: 288 
     Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 488  
     PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149 
     IDEApplication.start(IApplicationContext) line: 113 
     EclipseAppHandle.run(Object) line: 193 
     EclipseAppLauncher.runApplication(Object) line: 110 
     EclipseAppLauncher.start(Object) line: 79 
     EclipseStarter.run(Object) line: 386  
     EclipseStarter.run(String[], Runnable) line: 179  
     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: 585 
     Main.invokeFramework(String[], URL[]) line: 549 
     Main.basicRun(String[]) line: 504 
     Main.run(String[]) line: 1236 
     Main.main(String[]) line: 1212 
    Daemon Thread [State Data Manager] (Suspended) 
     Thread.sleep(long) line: not available [native method] 
     StateManager.run() line: 297  
     Thread.run() line: 613 
    Daemon Thread [Framework Event Dispatcher] (Suspended) 
     Object.wait(long) line: not available [native method] 
     EventManager$EventThread(Object).wait() line: 474 
     EventManager$EventThread.getNextEvent() line: 377 
     EventManager$EventThread.run() line: 317  
    Daemon Thread [Start Level Event Dispatcher] (Suspended)  
     Object.wait(long) line: not available [native method] 
     EventManager$EventThread(Object).wait() line: 474 
     EventManager$EventThread.getNextEvent() line: 377 
     EventManager$EventThread.run() line: 317  
    Thread [Worker-0] (Suspended) 
     Object.wait(long) line: not available [native method] 
     WorkerPool.sleep(long) line: 185  
     WorkerPool.startJob(Worker) line: 217 
     Worker.run() line: 51 
    Daemon Thread [Java indexing] (Suspended) 
     Object.wait(long) line: not available [native method] 
     IndexManager(Object).wait() line: 474 
     IndexManager(JobManager).run() line: 371  
     Thread.run() line: 613 
    Thread [Worker-1] (Suspended) 
     Object.wait(long) line: not available [native method] 
     WorkerPool.sleep(long) line: 185  
     WorkerPool.startJob(Worker) line: 217 
     Worker.run() line: 51 
    Thread [Worker-2] (Suspended) 
     Object.wait(long) line: not available [native method] 
     WorkerPool.sleep(long) line: 185  
     WorkerPool.startJob(Worker) line: 217 
     Worker.run() line: 51 

回答

2

抱歉打擾大家......出了問題。

我的問題很簡單:我的一個Action Handlers在Dispose方法中拋出異常。這會導致整個工作區掛起。

+0

你是怎麼知道的?記錄在某處的異常? – chris 2014-09-24 08:12:03