After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 478435 - several memory leaks
several memory leaks
Status: RESOLVED FIXED
Product: goobox
Classification: Other
Component: player
1.9.x
Other Linux
: Normal normal
: ---
Assigned To: Goobox Maintainers
Goobox Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-09-19 21:11 UTC by Felix Riemann
Modified: 2008-04-22 10:18 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
close those leaks (1.43 KB, patch)
2007-09-19 21:15 UTC, Felix Riemann
none Details | Review
enhanced patch (3.34 KB, patch)
2007-09-25 12:28 UTC, Felix Riemann
accepted-commit_now Details | Review

Description Felix Riemann 2007-09-19 21:11:29 UTC
I just had a few spare minutes and fixed these leaks in goobox:

==2658== 2,324 (1,596 direct, 728 indirect) bytes in 21 blocks are definitely lost in loss record 14,657 of 15,326
==2658==    at 0x402398E: calloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==2658==    by 0x4FA976D: g_malloc0 (gmem.c:150)
==2658==    by 0x8081304: track_info_new (track-info.c:40)
==2658==    by 0x808146F: track_info_copy (track-info.c:108)
==2658==    by 0x8064DBE: album_info_get_track (album-info.c:254)
==2658==    by 0x807C95E: player_done_cb (goo-window.c:494)
==2658==    by 0x8056AF7: goo_marshal_VOID__INT_POINTER (goo-marshal.c:84)
==2658==    by 0x4F406C7: g_closure_invoke (gclosure.c:490)
==2658==    by 0x4F54E9C: signal_emit_unlocked_R (gsignal.c:2440)
==2658==    by 0x4F56AA6: g_signal_emit_valist (gsignal.c:2199)
==2658==    by 0x4F56D6F: g_signal_emit_by_name (gsignal.c:2267)
==2658==    by 0x80716F7: action_done (goo-player.c:198)

==6096== 19,252 (52 direct, 19,200 indirect) bytes in 1 blocks are definitely lost in loss record 14,959 of 15,652
==6096==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==6096==    by 0x4FA97F5: g_malloc (gmem.c:131)
==6096==    by 0x4FBDE87: g_slice_alloc (gslice.c:824)
==6096==    by 0x4FBE674: g_slice_alloc0 (gslice.c:833)
==6096==    by 0x4F60BB9: g_type_create_instance (gtype.c:1549)
==6096==    by 0x4F460E1: g_object_constructor (gobject.c:1046)
==6096==    by 0x4F468AD: g_object_newv (gobject.c:937)
==6096==    by 0x4F47467: g_object_new_valist (gobject.c:1027)
==6096==    by 0x4F4756F: g_object_new (gobject.c:795)
==6096==    by 0x4990F83: gdk_pixbuf_new_from_data (gdk-pixbuf-data.c:65)
==6096==    by 0x498F02F: gdk_pixbuf_new (gdk-pixbuf.c:273)
==6096==    by 0x4995923: gdk_pixbuf_scale_simple (gdk-pixbuf-scale.c:254)
==6096==    by 0x49965DE: get_scaled_pixbuf (gdk-pixbuf-scaled-anim.c:141)
==6096==    by 0x4990DC4: gdk_pixbuf_animation_get_static_image (gdk-pixbuf-animation.c:348)
==6096==    by 0x4992858: gdk_pixbuf_new_from_file_at_scale (gdk-pixbuf-io.c:1145)
==6096==    by 0x4992A7D: gdk_pixbuf_new_from_file_at_size (gdk-pixbuf-io.c:1008)
==6096==    by 0x8074248: goo_player_info_set_cover (goo-player-info.c:915)
==6096==    by 0x807435C: window_update_cover_cb (goo-player-info.c:955)

==2658== 10 bytes in 1 blocks are definitely lost in loss record 7,976 of 15,326
==2658==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==2658==    by 0x4FA97F5: g_malloc (gmem.c:131)
==2658==    by 0x4FC14A8: g_strdup (gstrfuncs.c:91)
==2658==    by 0x43C8329: set_string (gconf-value.c:55)
==2658==    by 0x43C959F: gconf_value_copy (gconf-value.c:734)
==2658==    by 0x43D2761: gconf_client_get_full (gconf-client.c:1297)
==2658==    by 0x43D31ED: gconf_client_get_string (gconf-client.c:1485)
==2658==    by 0x806F3FA: eel_gconf_get_string (gconf-utils.c:316)
==2658==    by 0x8080E52: preferences_get_sort_type (preferences.c:233)
==2658==    by 0x807A740: goo_window_new (goo-window.c:2305)
==2658==    by 0x8080232: main (main.c:362)

==4340== 21 bytes in 21 blocks are definitely lost in loss record 3,753 of 15,649
==4340==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==4340==    by 0x4FA97F5: g_malloc (gmem.c:131)
==4340==    by 0x4FC14A8: g_strdup (gstrfuncs.c:91)
==4340==    by 0x80811EB: track_info_set_artist (track-info.c:155)
==4340==    by 0x80814A6: track_info_copy (track-info.c:110)
==4340==    by 0x8064DBE: album_info_get_track (album-info.c:254)
==4340==    by 0x807C96E: player_done_cb (goo-window.c:494)
==4340==    by 0x8056AF7: goo_marshal_VOID__INT_POINTER (goo-marshal.c:84)
==4340==    by 0x4F406C7: g_closure_invoke (gclosure.c:490)
==4340==    by 0x4F54E9C: signal_emit_unlocked_R (gsignal.c:2440)
==4340==    by 0x4F56AA6: g_signal_emit_valist (gsignal.c:2199)
==4340==    by 0x4F56D6F: g_signal_emit_by_name (gsignal.c:2267)
==4340==    by 0x8071707: action_done (goo-player.c:198)
==4340==    by 0x8072564: check_get_cd_tracks (goo-player.c:872)

The PID differs as these are from different runs.
The last two showed up several times per run.
Comment 1 Felix Riemann 2007-09-19 21:15:07 UTC
Created attachment 95870 [details] [review]
close those leaks

This patch is supposed to fix those leaks.
The chunk order should match the leak order from above.
Comment 2 Felix Riemann 2007-09-25 12:28:43 UTC
Created attachment 96165 [details] [review]
enhanced patch

This is an enhanced version of the first patch which tries to fix the follwing leaks as well.

==17117== 3,118 (36 direct, 3,082 indirect) bytes in 3 blocks are definitely lost in loss record 3,725 of 16,650
==17117==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB87F5: g_malloc (gmem.c:131)
==17117==    by 0x4FCCE87: g_slice_alloc (gslice.c:824)
==17117==    by 0x4FAEDA1: g_list_copy (glist.c:314)
==17117==    by 0x8081118: track_list_dup (track-info.c:179)
==17117==    by 0x8064DF5: album_info_set_tracks (album-info.c:231)
==17117==    by 0x8080CC5: get_album_list (metadata.c:126)
==17117==    by 0x806972E: search_cb (dlg-properties.c:279)
==17117==    by 0x4F5C97E: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
==17117==    by 0x4F4F6C7: g_closure_invoke (gclosure.c:490)
==17117==    by 0x4F63E9C: signal_emit_unlocked_R (gsignal.c:2440)
==17117==    by 0x4F65AA6: g_signal_emit_valist (gsignal.c:2199)
==17117==    by 0x4F65DF8: g_signal_emit (gsignal.c:2243)

==17117== 222 bytes in 6 blocks are definitely lost in loss record 3,980 of 16,650
==17117==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB87F5: g_malloc (gmem.c:131)
==17117==    by 0x4FD04A8: g_strdup (gstrfuncs.c:91)
==17117==    by 0x8064F7F: album_info_set_id (album-info.c:124)
==17117==    by 0x80807A4: get_album_list (metadata.c:51)
==17117==    by 0x806972E: search_cb (dlg-properties.c:279)
==17117==    by 0x4F5C97E: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
==17117==    by 0x4F4F6C7: g_closure_invoke (gclosure.c:490)
==17117==    by 0x4F63E9C: signal_emit_unlocked_R (gsignal.c:2440)
==17117==    by 0x4F65AA6: g_signal_emit_valist (gsignal.c:2199)
==17117==    by 0x4F65DF8: g_signal_emit (gsignal.c:2243)

==17117== 16 bytes in 1 blocks are definitely lost in loss record 5,276 of 16,650
==17117==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB87F5: g_malloc (gmem.c:131)
==17117==    by 0x4FD04A8: g_strdup (gstrfuncs.c:91)
==17117==    by 0x806CEF8: get_temp_work_dir (file-utils.c:1020)
==17117==    by 0x806562F: fetch_cover_image_from_name (dlg-cover-chooser.c:809)
==17117==    by 0x807CAEC: player_done_cb (goo-window.c:1667)
==17117==    by 0x8056AF7: goo_marshal_VOID__INT_POINTER (goo-marshal.c:84)
==17117==    by 0x4F4F6C7: g_closure_invoke (gclosure.c:490)
==17117==    by 0x4F63E9C: signal_emit_unlocked_R (gsignal.c:2440)
==17117==    by 0x4F65AA6: g_signal_emit_valist (gsignal.c:2199)
==17117==    by 0x4F65D6F: g_signal_emit_by_name (gsignal.c:2267)
==17117==    by 0x8071707: action_done (goo-player.c:198)
==17117==    by 0x80723D1: goo_player_set_album (goo-player.c:645)

==17117== 74 bytes in 1 blocks are definitely lost in loss record 8,503 of 16,650
==17117==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB87F5: g_malloc (gmem.c:131)
==17117==    by 0x4FD0D92: g_strconcat (gstrfuncs.c:258)
==17117==    by 0x807BE21: goo_window_get_cover_filename (goo-window.c:1498)
==17117==    by 0x807CA6E: player_done_cb (goo-window.c:1655)
==17117==    by 0x8056AF7: goo_marshal_VOID__INT_POINTER (goo-marshal.c:84)
==17117==    by 0x4F4F6C7: g_closure_invoke (gclosure.c:490)
==17117==    by 0x4F63E9C: signal_emit_unlocked_R (gsignal.c:2440)
==17117==    by 0x4F65AA6: g_signal_emit_valist (gsignal.c:2199)
==17117==    by 0x4F65D6F: g_signal_emit_by_name (gsignal.c:2267)
==17117==    by 0x8071707: action_done (goo-player.c:198)
==17117==    by 0x80723D1: goo_player_set_album (goo-player.c:645)

==17117== 12 bytes in 1 blocks are definitely lost in loss record 8,824 of 16,650
==17117==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB87F5: g_malloc (gmem.c:131)
==17117==    by 0x4FD04A8: g_strdup (gstrfuncs.c:91)
==17117==    by 0x80795FC: window_update_title (goo-window.c:1449)
==17117==    by 0x807C884: player_done_cb (goo-window.c:1709)
==17117==    by 0x8056AF7: goo_marshal_VOID__INT_POINTER (goo-marshal.c:84)
==17117==    by 0x4F4F6C7: g_closure_invoke (gclosure.c:490)
==17117==    by 0x4F63E9C: signal_emit_unlocked_R (gsignal.c:2440)
==17117==    by 0x4F65AA6: g_signal_emit_valist (gsignal.c:2199)
==17117==    by 0x4F65D6F: g_signal_emit_by_name (gsignal.c:2267)
==17117==    by 0x8071707: action_done (goo-player.c:198)
==17117==    by 0x80730D0: cdrom_state_changed_cb (goo-player.c:552)

==17117== 32 bytes in 1 blocks are definitely lost in loss record 8,909 of 16,650
==17117==    at 0x4024942: realloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB86CA: g_realloc (gmem.c:168)
==17117==    by 0x4FD14E9: g_string_maybe_expand (gstring.c:359)
==17117==    by 0x4FD1F99: g_string_insert_len (gstring.c:694)
==17117==    by 0x4FD2370: g_string_append (gstring.c:733)
==17117==    by 0x4FA285A: g_build_path_va (gfileutils.c:1522)
==17117==    by 0x4FA28EF: g_build_filename (gfileutils.c:1794)
==17117==    by 0x8065E61: auto_fetch__search_result_saved_cb (dlg-cover-chooser.c:764)
==17117==    by 0x806585C: copy_progress_update_cb (dlg-cover-chooser.c:153)
==17117==    by 0x426BAA1: dispatch_sync_job_callback (gnome-vfs-job.c:283)
==17117==    by 0x4FAF370: g_idle_dispatch (gmain.c:4132)
==17117==    by 0x4FB0F44: g_main_context_dispatch (gmain.c:2061)

==17117== 8,192 bytes in 1 blocks are definitely lost in loss record 16,629 of 16,650
==17117==    at 0x4024868: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x40249BC: realloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==17117==    by 0x4FB86CA: g_realloc (gmem.c:168)
==17117==    by 0x4FD14E9: g_string_maybe_expand (gstring.c:359)
==17117==    by 0x4FD24F0: g_string_sized_new (gstring.c:384)
==17117==    by 0x4FAA271: g_key_file_to_data (gkeyfile.c:1014)
==17117==    by 0x807BEFD: goo_window_set_current_cd_autofetch (goo-window.c:1559)
==17117==    by 0x807CA63: player_done_cb (goo-window.c:1653)
==17117==    by 0x8056AF7: goo_marshal_VOID__INT_POINTER (goo-marshal.c:84)
==17117==    by 0x4F4F6C7: g_closure_invoke (gclosure.c:490)
==17117==    by 0x4F63E9C: signal_emit_unlocked_R (gsignal.c:2440)
==17117==    by 0x4F65AA6: g_signal_emit_valist (gsignal.c:2199)
==17117==    by 0x4F65D6F: g_signal_emit_by_name (gsignal.c:2267)
==17117==    by 0x8071707: action_done (goo-player.c:198)
==17117==    by 0x80723D1: goo_player_set_album (goo-player.c:645)

Some of them appear several times and with varying amounts of lost data in Valgrind's log.
Comment 3 Paolo Bacchilega 2007-09-26 06:20:28 UTC
thanks Felix, I'll apply the patch to svn as soon as possible.
Comment 4 Paolo Bacchilega 2008-04-22 10:18:45 UTC
patch applied to trunk, thanks again.