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 753262 - rsvgdec: Leaks output state
rsvgdec: Leaks output state
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
unspecified
Other Linux
: Normal normal
: 1.5.90
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-08-04 21:20 UTC by Carlos Garnacho
Modified: 2015-08-16 13:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
rsvg: Don't leak a GstVideoCodecState (1.05 KB, patch)
2015-08-04 21:21 UTC, Carlos Garnacho
committed Details | Review

Description Carlos Garnacho 2015-08-04 21:20:23 UTC
Bug #748608 uncovered a few leaks, I found one to be in the rsvg plugin, patch coming.

==1526== 48,518 (23,184 direct, 25,334 indirect) bytes in 69 blocks are definitely lost in loss record 9,556 of 9,586
==1526==    at 0x4A06C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==1526==    by 0x5F7B689: g_malloc (gmem.c:97)
==1526==    by 0x5F924D2: g_slice_alloc (gslice.c:1007)
==1526==    by 0x5F92B6D: g_slice_alloc0 (gslice.c:1032)
==1526==    by 0x16E8E350: _new_output_state (gstvideodecoder.c:729)
==1526==    by 0x16E8E350: gst_video_decoder_set_output_state (gstvideodecoder.c:3385)
==1526==    by 0x1A75092D: gst_rsvg_decode_image (gstrsvgdec.c:185)
==1526==    by 0x1A751041: gst_rsvg_dec_handle_frame (gstrsvgdec.c:342)
==1526==    by 0x16E85A65: gst_video_decoder_decode_frame (gstvideodecoder.c:3317)
==1526==    by 0x16E8DCF1: gst_video_decoder_have_frame (gstvideodecoder.c:3249)
==1526==    by 0x16E88A45: gst_video_decoder_parse_available (gstvideodecoder.c:957)
==1526==    by 0x16E88BF3: gst_video_decoder_chain_forward (gstvideodecoder.c:2115)
==1526==    by 0x16E8A7AF: gst_video_decoder_chain (gstvideodecoder.c:2411)
==1526==    by 0x16939CB0: gst_pad_chain_data_unchecked (gstpad.c:4038)
==1526==    by 0x1693B966: gst_pad_push_data (gstpad.c:4282)
==1526==    by 0x175A9E51: gst_type_find_element_loop (gsttypefindelement.c:1127)
==1526==    by 0x1696A820: gst_task_func (gsttask.c:331)
==1526==    by 0x5F9D03D: g_thread_pool_thread_proxy (gthreadpool.c:307)
==1526==    by 0x5F9C6B4: g_thread_proxy (gthread.c:764)
==1526==    by 0x37D7807554: start_thread (pthread_create.c:333)
==1526==    by 0x37D7502B9C: clone (clone.S:109)

==1526== 639,120 (144 direct, 638,976 indirect) bytes in 1 blocks are definitely lost in loss record 9,586 of 9,586
==1526==    at 0x4A06C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==1526==    by 0x5F7B689: g_malloc (gmem.c:97)
==1526==    by 0x5F924D2: g_slice_alloc (gslice.c:1007)
==1526==    by 0x168FFFEC: _sysmem_new (gstallocator.c:391)
==1526==    by 0x168FFFEC: gst_memory_new_wrapped (gstallocator.c:623)
==1526==    by 0x169097D9: gst_buffer_new_wrapped_full (gstbuffer.c:858)
==1526==    by 0x169098FE: gst_buffer_new_wrapped (gstbuffer.c:883)
==1526==    by 0x16BFFAC5: gst_adapter_get_buffer (gstadapter.c:960)
==1526==    by 0x16BFFB8F: gst_adapter_take_buffer (gstadapter.c:1020)
==1526==    by 0x16E8DA37: gst_video_decoder_add_to_frame (gstvideodecoder.c:3144)
==1526==    by 0x1A750EDB: gst_rsvg_dec_parse (gstrsvgdec.c:329)
==1526==    by 0x16E88A45: gst_video_decoder_parse_available (gstvideodecoder.c:957)
==1526==    by 0x16E88BF3: gst_video_decoder_chain_forward (gstvideodecoder.c:2115)
==1526==    by 0x16E8A7AF: gst_video_decoder_chain (gstvideodecoder.c:2411)
==1526==    by 0x16939CB0: gst_pad_chain_data_unchecked (gstpad.c:4038)
==1526==    by 0x1693B966: gst_pad_push_data (gstpad.c:4282)
==1526==    by 0x175A9E51: gst_type_find_element_loop (gsttypefindelement.c:1127)
==1526==    by 0x1696A820: gst_task_func (gsttask.c:331)
==1526==    by 0x5F9D03D: g_thread_pool_thread_proxy (gthreadpool.c:307)
==1526==    by 0x5F9C6B4: g_thread_proxy (gthread.c:764)
==1526==    by 0x37D7807554: start_thread (pthread_create.c:333)
==1526==    by 0x37D7502B9C: clone (clone.S:109)
Comment 1 Carlos Garnacho 2015-08-04 21:21:03 UTC
Created attachment 308755 [details] [review]
rsvg: Don't leak a GstVideoCodecState

There's already the output_state variable with it, no need to
call gst_video_decoder_get_output_state() and get a new ref.
Comment 2 Nicolas Dufresne (ndufresne) 2015-08-04 23:14:54 UTC
Attachment 308755 [details] pushed as 3129396 - rsvg: Don't leak a GstVideoCodecState
Comment 3 Nicolas Dufresne (ndufresne) 2015-08-04 23:15:34 UTC
Thanks