!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin tha

本文探讨了Eclipse 3.7.2版本在启动过程中遇到的问题,具体为关闭后再次启动时出现的异常提示,并提供了详细的日志解析及解决方法。

Eclipse3.7.2 意外关闭,再次启动的时候,启动不起来了,提示如下:


于是去查看此日志文件,信息如下:

!ENTRY org.eclipse.ui.workbench 4 0 2016-01-08 10:14:13.400
!MESSAGE Widget disposed too early for part org.eclipse.ui.navigator.ProjectExplorer
!STACK 0
java.lang.RuntimeException: Widget disposed too early for part org.eclipse.ui.navigator.ProjectExplorer
    at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:171)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:123)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:808)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
    at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:773)
    at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1290)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)
    at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:447)
    at org.eclipse.swt.widgets.Shell.dispose(Shell.java:715)
    at org.eclipse.jface.window.Window.close(Window.java:335)
    at org.eclipse.jface.window.ApplicationWindow.close(ApplicationWindow.java:307)
    at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1768)
    at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
    at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
    at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:867)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:865)
    at org.eclipse.ui.internal.Workbench$70.runWithException(Workbench.java:3728)
    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:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
    at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
    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:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

!ENTRY org.eclipse.ui.workbench 4 0 2016-01-08 10:14:13.407
!MESSAGE Widget disposed too early for part org.eclipse.datatools.sqltools.sqlscrapbook.SQLScrapbookEditor
!STACK 0
java.lang.RuntimeException: Widget disposed too early for part org.eclipse.datatools.sqltools.sqlscrapbook.SQLScrapbookEditor
    at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:171)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:123)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:808)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
    at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
    at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:773)
    at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1290)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
    at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)
    at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:447)
    at org.eclipse.swt.widgets.Shell.dispose(Shell.java:715)
    at org.eclipse.jface.window.Window.close(Window.java:335)
    at org.eclipse.jface.window.ApplicationWindow.close(ApplicationWindow.java:307)
    at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1768)
    at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
    at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
    at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:867)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:865)
    at org.eclipse.ui.internal.Workbench$70.runWithException(Workbench.java:3728)
    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:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
    at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
    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:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

!ENTRY org.eclipse.osgi 4 0 2016-01-08 10:14:13.627
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles
    at org.eclipse.swt.SWT.error(SWT.java:4308)
    at org.eclipse.swt.SWT.error(SWT.java:4197)
    at org.eclipse.swt.SWT.error(SWT.java:4168)
    at org.eclipse.swt.graphics.Image.init(Image.java:1813)
    at org.eclipse.swt.graphics.Image.init(Image.java:1959)
    at org.eclipse.swt.graphics.Image.initNative(Image.java:736)
    at org.eclipse.swt.graphics.Image.<init>(Image.java:579)
    at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:162)
    at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:165)
    at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:56)
    at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:88)
    at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:192)
    at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:212)
    at org.eclipse.ui.internal.WorkbenchImages.getImage(WorkbenchImages.java:550)
    at org.eclipse.ui.internal.SharedImages.getImage(SharedImages.java:27)
    at org.eclipse.ui.internal.presentations.PresentablePart.getTitleImage(PresentablePart.java:245)
    at org.eclipse.ui.internal.presentations.util.PartInfo.set(PartInfo.java:44)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.initTab(PresentablePartFolder.java:338)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.childPropertyChanged(PresentablePartFolder.java:323)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.access$2(PresentablePartFolder.java:303)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder$3.propertyChanged(PresentablePartFolder.java:83)
    at org.eclipse.ui.internal.presentations.PresentablePart.firePropertyChange(PresentablePart.java:137)
    at org.eclipse.ui.internal.presentations.PresentablePart.enableOutputs(PresentablePart.java:373)
    at org.eclipse.ui.internal.PartStack.setActive(PartStack.java:623)
    at org.eclipse.ui.internal.PartSashContainer.setActive(PartSashContainer.java:494)
    at org.eclipse.ui.internal.PerspectiveHelper.deactivate(PerspectiveHelper.java:656)
    at org.eclipse.ui.internal.Perspective.onDeactivate(Perspective.java:1120)
    at org.eclipse.ui.internal.WorkbenchPage.onDeactivate(WorkbenchPage.java:2726)
    at org.eclipse.ui.internal.WorkbenchWindow$28.run(WorkbenchWindow.java:3016)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:3011)
    at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:882)
    at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1729)
    at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
    at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
    at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:867)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:865)
    at org.eclipse.ui.internal.Workbench$70.runWithException(Workbench.java:3728)
    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:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
    at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
    at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
    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:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

!ENTRY org.eclipse.core.jobs 2 2 2016-01-08 10:14:15.139
!MESSAGE Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.ui.internal.ide.IDEWorkbenchActivityHelper$4


解决方法如下:

删除以下文件

.metadata\.plugins\org.eclipse.ui.workbench\workbench.xml


在ROS(Robot Operating System)环境中,关闭节点或系统时出现类似`shutdown error: process send_mark-14 pid 21368 required SIGKILL still running`的错误信息,通常表明某个进程未能正常终止,系统不得不使用SIGKILL信号强制终止该进程。这种现象可能由多种原因引起,并且会对系统的稳定性与可靠性造成影响。 ### 原因分析 1. **进程未响应关闭信号** ROS节点在接收到关闭信号(如SIGINT或Ctrl+C)后,通常会尝试优雅地退出。如果节点在执行某些阻塞操作(如等待传感器数据、网络请求或死锁状态),它可能无法及时响应关闭信号,导致进程继续运行[^1]。 2. **资源竞争或死锁** 多线程或多进程环境下,若存在资源竞争或互斥锁未正确释放,可能导致节点在关闭阶段进入死锁状态,无法正常退出[^2]。 3. **节点内部逻辑问题** 如果节点代码中存在无限循环、未处理异常或未正确注册关闭钩子(shutdown hook),也可能导致其无法响应关闭命令[^3]。 4. **ROS Master通信中断** 在关闭过程中,节点需向ROS Master注销自身。如果Master已关闭而节点仍在尝试通信,可能导致节点挂起,进而无法正常退出[^4]。 5. **外部依赖服务未响应** 若节点依赖外部服务(如数据库、硬件驱动等),而这些服务在关闭时未正确响应,节点可能会卡在等待状态,从而无法退出[^5]。 ### 解决方案建议 #### 1. 检查节点代码中的关闭逻辑 确保节点在接收到关闭信号时能够正确释放资源并退出。可以使用`rospy.on_shutdown()`(针对Python节点)或`ros::shutdown()`(C++节点)来注册清理逻辑。 ```python import rospy def shutdown_callback(): rospy.loginfo("Shutting down node...") if __name__ == '__main__': rospy.init_node('example_node') rospy.on_shutdown(shutdown_callback) # 主循环或其他任务 ``` #### 2. 设置超时机制 对于可能阻塞的操作(如等待消息、服务调用等),应设置合理的超时时间,避免无限期等待。 ```cpp ros::ServiceClient client = nh.serviceClient<my_srv>("my_service"); bool success = client.waitForExistence(ros::Duration(5.0)); if (!success) { ROS_WARN("Service not available, proceeding with shutdown..."); } ``` #### 3. 使用独立监控脚本 可编写一个监控脚本,在主节点关闭后检查是否存在残留进程,并自动清理: ```bash #!/bin/bash # 获取指定节点的PID PIDS=$(rosnode info /your_node_name | grep Pid | awk '{print $2}') # 等待一段时间后检查是否仍在运行 sleep 5 for pid in $PIDS; do if ps -p $pid > /dev/null; then echo "Process $pid still running, sending SIGKILL" kill -9 $pid fi done ``` #### 4. 避免全局变量和静态资源泄漏 在C++节点中,确保所有动态分配的内存、文件句柄、套接字等资源都在关闭时正确释放,避免在析构函数中引发异常或阻塞。 #### 5. 调整ROS参数 适当调整ROS的关闭超时时间,避免过早触发SIGKILL: ```yaml # 修改launch文件中的参数 <param name="shutdown_timeout" value="10.0"/> ``` --- ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值