I ran it through valgrind by diverting indicator-session-service and replacing it with the following script:
#!/bin/bash
exec valgrind \ --tool=massif \ --alloc-fn={g_slice_alloc,g_malloc,g_realloc} \ --massif-out-file=$HOME/massif-dump/indicator-session-service.out.%p \ /usr/lib/x86_64-linux-gnu/indicator-session/indicator-session-service.distrib \ "$@"
Running ms_print on the output files gave me some stack traces of the highest number of unfreed allocations:
60.92% (1,262,577,672B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->17.05% (353,258,600B) 0x568AC5C: g_variant_new_from_children (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4600.1) | ->08.46% (175,306,320B) 0x568798A: g_variant_builder_end (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4600.1) | | ->08.46% (175,306,120B) 0x4F05434: parse_value_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | ->04.23% (87,682,360B) 0x4F05120: parse_value_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | ->04.23% (87,682,360B) 0x4F05400: parse_value_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.23% (87,682,360B) 0x4F0501F: parse_value_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.23% (87,682,360B) 0x4F05120: parse_value_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.23% (87,682,360B) 0x4F051E8: parse_value_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.23% (87,682,360B) 0x4F0747A: g_dbus_message_new_from_blob (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.23% (87,682,360B) 0x4F1168B: _g_dbus_worker_do_read_cb (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.23% (87,682,360B) 0x4EB45F1: g_task_return_now (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | ->04.22% (87,503,000B) 0x4EB4627: complete_in_idle_cb (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | | ->04.22% (87,503,000B) 0x564FEA8: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4600.1) | | | | | | ->04.22% (87,503,000B) 0x565024E: g_main_context_iterate.isra.29 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4600.1) | | | | | | ->04.22% (87,503,000B) 0x5650570: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4600.1) | | | | | | ->04.22% (87,503,000B) 0x4F0F4C4: gdbus_shared_thread_func (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4600.1) | | | | | | ->04.22% (87,503,000B) 0x5676963: g_thread_proxy (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4600.1) | | | | | | ->04.22% (87,503,000B) 0x69B96A8: start_thread (pthread_create.c:333) | | | | | | ->04.22% (87,503,000B) 0x5A1BEEB: clone (clone.S:109)
I've attached the full dump from ms_print.
I ran it through valgrind by diverting indicator- session- service and replacing it with the following script:
#!/bin/bash
exec valgrind \ fn={g_slice_ alloc,g_ malloc, g_realloc} \ out-file= $HOME/massif- dump/indicator- session- service. out.%p \ lib/x86_ 64-linux- gnu/indicator- session/ indicator- session- service. distrib \
--tool=massif \
--alloc-
--massif-
/usr/
"$@"
Running ms_print on the output files gave me some stack traces of the highest number of unfreed allocations:
60.92% (1,262,577,672B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. new_from_ children (in /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0.4600. 1) builder_ end (in /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0.4600. 1) from_blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) from_blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) from_blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) from_blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) from_blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) from_blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) message_ new_from_ blob (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) worker_ do_read_ cb (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) context_ dispatch (in /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0.4600. 1) context_ iterate. isra.29 (in /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0.4600. 1) 64-linux- gnu/libglib- 2.0.so. 0.4600. 1) thread_ func (in /usr/lib/ x86_64- linux-gnu/ libgio- 2.0.so. 0.4600. 1) 64-linux- gnu/libglib- 2.0.so. 0.4600. 1) create. c:333)
->17.05% (353,258,600B) 0x568AC5C: g_variant_
| ->08.46% (175,306,320B) 0x568798A: g_variant_
| | ->08.46% (175,306,120B) 0x4F05434: parse_value_
| | | ->04.23% (87,682,360B) 0x4F05120: parse_value_
| | | | ->04.23% (87,682,360B) 0x4F05400: parse_value_
| | | | | ->04.23% (87,682,360B) 0x4F0501F: parse_value_
| | | | | ->04.23% (87,682,360B) 0x4F05120: parse_value_
| | | | | ->04.23% (87,682,360B) 0x4F051E8: parse_value_
| | | | | ->04.23% (87,682,360B) 0x4F0747A: g_dbus_
| | | | | ->04.23% (87,682,360B) 0x4F1168B: _g_dbus_
| | | | | ->04.23% (87,682,360B) 0x4EB45F1: g_task_return_now (in /usr/lib/
| | | | | ->04.22% (87,503,000B) 0x4EB4627: complete_in_idle_cb (in /usr/lib/
| | | | | | ->04.22% (87,503,000B) 0x564FEA8: g_main_
| | | | | | ->04.22% (87,503,000B) 0x565024E: g_main_
| | | | | | ->04.22% (87,503,000B) 0x5650570: g_main_loop_run (in /lib/x86_
| | | | | | ->04.22% (87,503,000B) 0x4F0F4C4: gdbus_shared_
| | | | | | ->04.22% (87,503,000B) 0x5676963: g_thread_proxy (in /lib/x86_
| | | | | | ->04.22% (87,503,000B) 0x69B96A8: start_thread (pthread_
| | | | | | ->04.22% (87,503,000B) 0x5A1BEEB: clone (clone.S:109)
I've attached the full dump from ms_print.