On my system, NetworkManager leaks memory at an alarming rate. After several days, it can have an RSS of over 1GB. Searching for a solution, I found http://groups.google.se/group/linux.debian.bugs.rc/browse_thread/thread/3a019cdc5fe2b74e . Applying this patch may help. Reproducible: Always Steps to Reproduce: 1. Start NetworkManager when you have a wireless device 2. Wait 3. Wait some more Actual Results: NetworkManager's memory consumption steadily grows Expected Results: Use a reasonable amount of memory
Created attachment 163062 [details, diff] fix-memleak.patch Patch that adds a few needed g_free calls.
Is this patch a fix or just a ugly hack workaround? If it doesn't hit portage soon, I'm going to apply it manually — restarting NetworkManager every few hours is quite annoying.
I applied it and it fixed the memory leak and also I haven't noticed any bugs from it. Works for me on AMD64. Here's my 'paludis --info networkmanager': paludis 0.30.1 Paludis build information: Compiler: CXX: x86_64-pc-linux-gnu-g++ 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.1) CXXFLAGS: -march=athlon64 -msse3 -pipe -O2 LDFLAGS: -Wl,-O1 DATE: 2008-09-29T23:08:40+0200 Libraries: C++ Library: GNU libstdc++ 20070214 Reduced Privs: reduced_uid: 115 reduced_uid->name: paludisbuild reduced_uid->dir: /var/tmp/paludis reduced_gid: 250 reduced_gid->name: portage Paths: DATADIR: /usr/share LIBDIR: /usr/lib64 LIBEXECDIR: /usr/libexec SYSCONFDIR: /etc PYTHONINSTALLDIR: /usr/lib64/python2.5/site-packages RUBYINSTALLDIR: /usr/lib64/ruby/site_ruby/1.8/x86_64-linux Environment: Format: paludis Config dir: /etc/paludis World file: /var/db/pkg/world Repository layman: format: unavailable location: /var/db/paludis/repositories/layman sync: tar+http://git.exherbo.org/layman_repositories.tar.bz2 sync_options: Repository installed-virtuals: format: installed_virtuals root: / Repository virtuals: format: virtuals Repository gentoo: format: ebuild location: /usr/portage append_repository_name_to_write_cache: true binary_destination: false binary_keywords: binary_uri_prefix: builddir: /var/tmp/paludis cache: /usr/portage/metadata/cache distdir: /mnt/distfiles eapi_when_unknown: 0 eapi_when_unspecified: 0 eclassdirs: /usr/portage/eclass ignore_deprecated_profiles: false layout: traditional names_cache: /usr/portage/.cache/names newsdir: /usr/portage/metadata/news profile_eapi: 0 profiles: /usr/portage/profiles/default/linux/amd64/2008.0 securitydir: /usr/portage/metadata/glsa setsdir: /usr/portage/sets sync: rsync://rsync.gentoo.org/gentoo-portage sync_options: use_manifest: use write_cache: /var/cache/paludis/metadata Package information: app-admin/eselect-compiler: (none) app-shells/bash: 3.2_p33 dev-java/java-config: 1.3.7 2.1.6 dev-lang/python: 2.5.2-r7 dev-python/pycrypto: 2.0.1-r6 dev-util/ccache: (none) dev-util/confcache: (none) sys-apps/baselayout: 1.12.11.1 sys-apps/openrc: (none) sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13 2.61-r2 sys-devel/automake: 1.10.1-r1 1.4_p6 1.5 1.6.3 1.7.9-r1 1.8.5-r3 1.9.6-r2 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 1.5.26 virtual/os-headers: 2.6.23-r3 (for sys-kernel/linux-headers::installed) Repository installed: format: vdb location: /var/db/pkg builddir: /var/tmp/paludis names_cache: /var/db/pkg/.cache/names provides_cache: /var/db/pkg/.cache/provides root: / Repository local: format: ebuild location: /usr/local/portage append_repository_name_to_write_cache: true binary_destination: false binary_keywords: binary_uri_prefix: builddir: /var/tmp/paludis cache: /var/empty distdir: /mnt/distfiles eapi_when_unknown: 0 eapi_when_unspecified: 0 eclassdirs: /usr/portage/eclass /usr/local/portage/eclass ignore_deprecated_profiles: false layout: traditional master_repository: gentoo names_cache: /usr/local/portage/.cache/names newsdir: /usr/local/portage/metadata/news profile_eapi: 0 profiles: /usr/portage/profiles/default/linux/amd64/2008.0 securitydir: /usr/local/portage/metadata/glsa setsdir: /usr/local/portage/sets sync: sync_options: use_manifest: use write_cache: /var/cache/paludis/metadata Package net-misc/networkmanager-0.6.6-r1::installed: >>> Running ebuild phase killoldmisc as paludisbuild:portage... bunzip2 < /var/db/pkg/net-misc/networkmanager-0.6.6-r1/environment.bz2 > /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13700 ebuild_scrub_environment /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13700 ebuild_safe_source /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13700 rm /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13700 >>> Starting builtin_killoldmisc >>> Done builtin_killoldmisc >>> Completed ebuild phase killoldmisc >>> Running ebuild phases initmisc infovars info as paludisbuild:portage... bunzip2 < /var/db/pkg/net-misc/networkmanager-0.6.6-r1/environment.bz2 > /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13754 ebuild_scrub_environment /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13754 ebuild_safe_source /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13754 rm /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13754 >>> Starting builtin_initmisc >>> Done builtin_initmisc >>> Starting builtin_infovars ACCEPT_KEYWORDS=amd64 CBUILD=x86_64-pc-linux-gnu CFLAGS=-march=athlon64 -msse3 -pipe -O2 CHOST=x86_64-pc-linux-gnu CONFIG_PROTECT=/usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown /usr/share/config /etc CONFIG_PROTECT_MASK=/etc/env.d/java/ /etc/udev/rules.d /etc/fonts/fonts.conf /etc/gconf /etc/terminfo /etc/ca-certificates.conf /etc/texmf/web2c /etc/revdep-rebuild /etc/env.d /etc/gconf CPPFLAGS= CTARGET= CXXFLAGS=-march=athlon64 -msse3 -pipe -O2 DISTDIR=/var/db/pkg/net-misc/networkmanager-0.6.6-r1 FEATURES=strict sfperms FFLAGS= GENTOO_MIRRORS= INSTALL_MASK= LANG= LC_ALL=C LDFLAGS=-Wl,-O1 LINGUAS=sl MAKEOPTS=-j1 PORTAGE_COMPRESS= PORTAGE_COMPRESS_FLAGS= PORTAGE_RSYNC_EXTRA_OPTS= PORTAGE_RSYNC_OPTS= PORTAGE_TMPDIR=/var/tmp/paludis PORTDIR=/var/db/pkg/net-misc/networkmanager-0.6.6-r1 PORTDIR_OVERLAY= SYNC= USE=crypt amd64 elibc_glibc linguas_sl alsa_pcm_plugins_adpcm alsa_pcm_plugins_alaw alsa_pcm_plugins_asym alsa_pcm_plugins_copy alsa_pcm_plugins_dmix alsa_pcm_plugins_dshare alsa_pcm_plugins_dsnoop alsa_pcm_plugins_empty alsa_pcm_plugins_extplug alsa_pcm_plugins_file alsa_pcm_plugins_hooks alsa_pcm_plugins_iec958 alsa_pcm_plugins_ioplug alsa_pcm_plugins_ladspa alsa_pcm_plugins_lfloat alsa_pcm_plugins_linear alsa_pcm_plugins_meter alsa_pcm_plugins_mmap_emul alsa_pcm_plugins_mulaw alsa_pcm_plugins_multi alsa_pcm_plugins_null alsa_pcm_plugins_plug alsa_pcm_plugins_rate alsa_pcm_plugins_route alsa_pcm_plugins_share alsa_pcm_plugins_shm alsa_pcm_plugins_softvol apache2_modules_actions apache2_modules_alias apache2_modules_auth_basic apache2_modules_authn_alias apache2_modules_authn_anon apache2_modules_authn_dbm apache2_modules_authn_default apache2_modules_authn_file apache2_modules_authz_dbm apache2_modules_authz_default apache2_modules_authz_groupfile apache2_modules_authz_host apache2_modules_authz_owner apache2_modules_authz_user apache2_modules_autoindex apache2_modules_cache apache2_modules_dav apache2_modules_dav_fs apache2_modules_dav_lock apache2_modules_deflate apache2_modules_dir apache2_modules_disk_cache apache2_modules_env apache2_modules_expires apache2_modules_ext_filter apache2_modules_file_cache apache2_modules_filter apache2_modules_headers apache2_modules_include apache2_modules_info apache2_modules_log_config apache2_modules_logio apache2_modules_mem_cache apache2_modules_mime apache2_modules_mime_magic apache2_modules_negotiation apache2_modules_rewrite apache2_modules_setenvif apache2_modules_speling apache2_modules_status apache2_modules_unique_id apache2_modules_userdir apache2_modules_usertrack apache2_modules_vhost_alias lcd_devices_bayrad lcd_devices_cfontz lcd_devices_cfontz633 lcd_devices_glk lcd_devices_hd44780 lcd_devices_lb216 lcd_devices_lcdm001 lcd_devices_mtxorb lcd_devices_ncurses lcd_devices_text video_cards_radeon input_devices_evdev input_devices_keyboard input_devices_synaptics alsa_cards_ali5451 alsa_cards_als4000 alsa_cards_atiixp alsa_cards_atiixp-modem alsa_cards_bt87x alsa_cards_ca0106 alsa_cards_cmipci alsa_cards_emu10k1x alsa_cards_ens1370 alsa_cards_ens1371 alsa_cards_es1938 alsa_cards_es1968 alsa_cards_fm801 alsa_cards_hda-intel alsa_cards_intel8x0 alsa_cards_intel8x0m alsa_cards_maestro3 alsa_cards_trident alsa_cards_usb-audio alsa_cards_via82xx alsa_cards_via82xx-modem alsa_cards_ymfpci userland_GNU kernel_linux >>> Done builtin_infovars >>> Starting pkg_info No additional information available >>> Done pkg_info >>> Completed ebuild phases initmisc infovars info >>> Running ebuild phase tidyupmisc as paludisbuild:portage... bunzip2 < /var/db/pkg/net-misc/networkmanager-0.6.6-r1/environment.bz2 > /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13830 ebuild_scrub_environment /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13830 ebuild_safe_source /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13830 rm /var/tmp/paludis/environment-net-misc-networkmanager-0.6.6-r1-13830 >>> Starting builtin_tidyupmisc rm -fr /var/tmp/paludis/net-misc-networkmanager-0.6.6-r1-misc >>> Done builtin_tidyupmisc >>> Completed ebuild phase tidyupmisc
Seem to do his job great !
I've been using that patch for over two months now and it seems to work perfectly.
Is this patch still needed with current stable networkmanager-0.7.2 ? (was it ever send to upstream?)
no more needed with networkmanager-0.7.2, seems this bug can be closed
Thanks for feedback