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 514889 - Bogus output from RTP data test
Bogus output from RTP data test
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal blocker
: 0.10.7
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 515957 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-02-06 23:30 UTC by Jan Schmidt
Modified: 2008-02-13 07:36 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch to fix the problem (1.37 KB, patch)
2008-02-12 10:27 UTC, Wim Taymans
committed Details | Review
patch to fix various leaks (10.83 KB, patch)
2008-02-12 14:58 UTC, Wim Taymans
committed Details | Review

Description Jan Schmidt 2008-02-06 23:30:44 UTC
This output doesn't cause the test to fail, but it'd be nice to shut it up if it's expected-good behaviour in the absence of an AMR decoder:

Running suite(s): rtp_data_test

Error from element rtpamrpay0: The stream is in the wrong format.
gstrtpamrpay.c(348): gst_rtp_amr_pay_handle_buffer (): /rtpamrpay-rtpamrdepay-pipeline/rtpamrpay0:
received incomplete AMR frames


Error from element fdsrc0: Internal data flow error.
gstbasesrc.c(2165): gst_base_src_loop (): /rtpmp4gpay-rtpmp4gdepay-pipeline/fdsrc0:
streaming task paused, reason not-negotiated (-4)
Comment 1 Tim-Philipp Müller 2008-02-12 09:22:01 UTC
*** Bug 515957 has been marked as a duplicate of this bug. ***
Comment 2 Sebastian Dröge (slomo) 2008-02-12 09:38:52 UTC
It doesn't seem to be caused by the absence of a AMR decoder, instead the test data that is used are just zeroes which is not accepted as valid AMR data by rtpamrpay.

Not sure what's wrong with the mp4g part but I guess it's the same issue.

Marking as blocker as we probably should have a) a clean unit test suite for release and b) the tests should actually fail on these errors as nothing worked.
Comment 3 Wim Taymans 2008-02-12 10:27:55 UTC
Created attachment 105023 [details] [review]
patch to fix the problem

- Actually send valid amr data to the payloader instead of 20 zero-bytes
- The mp4g payloader expects codec_data on the caps
Comment 4 Sebastian Dröge (slomo) 2008-02-12 10:42:10 UTC
Works fine for me... but why were the tests not failing before and only those messages were printed?

Apart from that it seems to leak buffers:

==13050== 
==13050== 280 (80 direct, 200 indirect) bytes in 1 blocks are definitely lost in loss record 5,727 of 5,848
==13050==    at 0x4024AB8: malloc (vg_replace_malloc.c:207)
==13050==    by 0x42C994C: g_malloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13050==    by 0x42DEBAD: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13050==    by 0x42DF3B4: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.1505.0)
==13050==    by 0x4143C96: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1505.0)
==13050==    by 0x407C744: gst_mini_object_new (gstminiobject.c:181)
==13050==    by 0x405D2F4: gst_buffer_new (gstbuffer.c:291)
==13050==    by 0x405D931: gst_buffer_new_and_alloc (gstbuffer.c:320)
==13050==    by 0x4A395EF: gst_fd_src_create (gstfdsrc.c:380)
==13050==    by 0x4A79174: gst_push_src_create (gstpushsrc.c:117)
==13050==    by 0x4A6AD68: gst_base_src_get_range (gstbasesrc.c:1776)
==13050==    by 0x4A6EAEE: gst_base_src_loop (gstbasesrc.c:2018)
==13050==    by 0x409CB2F: gst_task_func (gsttask.c:192)
==13050==    by 0x42EB58A: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13050==    by 0x42E98FE: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13050==    by 0x433E4FA: start_thread (in /lib/i686/cmov/libpthread-2.7.so)
==13050==    by 0x442793D: clone (in /lib/i686/cmov/libc-2.7.so)
==13084== 
==13084== 248 (80 direct, 168 indirect) bytes in 1 blocks are definitely lost in loss record 5,660 of 5,846
==13084==    at 0x4024AB8: malloc (vg_replace_malloc.c:207)
==13084==    by 0x42C994C: g_malloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13084==    by 0x42DEBAD: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13084==    by 0x42DF3B4: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.1505.0)
==13084==    by 0x4143C96: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1505.0)
==13084==    by 0x407C744: gst_mini_object_new (gstminiobject.c:181)
==13084==    by 0x405D2F4: gst_buffer_new (gstbuffer.c:291)
==13084==    by 0x405D931: gst_buffer_new_and_alloc (gstbuffer.c:320)
==13084==    by 0x4A395EF: gst_fd_src_create (gstfdsrc.c:380)
==13084==    by 0x4A79174: gst_push_src_create (gstpushsrc.c:117)
==13084==    by 0x4A6AD68: gst_base_src_get_range (gstbasesrc.c:1776)
==13084==    by 0x4A6EAEE: gst_base_src_loop (gstbasesrc.c:2018)
==13084==    by 0x409CB2F: gst_task_func (gsttask.c:192)
==13084==    by 0x42EB58A: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13084==    by 0x42E98FE: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13084==    by 0x433E4FA: start_thread (in /lib/i686/cmov/libpthread-2.7.so)
==13084==    by 0x442793D: clone (in /lib/i686/cmov/libc-2.7.so)
==13104== 
==13104== 85 (80 direct, 5 indirect) bytes in 1 blocks are definitely lost in loss record 5,454 of 5,869
==13104==    at 0x4024AB8: malloc (vg_replace_malloc.c:207)
==13104==    by 0x42C994C: g_malloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13104==    by 0x42DEBAD: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13104==    by 0x42DF3B4: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.1505.0)
==13104==    by 0x4143C96: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1505.0)
==13104==    by 0x407C744: gst_mini_object_new (gstminiobject.c:181)
==13104==    by 0x405D2F4: gst_buffer_new (gstbuffer.c:291)
==13104==    by 0x405DDD5: _gst_buffer_copy (gstbuffer.c:249)
==13104==    by 0x407C6A0: gst_mini_object_copy (gstminiobject.c:209)
==13104==    by 0x4AB4CA1: gst_rtp_mp4g_pay_setcaps (gstrtpmp4gpay.c:398)
==13104==    by 0x4AD2BC1: gst_basertppayload_setcaps (gstbasertppayload.c:298)
==13104==    by 0x4081267: gst_pad_set_caps (gstpad.c:2383)
==13104==    by 0x4082AB9: gst_pad_chain_unchecked (gstpad.c:2437)
==13104==    by 0x4082FB5: gst_pad_push (gstpad.c:3691)
==13104==    by 0x4A7426D: gst_base_transform_chain (gstbasetransform.c:1610)
==13104==    by 0x40828E8: gst_pad_chain_unchecked (gstpad.c:3523)
==13104==    by 0x4082FB5: gst_pad_push (gstpad.c:3691)
==13104==    by 0x4A6EB80: gst_base_src_loop (gstbasesrc.c:2111)
==13104==    by 0x409CB2F: gst_task_func (gsttask.c:192)
==13104==    by 0x42EB58A: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13104== 
==13104== 
==13104== 85 (80 direct, 5 indirect) bytes in 1 blocks are definitely lost in loss record 5,455 of 5,869
==13104==    at 0x4024AB8: malloc (vg_replace_malloc.c:207)
==13104==    by 0x42C994C: g_malloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13104==    by 0x42DEBAD: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13104==    by 0x42DF3B4: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.1505.0)
==13104==    by 0x4143C96: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1505.0)
==13104==    by 0x407C744: gst_mini_object_new (gstminiobject.c:181)
==13104==    by 0x405D2F4: gst_buffer_new (gstbuffer.c:291)
==13104==    by 0x405D931: gst_buffer_new_and_alloc (gstbuffer.c:320)
==13104==    by 0x40A82E3: gst_value_deserialize_buffer (gstvalue.c:1411)
==13104==    by 0x40ACD72: gst_value_deserialize (gstvalue.c:3309)
==13104==    by 0x4AB3E53: gst_rtp_mp4g_depay_setcaps (gstrtpmp4gdepay.c:222)
==13104==    by 0x4AD47EC: gst_base_rtp_depayload_setcaps (gstbasertpdepayload.c:236)
==13104==    by 0x4081267: gst_pad_set_caps (gstpad.c:2383)
==13104==    by 0x4082AB9: gst_pad_chain_unchecked (gstpad.c:2437)
==13104==    by 0x4082FB5: gst_pad_push (gstpad.c:3691)
==13104==    by 0x4AD1997: gst_basertppayload_push (gstbasertppayload.c:688)
==13104==    by 0x4AB49F3: gst_rtp_mp4g_pay_handle_buffer (gstrtpmp4gpay.c:509)
==13104==    by 0x4AD29E1: gst_basertppayload_chain (gstbasertppayload.c:397)
==13104==    by 0x40828E8: gst_pad_chain_unchecked (gstpad.c:3523)
==13104==    by 0x4082FB5: gst_pad_push (gstpad.c:3691)
==13108== 
==13108== 248 (80 direct, 168 indirect) bytes in 1 blocks are definitely lost in loss record 5,707 of 5,909
==13108==    at 0x4024AB8: malloc (vg_replace_malloc.c:207)
==13108==    by 0x42C994C: g_malloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13108==    by 0x42DEBAD: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13108==    by 0x42DF3B4: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.1505.0)
==13108==    by 0x4143C96: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1505.0)
==13108==    by 0x407C744: gst_mini_object_new (gstminiobject.c:181)
==13108==    by 0x405D2F4: gst_buffer_new (gstbuffer.c:291)
==13108==    by 0x405D931: gst_buffer_new_and_alloc (gstbuffer.c:320)
==13108==    by 0x4A395EF: gst_fd_src_create (gstfdsrc.c:380)
==13108==    by 0x4A79174: gst_push_src_create (gstpushsrc.c:117)
==13108==    by 0x4A6AD68: gst_base_src_get_range (gstbasesrc.c:1776)
==13108==    by 0x4A6EAEE: gst_base_src_loop (gstbasesrc.c:2018)
==13108==    by 0x409CB2F: gst_task_func (gsttask.c:192)
==13108==    by 0x42EB58A: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13108==    by 0x42E98FE: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13108==    by 0x433E4FA: start_thread (in /lib/i686/cmov/libpthread-2.7.so)
==13108==    by 0x442793D: clone (in /lib/i686/cmov/libc-2.7.so)
==13112== 
==13112== 248 (80 direct, 168 indirect) bytes in 1 blocks are definitely lost in loss record 5,707 of 5,909
==13112==    at 0x4024AB8: malloc (vg_replace_malloc.c:207)
==13112==    by 0x42C994C: g_malloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13112==    by 0x42DEBAD: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.1505.0)
==13112==    by 0x42DF3B4: g_slice_alloc0 (in /usr/lib/libglib-2.0.so.0.1505.0)
==13112==    by 0x4143C96: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.1505.0)
==13112==    by 0x407C744: gst_mini_object_new (gstminiobject.c:181)
==13112==    by 0x405D2F4: gst_buffer_new (gstbuffer.c:291)
==13112==    by 0x405D931: gst_buffer_new_and_alloc (gstbuffer.c:320)
==13112==    by 0x4A395EF: gst_fd_src_create (gstfdsrc.c:380)
==13112==    by 0x4A79174: gst_push_src_create (gstpushsrc.c:117)
==13112==    by 0x4A6AD68: gst_base_src_get_range (gstbasesrc.c:1776)
==13112==    by 0x4A6EAEE: gst_base_src_loop (gstbasesrc.c:2018)
==13112==    by 0x409CB2F: gst_task_func (gsttask.c:192)
==13112==    by 0x42EB58A: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13112==    by 0x42E98FE: (within /usr/lib/libglib-2.0.so.0.1505.0)
==13112==    by 0x433E4FA: start_thread (in /lib/i686/cmov/libpthread-2.7.so)
==13112==    by 0x442793D: clone (in /lib/i686/cmov/libc-2.7.so)
100%: Checks: 15, Failures: 0, Errors: 0
Comment 5 Wim Taymans 2008-02-12 11:01:59 UTC
Why didn't it fail before? no idea, the payloader are not changed. The test is a new thing in 0.10.7, though.
Comment 6 Tim-Philipp Müller 2008-02-12 11:08:43 UTC
The test failed and leaked from the moment it was committed.
Comment 7 Wim Taymans 2008-02-12 14:58:17 UTC
Created attachment 105055 [details] [review]
patch to fix various leaks

- free sprops and buffer in error cases in H264 payloader
- fix leak in mp4g depayloader when construction the caps
- don't leak config string in the mp4g payloader
- don't leak buffers and headers in theora and vorbis payloaders
Comment 8 Jan Schmidt 2008-02-12 15:53:49 UTC
Will test if this makes all the leaks disappear for me later unless someone else can confirm first. They look fine, from review.
Comment 9 Jan Schmidt 2008-02-12 23:37:41 UTC
I still see one buffer leaked but that's the fix in -base.

Committed:
        patch by:  Wim Taymans  <wim.taymans@collabora.co.uk>
        fixes: #514889

        * gst/rtp/gstrtph264pay.c:
        * gst/rtp/gstrtpmp4gdepay.c:
        * gst/rtp/gstrtpmp4gpay.c:
        * gst/rtp/gstrtpmp4gpay.h:
        * gst/rtp/gstrtptheorapay.c:
        * gst/rtp/gstrtpvorbispay.c:

        Fix various leaks shown up in valgrind
        - free sprops and buffer in error cases in H264 payloader
        - fix leak in mp4g depayloader when construction the caps
        - don't leak config string in the mp4g payloader
        - don't leak buffers and headers in theora and vorbis payloaders

        * tests/check/elements/rtp-payloading.c:

        Fix the RTP data test
        - Actually send valid amr data to the payloader instead of 20
        zero-bytes
        - The mp4g payloader expects codec_data on the caps