[jbosstools-issues] [JBoss JIRA] (ERT-735) [GTK3] Group widget causes memory leak and slowdown [EBZ#547227]
Eric Williams (Jira)
issues at jboss.org
Wed Jun 19 10:48:03 EDT 2019
[ https://issues.jboss.org/browse/ERT-735?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Williams reassigned ERT-735:
---------------------------------
Sprint: devex #168 June 2019
Assignee: Eric Williams
> [GTK3] Group widget causes memory leak and slowdown [EBZ#547227]
> ----------------------------------------------------------------
>
> Key: ERT-735
> URL: https://issues.jboss.org/browse/ERT-735
> Project: Eclipse Release Train
> Issue Type: Task
> Components: Platform
> Reporter: Friendly Jira Robot
> Assignee: Eric Williams
> Priority: Major
> Labels: SWT, bzira
>
> Created attachment 278590
> Snippet
> SWTBot unit tests have never worked properly on GTK3, so they were always run with GTK2. Starting with 2018-12, SWTBot unit tests are no longer successful since GTK2 support is removed. The unit tests get progressively slower until the whole build fails with Tycho return code 137.
> We've discovered that the issue seems to be with the Group widget, which is used extensively in the SWT Control Example shell in SWTBot unit tests.
> It appears that creating and disposing Group widgets gets linearly slower, until the system finally kills the build, presumably running out of memory.
> The included snippet shows the issue. Running it once for every SWTBot unit test class on the latest CI infrastructure gives the following output:
> https://ci.eclipse.org/swtbot/job/swtbot-gerrit/1035/console
> 1st unit test class:
> 15:08:26 gtk version: 3.22.30
> 15:08:26
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [1]... 10 ms =
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [2]... 11 ms ==
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [3]... 12 ms ==
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [4]... 13 ms ==
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [5]... 10 ms =
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [6]... 11 ms ==
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [7]... 13 ms ==
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [8]... 11 ms ==
> 15:08:26 shell.dispose() for Shell {} with 400 Composite [9]... 11 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [10]... 11 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [11]... 11 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [12]... 10 ms =
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [13]... 12 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [14]... 14 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [15]... 12 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [16]... 11 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [17]... 12 ms =
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [18]... 12 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [19]... 11 ms ==
> 15:08:27 shell.dispose() for Shell {} with 400 Composite [20]... 11 ms ==
> 15:08:27
> 15:08:28 shell.dispose() for Shell {} with 400 Group [1]... 36 ms ====
> 15:08:28 shell.dispose() for Shell {} with 400 Group [2]... 38 ms ====
> 15:08:28 shell.dispose() for Shell {} with 400 Group [3]... 39 ms ====
> 15:08:28 shell.dispose() for Shell {} with 400 Group [4]... 43 ms =====
> 15:08:29 shell.dispose() for Shell {} with 400 Group [5]... 46 ms =====
> 15:08:29 shell.dispose() for Shell {} with 400 Group [6]... 48 ms =====
> 15:08:29 shell.dispose() for Shell {} with 400 Group [7]... 53 ms ======
> 15:08:29 shell.dispose() for Shell {} with 400 Group [8]... 54 ms ======
> 15:08:30 shell.dispose() for Shell {} with 400 Group [9]... 57 ms ======
> 15:08:30 shell.dispose() for Shell {} with 400 Group [10]... 59 ms ======
> 15:08:30 shell.dispose() for Shell {} with 400 Group [11]... 62 ms =======
> 15:08:30 shell.dispose() for Shell {} with 400 Group [12]... 64 ms =======
> 15:08:31 shell.dispose() for Shell {} with 400 Group [13]... 67 ms =======
> 15:08:31 shell.dispose() for Shell {} with 400 Group [14]... 69 ms =======
> 15:08:31 shell.dispose() for Shell {} with 400 Group [15]... 75 ms ========
> 15:08:31 shell.dispose() for Shell {} with 400 Group [16]... 74 ms ========
> 15:08:32 shell.dispose() for Shell {} with 400 Group [17]... 77 ms ========
> 15:08:32 shell.dispose() for Shell {} with 400 Group [18]... 78 ms ========
> 15:08:32 shell.dispose() for Shell {} with 400 Group [19]... 81 ms =========
> 15:08:32 shell.dispose() for Shell {} with 400 Group [20]... 84 ms =========
> 15:08:32
> :
> :
> :
> 10th unit test class:
> 15:20:56 gtk version: 3.22.30
> 15:20:56
> 15:20:56 shell.dispose() for Shell {} with 400 Composite [1]... 12 ms ==
> 15:20:56 shell.dispose() for Shell {} with 400 Composite [2]... 13 ms ==
> 15:20:56 shell.dispose() for Shell {} with 400 Composite [3]... 12 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [4]... 12 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [5]... 11 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [6]... 12 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [7]... 11 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [8]... 13 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [9]... 12 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [10]... 12 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [11]... 11 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [12]... 12 ms ==
> 15:20:57 shell.dispose() for Shell {} with 400 Composite [13]... 11 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [14]... 13 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [15]... 11 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [16]... 12 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [17]... 11 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [18]... 12 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [19]... 12 ms ==
> 15:20:58 shell.dispose() for Shell {} with 400 Composite [20]... 11 ms ==
> 15:20:58
> 15:21:01 shell.dispose() for Shell {} with 400 Group [1]... 2786 ms =======================================================================================================================================================================================================================================================================================
> 15:21:04 shell.dispose() for Shell {} with 400 Group [2]... 2798 ms ========================================================================================================================================================================================================================================================================================
> 15:21:07 shell.dispose() for Shell {} with 400 Group [3]... 2818 ms ==========================================================================================================================================================================================================================================================================================
> 15:21:10 shell.dispose() for Shell {} with 400 Group [4]... 2837 ms ============================================================================================================================================================================================================================================================================================
> 15:21:14 shell.dispose() for Shell {} with 400 Group [5]... 2851 ms ==============================================================================================================================================================================================================================================================================================
> 15:21:17 shell.dispose() for Shell {} with 400 Group [6]... 2865 ms ===============================================================================================================================================================================================================================================================================================
> 15:21:20 shell.dispose() for Shell {} with 400 Group [7]... 2853 ms ==============================================================================================================================================================================================================================================================================================
> 15:21:23 shell.dispose() for Shell {} with 400 Group [8]... 2890 ms =================================================================================================================================================================================================================================================================================================
> 15:21:26 shell.dispose() for Shell {} with 400 Group [9]... 2892 ms ==================================================================================================================================================================================================================================================================================================
> 15:21:29 shell.dispose() for Shell {} with 400 Group [10]... 2916 ms ====================================================================================================================================================================================================================================================================================================
> 15:21:32 shell.dispose() for Shell {} with 400 Group [11]... 2913 ms ====================================================================================================================================================================================================================================================================================================
> 15:21:35 shell.dispose() for Shell {} with 400 Group [12]... 2939 ms ======================================================================================================================================================================================================================================================================================================
> 15:21:39 shell.dispose() for Shell {} with 400 Group [13]... 3047 ms =================================================================================================================================================================================================================================================================================================================
> 15:21:42 shell.dispose() for Shell {} with 400 Group [14]... 3000 ms ============================================================================================================================================================================================================================================================================================================
> 15:21:45 shell.dispose() for Shell {} with 400 Group [15]... 3032 ms ================================================================================================================================================================================================================================================================================================================
> 15:21:48 shell.dispose() for Shell {} with 400 Group [16]... 2982 ms ===========================================================================================================================================================================================================================================================================================================
> 15:21:52 shell.dispose() for Shell {} with 400 Group [17]... 2987 ms ===========================================================================================================================================================================================================================================================================================================
> 15:21:55 shell.dispose() for Shell {} with 400 Group [18]... 3016 ms ==============================================================================================================================================================================================================================================================================================================
> 15:21:58 shell.dispose() for Shell {} with 400 Group [19]... 3017 ms ==============================================================================================================================================================================================================================================================================================================
> 15:22:01 shell.dispose() for Shell {} with 400 Group [20]... 3031 ms ================================================================================================================================================================================================================================================================================================================
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
More information about the jbosstools-issues
mailing list