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 705760 - rtspsrc produces GLib error
rtspsrc produces GLib error
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.1.3
Other Linux
: Normal normal
: 1.1.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-08-10 16:43 UTC by Andrew
Modified: 2013-08-13 13:00 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Andrew 2013-08-10 16:43:06 UTC
Hi.
I've stumbled upon a bug introduced between GStreamer 1.1.2 and 1.1.3. Symptom is rtspsrc element isn't working, aborting any application with message

GLib:ERROR:/tmp/buildd/glib2.0-2.33.12+really2.32.4/./glib/gchecksum.c:1321:g_checksum_get_string:code should not be reached

and backtrace looking like

  • #1 abort
    from /lib/x86_64-linux-gnu/libc.so.6
  • #2 g_assertion_message
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #3 g_checksum_get_string
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #4 gst_rtspsrc_handle_data
    at gstrtspsrc.c line 3908
  • #5 gst_rtspsrc_loop_interleaved
    at gstrtspsrc.c line 4060
  • #6 gst_rtspsrc_loop
    at gstrtspsrc.c line 4484
  • #7 gst_rtspsrc_thread
    at gstrtspsrc.c line 6971
  • #8 gst_task_func
    at gsttask.c line 316
  • #9 ??
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #10 ??
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  • #11 start_thread
    from /lib/x86_64-linux-gnu/libpthread.so.0
  • #12 clone
    from /lib/x86_64-linux-gnu/libc.so.6
  • #13 ??

I've digged in sources of gst_rtspsrc_handle_data() and found the bug: prior 1.1.2, there were some manipulations with GChecksum: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/rtsp/gstrtspsrc.c?id=1.1.2#n3898 with the following call of g_checksum_free(), in 1.1.3 this manipulations were put in for loop (line 3904) for all streams: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/rtsp/gstrtspsrc.c?id=1.1.3#n3900 , but the call of g_checksum_free() got into the loop body, so checksum gets invalid after first loop iteration.

The fix would be simple - just move g_checksum_free() out of streams loop body.
Comment 1 Sebastian Dröge (slomo) 2013-08-13 10:44:50 UTC
commit 282afae2447aa750565b44ee4741acb0993ae32b
Author: Sebastian Dröge <slomo@circular-chaos.org>
Date:   Tue Aug 13 12:44:11 2013 +0200

    rtspsrc: Only free GCheckSum after its last usage
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705760
Comment 2 Andrew 2013-08-13 13:00:14 UTC
Thanks, Sebastian!