Community
Participate
Working Groups
4.12 M3, GTK 3.22 Just got an "Unhandled event loop exception" on switching Git History to a different element. Probably regression from bug 544282 and reminds me on bug 182598 (but no crash this time). Unfortunately not yet reproducible. Looks like the UI received event with *disposed* Item *while* GTK was removing table elements. The notable difference I see is that after commit 10358d0bb5c033e47e01415ae3070e4f7415aa53 we iterate over the Table elements in opposite order and set iterator only once. May be this order change causes some different GTK event order (or new GTK events) and we see now UI events sent with a *disposed* Items. I haven't debugged this yet, but I assume that sending events for already disposed widgets is unusual. I assume the disposed Item is coming from Table.cellDataProc(long, long, long, long, long) callback - we find that item via GTK iterator in the Table items[] array and send it in an event via Table.checkData() to clients. Clients do not like this :-) org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4699) at org.eclipse.swt.SWT.error(SWT.java:4614) at org.eclipse.swt.SWT.error(SWT.java:4585) at org.eclipse.swt.widgets.Widget.error(Widget.java:532) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:469) at org.eclipse.swt.widgets.Widget.getData(Widget.java:558) at org.eclipse.jface.viewers.StructuredViewer.associate(StructuredViewer.java:564) at org.eclipse.jface.viewers.AbstractTableViewer$VirtualManager.lambda$0(AbstractTableViewer.java:101) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5874) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1400) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1426) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1409) at org.eclipse.swt.widgets.Table.checkData(Table.java:283) at org.eclipse.swt.widgets.Table.cellDataProc(Table.java:221) at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:913) at org.eclipse.swt.internal.gtk.GTK._gtk_list_store_remove(Native Method) at org.eclipse.swt.internal.gtk.GTK.gtk_list_store_remove(GTK.java:4054) at org.eclipse.swt.widgets.Table.remove(Table.java:2699) at org.eclipse.swt.widgets.Table.setItemCount(Table.java:3661) at org.eclipse.jface.viewers.TableViewer.doSetItemCount(TableViewer.java:231) at org.eclipse.jface.viewers.AbstractTableViewer.internalVirtualRefreshAll(AbstractTableViewer.java:643) at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:617) at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:607) at org.eclipse.jface.viewers.AbstractTableViewer.lambda$0(AbstractTableViewer.java:569) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1391) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1352) at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:569) at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282) at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1629) at org.eclipse.egit.ui.internal.history.CommitGraphTable.setInput(CommitGraphTable.java:432) at org.eclipse.egit.ui.internal.history.GitHistoryPage$13.run(GitHistoryPage.java:2210) 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:5113)
Do you still see this one Andrey?
(In reply to Eric Williams from comment #1) > Do you still see this one Andrey? Nope, never seen this again.