Bug 570704

Summary: Resource Leak caused by BreakpointImageProvider
Product: [Eclipse Project] Platform Reporter: Matthias Becker <ma.becker>
Component: UIAssignee: Platform-UI-Inbox <Platform-UI-Inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3 CC: github, kashihara, sarika.sinha, sebastian.ratz, wim.jongman
Version: 4.18   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Matthias Becker CLA 2021-01-28 01:28:07 EST
When running our Product "ABAP Development Tools" I found a resource leak with the below stack:

java.lang.Error: SWT Resource was not properly disposed
	at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172)
	at org.eclipse.swt.graphics.Resource.<init>(Resource.java:120)
	at org.eclipse.swt.graphics.Image.<init>(Image.java:771)
	at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:274)
	at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:287)
	at com.sap.adt.debugger.ui.internal.AbapDebuggerUIActivator.getCachedImage(AbapDebuggerUIActivator.java:300)
	at com.sap.adt.debugger.ui.internal.AbapDebugModelPresentation.getBreakpointImage(AbapDebugModelPresentation.java:732)
	at com.sap.adt.debugger.ui.internal.AbapDebugModelPresentation.getImage(AbapDebugModelPresentation.java:624)
	at org.eclipse.debug.internal.ui.LazyModelPresentation.getImage(LazyModelPresentation.java:129)
	at org.eclipse.debug.internal.ui.DelegatingModelPresentation.getImage(DelegatingModelPresentation.java:138)
	at org.eclipse.debug.internal.ui.BreakpointImageProvider.getManagedImage(BreakpointImageProvider.java:37)
	at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.getImage(DefaultMarkerAnnotationAccess.java:374)
	at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.isPaintable(DefaultMarkerAnnotationAccess.java:300)
	at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter.isPaintable(AnnotationCodeMiningFilter.java:104)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
	at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:278)
	at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:548)
	at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter.isEmpty(AnnotationCodeMiningFilter.java:77)
	at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningProvider$AnnotationModelListener.modelChanged(AnnotationCodeMiningProvider.java:139)
	at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:591)
	at org.eclipse.jface.text.source.AnnotationModel$InternalModelListener.modelChanged(AnnotationModel.java:256)
	at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:591)
	at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:557)
	at org.eclipse.ui.texteditor.ResourceMarkerAnnotationModel.update(ResourceMarkerAnnotationModel.java:113)
	at org.eclipse.ui.texteditor.ResourceMarkerAnnotationModel$ResourceChangeListener.resourceChanged(ResourceMarkerAnnotationModel.java:57)
	at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:305)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:295)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:158)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:380)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1502)
	at org.eclipse.core.internal.resources.Marker.setAttribute(Marker.java:274)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointAdapter.updateLineBreakpointHoverText(AbapBreakpointAdapter.java:716)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointAdapter.updateLineBreakpointHoverText(AbapBreakpointAdapter.java:699)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointListener.breakpointsAdded(AbapBreakpointListener.java:216)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointListener.breakpointsAdded(AbapBreakpointListener.java:241)
	at org.eclipse.debug.internal.core.BreakpointManager$BreakpointsNotifier.run(BreakpointManager.java:1088)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.debug.internal.core.BreakpointManager$BreakpointsNotifier.notify(BreakpointManager.java:1114)
	at org.eclipse.debug.internal.core.BreakpointManager.fireUpdate(BreakpointManager.java:965)
	at org.eclipse.debug.internal.core.BreakpointManager.addBreakpoints(BreakpointManager.java:618)
	at org.eclipse.debug.internal.core.BreakpointManager.addBreakpoints(BreakpointManager.java:586)
	at org.eclipse.debug.internal.core.BreakpointManager.addBreakpoint(BreakpointManager.java:578)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointAdapter.addLineBreakpoint(AbapBreakpointAdapter.java:559)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointAdapter.doToggleLineBreakpoints(AbapBreakpointAdapter.java:749)
	at com.sap.adt.debugger.ui.internal.breakpoints.AbapBreakpointAdapter$2.run(AbapBreakpointAdapter.java:384)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)

Unfortunatelly I don't have a clue what triggered this so I cannot re-produce it. When when looking at the stack interesting part is

	at org.eclipse.debug.internal.ui.BreakpointImageProvider.getManagedImage(BreakpointImageProvider.java:37)
	at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.getImage(DefaultMarkerAnnotationAccess.java:374)

The relevant code is: 

	IAnnotationImageProvider annotationImageProvider = preference.getAnnotationImageProvider();
	  if (annotationImageProvider != null) {
	    Image image= annotationImageProvider.getManagedImage(annotation);
	      if (image != null)
	        return image;
        ..

The returned image is not disposed. The JavaDoc of this method says: "The returned image is managed by this annotation image provided." So I would assume that it is correct that the caller of the image does not dispose it because this is the responsibility of the Annotation Image Provider.

But the implementation in BreakpointImageProvider does not take care for the disposal of the image as it only delegates to
	DebugUIPlugin.getModelPresentation().getImage(breakpoint);

And here the contract for getImage is *not* that the creator of that image is responsible for the disposal.
But at this place you cannot e.g. register a dispose listener or something like this because you don't have a control where you can register that. 
So I don't really see a way how to fix this. Any ideas?

A complete other story is: 
Why is the implementation of DefaultMarkerAnnotationAccess.isPaintable so heavy? It creates an image just so then return false of true if the image is null or not. Can't we do this without creating in OS resource?

Regards,
Matthias
Comment 1 Sarika Sinha CLA 2021-01-28 11:46:46 EST
Moving to Platform UI to discuss on the org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.isPaintable(Annotation)


Without this, it looks difficult to change anything in Debug.
Comment 2 Vladimir Bychkov CLA 2021-05-12 09:10:34 EDT
Error in Mylyn plugin, while tasks are rendering:
{code}
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - Error: 
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - java.lang.Error: SWT Resource was not properly disposed
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Resource.<init>(Resource.java:120)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Image.<init>(Image.java:165)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Image.win32_new(Image.java:2163)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskBar.createShellLink(TaskBar.java:168)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskBar.createShellLinkArray(TaskBar.java:208)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskBar.setMenu(TaskBar.java:382)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskItem.setMenu(TaskItem.java:255)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.commons.workbench.TaskBarManager$TaskBarMenuManager.setMenuOnTaskItem(TaskBarManager.java:121)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.commons.workbench.TaskBarManager$TaskBarMenuManager.update(TaskBarManager.java:112)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:673)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.addSystemTaskBarActions(TasksUiPlugin.java:479)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.access$7(TasksUiPlugin.java:458)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin$TasksUiInitializationJob.runInUIThread(TasksUiPlugin.java:394)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:95)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4001)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3629)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - Error: 
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - java.lang.Error: SWT Resource was not properly disposed
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Resource.<init>(Resource.java:120)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Image.<init>(Image.java:165)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.graphics.Image.win32_new(Image.java:2163)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskBar.createShellLink(TaskBar.java:168)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskBar.createShellLinkArray(TaskBar.java:208)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskBar.setMenu(TaskBar.java:382)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.TaskItem.setMenu(TaskItem.java:255)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.commons.workbench.TaskBarManager$TaskBarMenuManager.setMenuOnTaskItem(TaskBarManager.java:121)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.commons.workbench.TaskBarManager$TaskBarMenuManager.update(TaskBarManager.java:112)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:673)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.addSystemTaskBarActions(TasksUiPlugin.java:479)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.access$7(TasksUiPlugin.java:458)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin$TasksUiInitializationJob.runInUIThread(TasksUiPlugin.java:394)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:95)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4001)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3629)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
2021-05-12 14:50:52 INFO  StdOutErrLog:28 - 	at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
{code}