Bug #667

avatar

GNOME frontend leaks memory

Added by Mirco Bauer 4664 days ago. Updated 3968 days ago.

Status:Feedback Start:01/01/2012
Priority:Urgent Due date:
Assigned to:avatarMirco Bauer % Done:

0%

Category:Frontend GNOME
Target version:-
Complexity:

High

Found in Version:

Votes: 0

Description

It looks like the GNOME frontend is leaking memory. After a single day the memory usage (RSS) is way above 100MB while it starts around 60MB with a fully populated interface.

smuxi-memleak3.jpg (39.5 KB) Mirco Bauer, 01/28/2013 01:52 AM

smuxi-memleak2.jpg (45.7 KB) Mirco Bauer, 01/28/2013 02:23 AM

smuxi-memleak.jpg (73.2 KB) Mirco Bauer, 01/28/2013 02:28 AM

paste_43f2e89d.txt (5.1 KB) Mirco Bauer, 04/30/2013 12:05 PM

smuxi-RAM-stats.log (14.7 KB) Michael Schmitt, 08/25/2013 06:47 PM

smuxi-frontend-gnome.log.tar.xz (330.9 KB) Michael Schmitt, 08/25/2013 06:47 PM

Associated revisions

Revision af9f70bcda72fde1852e4968f50c686dd8842eb3
Added by Mirco Bauer 4274 days ago

[Frontend-GNOME] Fixed thread/memleak when reconnecting frontend (closes: #805, refs: #667)

Reconnecting to the smuxi-server was leaking all ChatView objects as
the ChatViewManager.ChatRemoved event was never raised from
ChatViewManager.Clear(). Thus StatusIconManager, NotifyManager and
IndicateManager continued to reference ChatViews objects. This leaked the
LastSeenHighlightQueue thread and probably also GTK+'s TextBuffer used in
MessageTextView.

Now we use the regular cleanup code of ChatViewManager.RemoveChat() instead.

Revision 95f63d422e7d5c6c85e2f9cc20fb198a21a5c33b
Added by Mirco Bauer 4267 days ago

[Frontend-GNOME] Fixed a few leaking refrences to ChatView (refs: #667)

Revision aa05b1c404b86032b7898fb21c7d240236a2f2f5
Added by Mirco Bauer 4267 days ago

[Frontend-GNOME] Fix remaining ChatView memleak (refs: #667)

Release TreeViewColumn.SetCellDataFunc() callback in ChatView.Dispose()

Revision 1f4922d3781c3e0c579a3f988afb65dd9408e8bc
Added by Mirco Bauer 4267 days ago

[Frontend-GNOME] Explicitly dispose TextTagTable to fix leaking LinkTags (refs: #667)

Revision f55d9c943fa00e25f8884e8859c330664762e78f
Added by Mirco Bauer 4188 days ago

[Frontend] Fixed leaking ChatView references held by ChatViewSyncManager.SyncReleaseQueue (refs: #667)

Revision 072b80e877e8132ae0970c0557499ccf351ef87a
Added by Mirco Bauer 4188 days ago

[Frontend-GNOME] Fixed memory leak in MessageTextView.GetPangoWidth() (refs: #667)

Revision f3b0fb9d57e1cde74112203f7e49f24792fd459e
Added by Mirco Bauer 4188 days ago

[Frontend-GNOME] Fixed leaking text marks in MessageTextView.AddMessage() (refs: #667)

Revision e960bdb97d9ee7abb456a33597225bb62888bd5d
Added by Mirco Bauer 4188 days ago

[Frontend-GNOME] Fixed leaking text tags in MessageTextView.CheckBufferSize() (refs: #667)

Revision 7e68deccd3b776cd2d42ba167bda166112633e73
Added by Mirco Bauer 4173 days ago

[Frontend-GNOME] Explicitly release Pango.Layouts (refs: #667)

Revision 0919f1819ac552bc8db05d10d3031c4da8c6cdb1
Added by Mirco Bauer 4173 days ago

[Frontend-GNOME] Fixed leaking topic MessageTextViews (refs: #667)

Revision 2a924833e7f217af666410f7ca8a645faade102a
Added by Mirco Bauer 4173 days ago

[Frontend-GNOME] Explicitly release Pango.Context in ThemeSettings (refs: #667)

Revision b02a23d7ae28f02c23ad591388cab59a44034451
Added by Mirco Bauer 4173 days ago

[Frontend-GNOME] Release SyncedPersons in GroupChatView.Populate() (refs: #667)

Revision f8f61d8e3ec389106533dc7c77232e7268caf9ec
Added by Mirco Bauer 3922 days ago

Frontend-GNOME: fixed leaking PersonTags in MessageTextView (refs: #667)

History

Updated by Michael Schmitt 4663 days ago

avatar

50000 persitent buffer lines
200 volatile buffer lines
1000 engine buffer lines
1000 buffer lines

234MB right after start / finished sync, 29 tabs (server- and channeltabs)
frontend version: 0.8.1-0~65~natty1 (Sat, 31 Dec 2011 20:19:13 +0000)
mono runtime: 2.6.7-5 (mono-runtime, Debian sid)
runtime: I keep an eye on it and update this ticket accordingly.

Updated by Michael Schmitt 4663 days ago

avatar

Michael Schmitt wrote:

50000 persitent buffer lines 200 volatile buffer lines 1000 engine buffer lines 1000 buffer lines

234MB right after start / finished sync, 29 tabs (server- and channeltabs) frontend version: 0.8.1-0~65~natty1 (Sat, 31 Dec 2011 20:19:13 +0000) mono runtime: 2.6.7-5 (mono-runtime, Debian sid) runtime: I keep an eye on it and update this ticket accordingly.

After approximately one day: 390MB

Updated by Michael Schmitt 4662 days ago

avatar

After approximately one day: 390MB

After almost 2 days: 593MB

Updated by Michael Schmitt 4661 days ago

avatar

Michael Schmitt wrote:

After approximately one day: 390MB

After almost 2 days: 593MB

Day 3, over 900MB, stopped the test. What next?

Updated by Michael Schmitt 4661 days ago

avatar

Next test, (engine) buffer set to 200 lines, with now 32 tabs open. Right from the start 217MB. Did an upgrade before the test, now on Debian sids packages (newer than daily build?) 0.8.9.1-1.

Updated by Michael Schmitt 4660 days ago

avatar

Still stripped down to 200 (buffer) lines, after approximately one day, 479MB and still on sids packages.

Updated by Mirco Bauer 4658 days ago

avatar
  • Target version changed from 0.10 to 0.8.10

Updated by Mirco Bauer 4483 days ago

avatar
  • Target version changed from 0.8.10 to 0.9

Updated by Mirco Bauer 4274 days ago

avatar
  • Status changed from New to Feedback

Please test git master HEAD and check if the memory usage stops increasing as seen in your tests.

Updated by Mirco Bauer 4271 days ago

avatar

Updated by Mirco Bauer 4271 days ago

avatar

Updated by Mirco Bauer 4271 days ago

avatar
mono --trace=T:GLib.DestroyHelper,T:GtkSharp.TreeIterCompareFuncWrapper,M:Gtk.ListStore:SetSortFunc smuxi-frontend-gnome.exe

[0x7f37f899d740: 0.00000 0] ENTER: Gtk.ListStore:SetSortFunc (int,Gtk.TreeIterCompareFunc)(this:0x7f37e40934d0[Gtk.ListStore smuxi-frontend-gnome.exe], 0, [Gtk.TreeIterCompareFunc:0x7f37e407b958], )
[0x7f37f899d740: 0.00044 1] ENTER: GtkSharp.TreeIterCompareFuncWrapper:.ctor (Gtk.TreeIterCompareFunc)(this:0x7f37e4063ed8[GtkSharp.TreeIterCompareFuncWrapper smuxi-frontend-gnome.exe], [Gtk.TreeIterCompareFunc:0x7f37e407b958], )
[0x7f37f899d740: 0.00067 1] LEAVE: GtkSharp.TreeIterCompareFuncWrapper:.ctor (Gtk.TreeIterCompareFunc)
[0x7f37f899d740: 0.00106 1] ENTER: GLib.DestroyHelper:get_NotifyHandler ()()
[0x7f37f899d740: 0.00108 1] LEAVE: GLib.DestroyHelper:get_NotifyHandler ()[GLib.DestroyNotify:0x7f37e407b7b8]
[0x7f37f899d740: 0.00138 0] LEAVE: Gtk.ListStore:SetSortFunc (int,Gtk.TreeIterCompareFunc)
[0x7f37f899d740: 0.00440 0] ENTER: GLib.DestroyHelper:get_NotifyHandler ()()
[0x7f37f899d740: 0.00445 0] LEAVE: GLib.DestroyHelper:get_NotifyHandler ()[GLib.DestroyNotify:0x7f37e407b7b8]

[0x7f37f899d740: 12.64061 0] ENTER: (wrapper native-to-managed) GLib.DestroyHelper:ReleaseGCHandle (intptr)(0x29f3, )
[0x7f37f899d740: 12.64100 1] ENTER: GLib.DestroyHelper:ReleaseGCHandle (intptr)(0x29f3, )
[0x7f37f899d740: 12.64104 1] LEAVE: GLib.DestroyHelper:ReleaseGCHandle (intptr)
[0x7f37f899d740: 12.64107 0] LEAVE: (wrapper native-to-managed) GLib.DestroyHelper:ReleaseGCHandle (intptr)

Updated by Mirco Bauer 4271 days ago

avatar

Updated by Mirco Bauer 4179 days ago

avatar
As of 0a42f227858ef99d679f07b64244319e97dcae34 / ~226 the frontend still leaks memory somewhere:
Mo 29. Apr 03:54:24 CEST 2013
mschmitt  8343  112 16.1 334224 166140 ?       Rl   03:48   6:44 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
mschmitt  8479  0.0  0.0   3572   824 pts/3    S+   03:54   0:00 grep mono
________
Mo 29. Apr 03:59:34 CEST 2013
mschmitt  8343 63.8 16.4 334352 169208 ?       Sl   03:48   7:07 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 04:59:34 CEST 2013
mschmitt  8343 16.6 16.8 334416 173284 ?       Sl   03:48  11:51 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 05:59:34 CEST 2013
mschmitt  8343 14.2 16.8 334416 173284 ?       Sl   03:48  18:42 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 06:59:34 CEST 2013
mschmitt  8343 13.2 16.8 334548 172384 ?       Sl   03:48  25:17 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 07:59:34 CEST 2013
mschmitt  8343 15.0 20.9 378840 215168 ?       Rl   03:48  37:43 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 08:59:35 CEST 2013
mschmitt  8343 15.7 21.2 387160 218384 ?       Sl   03:48  49:02 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 09:59:35 CEST 2013
mschmitt  8343 15.3 21.3 387224 218708 ?       Sl   03:48  56:54 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 10:59:35 CEST 2013
mschmitt  8343 15.0 21.3 387224 218928 ?       Sl   03:48  64:42 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 11:59:35 CEST 2013
mschmitt  8343 14.9 21.1 387492 216540 ?       Sl   03:48  73:26 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 12:59:35 CEST 2013
mschmitt  8343 14.7 21.1 387624 216776 ?       Sl   03:48  81:08 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 13:59:35 CEST 2013
mschmitt  8343 14.4 21.1 388024 217088 ?       Sl   03:48  88:28 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 14:59:35 CEST 2013
mschmitt  8343 14.4 20.9 388420 214680 ?       Sl   03:48  96:44 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 15:59:35 CEST 2013
mschmitt  8343 14.9 21.0 389220 215580 ?       Sl   03:48 109:39 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 16:59:35 CEST 2013
mschmitt  8343 15.4 21.1 389880 217148 ?       Sl   03:48 122:25 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 17:59:35 CEST 2013
mschmitt  8343 16.1 21.2 390672 218020 ?       Rl   03:48 137:47 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 18:59:35 CEST 2013
mschmitt  8343 16.8 21.0 391464 216376 ?       Sl   03:48 153:44 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 19:59:36 CEST 2013
mschmitt  8343 17.5 20.8 392400 214376 ?       Rl   03:48 170:42 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 20:59:36 CEST 2013
mschmitt  8343 17.9 20.8 393048 214096 ?       Sl   03:48 184:47 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 21:59:37 CEST 2013
mschmitt  8343 17.8 20.8 393460 213596 ?       Sl   03:48 195:08 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 22:59:37 CEST 2013
mschmitt  8343 18.0 20.8 394256 214060 ?       Sl   03:48 207:34 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mo 29. Apr 23:59:37 CEST 2013
mschmitt  8343 18.0 20.8 394928 214280 ?       Sl   03:48 219:07 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 00:59:37 CEST 2013
mschmitt  8343 18.1 25.5 440036 262172 ?       Rl   Apr29 230:21 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 01:59:37 CEST 2013
mschmitt  8343 17.9 25.7 440100 264436 ?       Sl   Apr29 238:23 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 02:59:37 CEST 2013
mschmitt  8343 17.6 25.8 440100 264664 ?       Sl   Apr29 245:03 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 03:59:37 CEST 2013
mschmitt  8343 17.2 25.7 440100 263960 ?       Sl   Apr29 250:47 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 04:59:38 CEST 2013
mschmitt  8343 17.1 25.7 440100 263892 ?       Sl   Apr29 259:33 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 05:59:38 CEST 2013
mschmitt  8343 16.8 25.7 440100 264168 ?       Sl   Apr29 264:51 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 06:59:38 CEST 2013
mschmitt  8343 16.5 25.7 440100 263932 ?       Sl   Apr29 269:37 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 07:59:38 CEST 2013
mschmitt  8343 16.5 27.2 462464 279676 ?       Sl   Apr29 279:54 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 08:59:38 CEST 2013
mschmitt  8343 16.2 27.5 462596 282296 ?       Sl   Apr29 284:54 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 09:59:38 CEST 2013
mschmitt  8343 16.2 26.8 462728 275416 ?       Sl   Apr29 294:35 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 10:59:38 CEST 2013
mschmitt  8343 16.3 26.8 462996 275616 ?       Sl   Apr29 305:03 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 11:59:38 CEST 2013
mschmitt  8343 16.4 26.6 463532 273732 ?       Rl   Apr29 317:04 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 12:59:39 CEST 2013
mschmitt  8343 16.6 26.8 464308 275876 ?       Rl   Apr29 331:24 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 13:59:39 CEST 2013
mschmitt  8343 16.6 26.9 464836 276616 ?       Sl   Apr29 342:10 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 14:59:39 CEST 2013
mschmitt  8343 16.6 26.9 465232 276264 ?       Sl   Apr29 351:21 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Di 30. Apr 15:59:39 CEST 2013
mschmitt  8343 16.7 26.9 465892 276532 ?       Sl   Apr29 364:20 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mi 1. Mai 06:17:24 CEST 2013
mschmitt  8343 12.6 33.2 528596 341268 ?       Sl   Apr29 383:19 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mi 1. Mai 07:17:24 CEST 2013
mschmitt  8343 12.6 32.5 528596 333820 ?       Sl   Apr29 390:12 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mi 1. Mai 08:17:25 CEST 2013
mschmitt  8343 12.8 35.2 561600 361396 ?       Sl   Apr29 403:50 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mi 1. Mai 09:17:25 CEST 2013
mschmitt  8343 12.7 35.2 561748 361088 ?       Sl   Apr29 409:21 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mi 1. Mai 10:17:25 CEST 2013
mschmitt  8343 12.7 35.2 561880 361472 ?       Sl   Apr29 416:51 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________
Mi 1. Mai 11:17:25 CEST 2013
mschmitt  8343 12.8 35.2 562144 361384 ?       Sl   Apr29 426:58 mono --debug /usr/lib/smuxi/smuxi-frontend-gnome.exe
________

Updated by Mirco Bauer 4069 days ago

avatar
  • Target version changed from 0.9 to 0.10

Updated by Michael Schmitt 4062 days ago

avatar

New testrun with the following packages / versions:
smuxi 1:0.9+git-0~292~precise1 (dailys from ppa.launchpad.net/meebey/smuxi-daily)
mono-runtime 3.0.6+dfsg2-4 (debian sid)

with the following buffer settings:
Buffer lines 1000
Engine buffer lines 1000
persistence typ persistent
Lines of volatile buffer 1000
lines of persistent buffer 50000

Updated by Mirco Bauer 4062 days ago

avatar

Looks like it leaks 60-90 MB/day for you

Updated by Mirco Bauer 3968 days ago

avatar
  • Target version deleted (0.10)

Also available in: Atom PDF