-
-
Notifications
You must be signed in to change notification settings - Fork 302
Description
In 6.4.0.202206161450-SNAPSHOT of Bndtools:
I got a StackOverflowError:
!ENTRY bndtools.core 4 0 2022-08-10 09:24:51.948
!MESSAGE Error in run listener
!STACK 0
java.lang.StackOverflowError
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4789)
at java.base/java.util.regex.Pattern$NotBehind.match(Pattern.java:5290)
at java.base/java.util.regex.Pattern$Start.match(Pattern.java:3608)
at java.base/java.util.regex.Matcher.search(Matcher.java:1728)
at java.base/java.util.regex.Matcher.find(Matcher.java:745)
at java.base/java.util.regex.Pattern.split(Pattern.java:1265)
at aQute.bnd.osgi.Macro.getMacro(Macro.java:211)
at aQute.bnd.osgi.Macro.getMacro(Macro.java:200)
at aQute.bnd.osgi.Processor.getLiteralProperty(Processor.java:1099)
at aQute.bnd.osgi.Processor.getProperty(Processor.java:1052)
at aQute.bnd.osgi.Processor.getProperty(Processor.java:1044)
at aQute.bnd.osgi.Processor.getProperty(Processor.java:1040)
at aQute.bnd.osgi.Processor.isFailOk(Processor.java:542)
at aQute.bnd.osgi.Processor.error(Processor.java:285)
at aQute.bnd.osgi.Processor.doIncludeFile(Processor.java:870)
at aQute.bnd.osgi.Processor.doIncludeFile(Processor.java:858)
at aQute.bnd.osgi.Processor.doIncludes(Processor.java:842)
at aQute.bnd.osgi.Processor.doIncludeFile(Processor.java:883)
at aQute.bnd.osgi.Processor.doIncludeFile(Processor.java:858)
at aQute.bnd.osgi.Processor.doIncludes(Processor.java:842)
at aQute.bnd.osgi.Processor.doIncludeFile(Processor.java:883)
at aQute.bnd.osgi.Processor.doIncludeFile(Processor.java:858)
at aQute.bnd.osgi.Processor.doIncludes(Processor.java:842)
...
Not exactly sure how it happened, but it was after I had manipulated a .bndrun
file. I had:
base.bndrun
- server.bndrun
- server-dev.bndrun
server.bndrun
includes base.bndrun
. server-dev.bndrun
started off life as a clone of server.bndrun
(and hence also included base.bndrun). The last change I made before the stack overflow was to change server-dev
's include statement to include server.bndrun
instead of base.bndrun
.
Eclipse recommended that I restart the Workbench, which I did. The StackOverflow happened again on restart. Instead of answering "Yes" to the "do you want to exit" question, I closed the bndrun editor. Seems to be stable now.
Possibly related: found this in the error log afterward:
java.lang.NullPointerException: Cannot invoke "aQute.bnd.build.Run.getPropertiesFile()" because "run" is null
at bndtools.m2e.MavenRunListenerHelper.getResource(MavenRunListenerHelper.java:42)
at bndtools.m2e.MavenImplicitProjectRunListener.end(MavenImplicitProjectRunListener.java:19)
at bndtools.launch.util.LaunchUtils.endRun(LaunchUtils.java:113)
at bndtools.editor.BndEditor.dispose(BndEditor.java:724)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:264)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
at org.eclipse.e4.core.internal.di.InjectorImpl.uninject(InjectorImpl.java:201)
at org.eclipse.e4.core.internal.di.Requestor.uninject(Requestor.java:177)
at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:89)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
at org.eclipse.e4.core.internal.contexts.EclipseContext.removeListenersTo(EclipseContext.java:485)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.uninject(ContextInjectionFactory.java:184)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:947)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:861)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:845)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeTopicToBeRendered(PartRenderingEngine.java:185)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:92)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:133)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424)
at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:314)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.hidePart(PartServiceImpl.java:1401)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.hidePart(PartServiceImpl.java:1331)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.closePart(StackRenderer.java:1182)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$3.close(StackRenderer.java:1042)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1961)
at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:336)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4251)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4068)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3645)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
I suspect the above NPE occured because of the StackOverflow, the workspace object failed to initialise properly, eg per this log message:
!ENTRY org.eclipse.m2e.logback.appender 4 0 2022-08-10 09:24:51.948
!MESSAGE onAnyWorkspace callback failed
!STACK 0
java.lang.Exception: Cannot load Bnd project for directory D:/workspace/idempiere-plugins/idempiere-server/server.bndrun: no Bnd workspace found
at bndtools.launch.util.LaunchUtils.createRun(LaunchUtils.java:85)
at bndtools.editor.BndEditor.loadEditModel(BndEditor.java:618)
at bndtools.editor.BndEditor.lambda$init$0(BndEditor.java:566)
at org.osgi.util.promise.DeferredPromiseImpl$ThenAccept.accept(DeferredPromiseImpl.java:433)
at org.osgi.util.promise.DeferredPromiseImpl.result(DeferredPromiseImpl.java:151)
at org.osgi.util.promise.DeferredPromiseImpl$ThenAccept.run(DeferredPromiseImpl.java:426)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)