balazskreith / gst-mprtp

Gstreamer plugin for MPRTP protocol, FRACTaL congestion control algorithm
Other
12 stars 5 forks source link

leakage on sndpacket_setup_mprtp #25

Open smsajjadi opened 3 years ago

smsajjadi commented 3 years ago

Hi

I have been testing this code for a while. It seems to me that the function sndpacket_setup_mprtp is leaking some memory. Valgrind reports:

 27,656,761 bytes in 38,047 blocks are indirectly lost in loss record 8,439 of 8,442
    at 0x48481E0: malloc (vg_replace_malloc.c:309)
    by 0x4AC9B6F: g_malloc (gmem.c:99)
    by 0x4AE2383: g_slice_alloc (gslice.c:1024)
    by 0x48989AB: _sysmem_new_block (gstallocator.c:413)
    by 0x4898ABB: _sysmem_copy (gstallocator.c:459)
    by 0x5569B2F: ensure_buffers (gstrtpbuffer.c:805)
    by 0x5569B2F: gst_rtp_buffer_set_extension_data (gstrtpbuffer.c:846)
    by 0x556A503: gst_rtp_buffer_add_extension_onebyte_header (gstrtpbuffer.c:1557)
    by 0x54FFFB3: gst_rtp_buffer_set_mprtp_extension (mprtputils.c:37)
    by 0x5509127: sndpacket_setup_mprtp (sndpackets.c:206)
    by 0x54E105F: gst_mprtpscheduler_rtp_sink_chain (gstmprtpscheduler.c:782)
    by 0x48E4517: gst_pad_chain_data_unchecked (gstpad.c:4327)
    by 0x48E6137: gst_pad_push_data (gstpad.c:4583)

AND

 8,299,357 (1,289,947 direct, 7,009,410 indirect) bytes in 2,101 blocks are definitely lost in loss record 8,433 of 8,442
    at 0x48481E0: malloc (vg_replace_malloc.c:309)
    by 0x4AC9B6F: g_malloc (gmem.c:99)
    by 0x4AE2383: g_slice_alloc (gslice.c:1024)
    by 0x48989AB: _sysmem_new_block (gstallocator.c:413)
    by 0x4898ABB: _sysmem_copy (gstallocator.c:459)
    by 0x5569B2F: ensure_buffers (gstrtpbuffer.c:805)
    by 0x5569B2F: gst_rtp_buffer_set_extension_data (gstrtpbuffer.c:846)
    by 0x556A503: gst_rtp_buffer_add_extension_onebyte_header (gstrtpbuffer.c:1557)
    by 0x54FFFB3: gst_rtp_buffer_set_mprtp_extension (mprtputils.c:37)
    by 0x5509127: sndpacket_setup_mprtp (sndpackets.c:206)
    by 0x54E105F: gst_mprtpscheduler_rtp_sink_chain (gstmprtpscheduler.c:782)
    by 0x48E4517: gst_pad_chain_data_unchecked (gstpad.c:4327)
    by 0x48E6137: gst_pad_push_data (gstpad.c:4583)

This type of report with indirectly lost, possibly lost or definitely lost reports, is repeated 8 times in my log, and when running longer, the size of loss gets bigger.

I think there must be some unreffing missing somewhere, but I yet don't get it. Have you noticed such loss?

balazskreith commented 2 years ago

Thank you very much for reporting this issue. I have not played with it for a while, hopefully getting some look and reply properly. Thank you again!