]
Eric Williams reassigned ERT-748:
---------------------------------
Sprint: devex #170 Aug 2019
Assignee: Eric Williams
[GTK3] Shell dispose slowdown [EBZ#549644]
------------------------------------------
Key: ERT-748
URL:
https://issues.jboss.org/browse/ERT-748
Project: Eclipse Release Train
Issue Type: Task
Components: Platform
Reporter: Friendly Jira Robot
Assignee: Eric Williams
Priority: Major
Labels: 4.13_M3, SWT, bzira
Created attachment 279428
Snippet
GTK version: 3.22.30
SWT version: 4928
With the fix from Bug 547227, SWTBot unit tests are sometimes able to complete on GTK3
successfully. However sometimes the build still fails with Tycho return code 137.
Running a loop to continuously create and dispose a ControlExample in a Shell shows that
the dispose gets progressively slower.
Doing this with the SWTBot ControlExample (a modified copy) crashes the build after less
than 700 iterations, with the dispose time starting around 300 ms and ending around 2,300
ms:
https://ci.eclipse.org/swtbot/job/swtbot-gerrit/1071/console
By comparison, the same code with GTK2 on 2018-09 target platform crashes after more than
13,000 iterations, but the dispose time is stable around 50 ms throughout:
https://ci.eclipse.org/swtbot/job/swtbot-gerrit/1070/console
The slowdown problem can be reproduced locally using the original ControlExample from
SWT. See the included snippet.
Profiling this snippet shows that the majority of the time is spent in
GTK._gtk_widget_destroy[native] for the Shell itself.
main 100,341 ms (100%) 100,341 ms (100%)
+SnippetControlExampleDispose.main () 100,341 ms (100%) 100,341 ms (100%)
+org.eclipse.swt.widgets.Shell.dispose () 64,397 ms (64.2%) 64,397 ms (64.2%)
+org.eclipse.swt.widgets.Widget.dispose () 64,397 ms (64.2%) 64,397 ms (64.2%)
+org.eclipse.swt.widgets.Control.release () 64,397 ms (64.2%) 64,397 ms (64.2%)
+org.eclipse.swt.widgets.Widget.release () 64,397 ms (64.2%) 64,397 ms (64.2%)
+org.eclipse.swt.widgets.Widget.destroyWidget () 61,443 ms (61.2%) 61,443 ms
(61.2%)
+org.eclipse.swt.internal.gtk.GTK.gtk_widget_destroy () 61,443 ms (61.2%) 61,443 ms
(61.2%)
+org.eclipse.swt.internal.gtk.GTK._gtk_widget_destroy[native] () 61,443 ms
(61.2%) 61,443 ms (61.2%)
+org.eclipse.swt.widgets.Shell.releaseChildren () 2,954 ms (2.9%) 2,954 ms (2.9%)
+org.eclipse.swt.examples.controlexample.ControlExample.<init> () 35,103 ms
(35%) 35,103 ms (35%)
+org.eclipse.swt.widgets.Shell.<init> () 840 ms (0.8%) 840 ms (0.8%)