Bug 570704 - Resource Leak caused by BreakpointImageProvider
Summary: Resource Leak caused by BreakpointImageProvider
Status: NEW
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.18   Edit
Hardware: All All
: P3 normal with 3 votes (vote)
Target Milestone: ---   Edit
Assignee: Platform-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-01-28 01:28 EST by Matthias Becker CLA
Modified: 2021-09-28 20:47 EDT (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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}