質問

私は独自のEclipseプラグインを開発していますが、非常に奇妙な動作に遭遇しました。非常に特殊なケースでは、ワークベンチを閉じてもEclipseが終了しません。プロセスを強制終了するまでハングしたままです。これは、PDEを実行しているとき、および通常のインストールとして実行しているときに発生します。

詳細を提供するのは非常に難しく、非常に一般的な質問であることは知っています。それでも、私は誰かがそのような行動に遭遇し、解決策を共有できるかどうか疑問に思っていました。

ありがとう。 ズビキ

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   
役に立ちましたか?

解決

みんなお邪魔して...問題が発生しました。

私の問題は単純でした。アクションハンドラの1つがDisposeメソッドで例外をスローしました。これにより、ワークスペース全体がハングします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top