CsvEdit icon indicating copy to clipboard operation
CsvEdit copied to clipboard

Plugin causes regular "SWT Resource was not properly disposed" errors in the log

Open difflaender opened this issue 3 years ago • 7 comments

Using Eclipse 2021-06 with this plugin, I frequently get the following error in the log (which references MultiPageCSVEditor):

!ENTRY org.eclipse.ui.ide 4 4 2021-07-09 17:54:50.641
!MESSAGE Not properly disposed SWT resource
!STACK 0
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.TextLayout.<init>(TextLayout.java:176)
	at org.eclipse.jface.viewers.StyledCellLabelProvider.getSharedTextLayout(StyledCellLabelProvider.java:207)
	at org.eclipse.jface.viewers.StyledCellLabelProvider.measure(StyledCellLabelProvider.java:276)
	at org.eclipse.jface.viewers.OwnerDrawLabelProvider$OwnerDrawListener.handleEvent(OwnerDrawLabelProvider.java:59)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1067)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
	at org.eclipse.swt.widgets.Table.sendMeasureItemEvent(Table.java:3648)
	at org.eclipse.swt.widgets.Table.CDDS_SUBITEMPREPAINT(Table.java:995)
	at org.eclipse.swt.widgets.Table.wmNotifyChild(Table.java:6735)
	at org.eclipse.swt.widgets.Control.wmNotify(Control.java:5814)
	at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1954)
	at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5382)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4816)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4938)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:588)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:454)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4861)
	at org.eclipse.swt.widgets.Table.windowProc(Table.java:5813)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4930)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:588)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:454)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4861)
	at org.eclipse.swt.widgets.Table.windowProc(Table.java:5813)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4938)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:588)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:454)
	at org.eclipse.swt.widgets.Table.WM_SETREDRAW(Table.java:6210)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4835)
	at org.eclipse.swt.widgets.Table.windowProc(Table.java:5813)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4930)
	at org.eclipse.swt.internal.win32.OS.SendMessage(Native Method)
	at org.eclipse.swt.widgets.Table.setRedraw(Table.java:4737)
	at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:574)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1634)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor.updateTableFromTextEditor(MultiPageCSVEditor.java:595)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor.access$1(MultiPageCSVEditor.java:480)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor$7.run(MultiPageCSVEditor.java:456)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4001)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3629)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
	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:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	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:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:654)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1462)

I could not pinpoint it to any specific action I perform with the CSV editor, though. I also did not check if this also occurs in older Eclipse versions or whether it's a new regression that only affects current versions.

difflaender avatar Jul 12 '21 09:07 difflaender

Most likely some API change in the latest Eclipse. HELP IS WANTED, see https://github.com/Mathieuu/CsvEdit#status

Have you tried mvn package to build?

paulvi avatar Jul 14 '21 06:07 paulvi

I get the following error on packaging it, but I have no idea how to resolve it:

[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: org.fhsolution.eclipse.plugins.csvedit 1.2.0
[ERROR]   Missing requirement: org.eclipse.core.jobs 3.11.0.v20210420-1453 requires 'osgi.ee; (&(osgi.ee=JavaSE)(version=1.8))' but it could not be found

As far as I can tell, that's a dependency that is not directly referenced by this project but by the dependency org.eclipse.core.runtime, so the latter should make sure to actually satisfy it.

difflaender avatar Jul 14 '21 06:07 difflaender

It is strange that new and fresh version 3.11.0.v20210420-1453 is there

while https://github.com/Mathieuu/CsvEdit/blob/master/pom.xml#L27 defines old luna repository

I'd try to point to the latest Eclipse repo, what is current Eclipse codename?

New build should be for the newest Ecipse, and maybe Java as Java 11

paulvi avatar Jul 15 '21 13:07 paulvi

The current code name is "2021-06", the version is 4.20. I already changed the POM to point to that repository in my working copy, which is how that fresh dependency got there in my build.

I did leave the Java version at 8, though. Not sure how much would need to be changed to make it work with Java 11 and its new module system otherwise.

difflaender avatar Jul 15 '21 13:07 difflaender

One can use Java 11 and even Java 16/17 without knowing/caring about new module system.

For exact Eclipse build, I'd suggest try to contact @Mathieuu if he still looks here, than ask on https://stackoverflow.com/questions/tagged/eclipse

And for some weird situation raise as bug on https://bugs.eclipse.org/bugs/

I am sorry, I have not been touching Eclipse for 1-2 year, and do it just to improve plugin (that I would not use anyways) is against common sense. I do care, that some repositories, I moved forward, would continue. For example for this code base Henry #10 was first, @Mathieuu is actually second person, and I was the third by just making maven/tycho build and releasing binaries, making new marketplace entry.

paulvi avatar Jul 16 '21 02:07 paulvi

Exactly this bug with stack trace above is good question for https://stackoverflow.com/questions/tagged/eclipse

paulvi avatar Jul 16 '21 03:07 paulvi

For what it is worth, I forked the the repo and fix this and a few other issues: https://github.com/gnl42/CsvEdit2

Update site at https://gnl42.github.io/CsvEdit2-update/

gnl42 avatar Jan 09 '24 00:01 gnl42