aka gnomebug:168845
Gnome-settings-daemon allocates a bunch of stuff via GStreamer:
==13696== 64640 bytes in 354 blocks are still reachable in loss record 6489 of 6490 ==13696== at 0x3414AFEE: realloc (in /usr/lib/valgrind/vgpreload_addrcheck.so) ==13696== by 0x413C3D70: g_realloc (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x413A6185: g_array_maybe_expand (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x413A72E8: g_array_append_vals (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x43ADD4C8: gst_structure_set_field (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43ADEB24: gst_structure_from_string (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AB20F8: gst_caps_from_string_inplace (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AB2B45: gst_caps_from_string (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AFAAF0: gst_xml_registry_parse_padtemplate (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AF7998: gst_xml_registry_text (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x413C3A13: g_markup_parse_context_parse (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x43AF9E79: gst_xml_registry_load (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AEDA58: gst_registry_load (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AEDFA7: _registry_load_func (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x413BA0EE: g_list_foreach (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== ==13696== ==13696== 119552 bytes in 622 blocks are still reachable in loss record 6490 of 6490 ==13696== at 0x3414AFEE: realloc (in /usr/lib/valgrind/vgpreload_addrcheck.so) ==13696== by 0x413C3D70: g_realloc (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x413A6185: g_array_maybe_expand (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x413A72E8: g_array_append_vals (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x43ADD4C8: gst_structure_set_field (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43ADEB24: gst_structure_from_string (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AB2173: gst_caps_from_string_inplace (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AB2B45: gst_caps_from_string (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AFAAF0: gst_xml_registry_parse_padtemplate (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AF7998: gst_xml_registry_text (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x413C3A13: g_markup_parse_context_parse (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== by 0x43AF9E79: gst_xml_registry_load (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AEDA58: gst_registry_load (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x43AEDFA7: _registry_load_func (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==13696== by 0x413BA0EE: g_list_foreach (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==13696== ==13696== LEAK SUMMARY: ==13696== definitely lost: 4810 bytes in 61 blocks. ==13696== possibly lost: 1856 bytes in 60 blocks. ==13696== still reachable: 1484690 bytes in 35713 blocks. ==13696== suppressed: 0 bytes in 0 blocks.
NB: there are tons of other gstreamer allocations. This is only the biggest one. It looks like gstreamer accounts for 20% or more of the allocations around here.
It turns out that this is just to implement changing the volume from Acme!
==19024== by 0x413BA0EE: g_list_foreach (in /opt/gnome/lib/libglib-2.0.so.0.400.6) ==19024== by 0x43AD428A: _gst_plugin_initialize (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==19024== by 0x43AA9662: init_post (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==19024== by 0x43AA9F9F: gst_init_check_with_popt_table (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==19024== by 0x43AAA13A: gst_init_with_popt_table (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==19024== by 0x43AAA189: gst_init (in /opt/gnome/lib/libgstreamer-0.8.so.1.0.0) ==19024== by 0x8066F8B: acme_volume_gstreamer_class_init (in /opt/gnome/lib/control-center-2.0/gnome-settings-daemon)
How many people actually have a keybinding for volume control? Can we delay GStreamer initialization until that key is actually used?
Note by casual reader: I do. My girlfriend does. I've tought two of my friends to use Linux and Gnome - both of them happen to have multimedia keyboards and both of them use volume control keys. (VitezslavKotrla)
BenMaurer: yeah, at the very least it should be pay-as-you-go. However, the real solution is to find a way to do this without loading all the stuff from the disk.