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 771198 - mpegtsdemux: Trying to set NULL string on field 'title' on taglist
mpegtsdemux: Trying to set NULL string on field 'title' on taglist
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: 1.8.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-09-10 17:20 UTC by minfrin
Modified: 2016-11-02 10:54 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Handle the case when gst_mpegts_descriptor_parse_dvb_short_event() returns a NULL name. (2.06 KB, patch)
2016-09-11 00:08 UTC, minfrin
committed Details | Review

Description minfrin 2016-09-10 17:20:44 UTC
While reading an RTP stream off the latest git master, the following crash occurs:

Starting program: /usr/local/bin/gst-launch-1.0 --gst-debug=1,videotag:1,souphttpclientsink:2,pixelsample:1 udpsrc multicast-iface=eth0 uri=udp://239.106.0.7:1234 caps=application/x-rtp,media=\(string\)video,clock-rate=\(int\)90000 \! rtpbin \! rtpmp2tdepay \! progressreport update-freq=5 \! tsparse \! fakesink
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Setting pipeline to PAUSED ...
[New Thread 0x762ba460 (LWP 12601)]
Pipeline is live and does not need PREROLL ...
[New Thread 0x758ff460 (LWP 12602)]
Setting pipeline to PLAYING ...
[New Thread 0x74eff460 (LWP 12603)]
New clock: GstSystemClock
[New Thread 0x746ff460 (LWP 12604)]
[New Thread 0x73eff460 (LWP 12605)]
[New Thread 0x734ff460 (LWP 12606)]

(gst-launch-1.0:12598): GStreamer-WARNING **: Trying to set NULL string on field 'title' on taglist. Please file a bug.

Program received signal SIGTRAP, Trace/breakpoint trap.

Thread 1945105504 (LWP 12605)

  • #0 raise
    at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c line 37
  • #1 g_logv
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
  • #2 g_log
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
  • #3 gst_structure_set_field
    at gststructure.c line 787
  • #4 gst_structure_id_set_value_internal
    at gststructure.c line 480
  • #5 gst_structure_id_set_value
    at gststructure.c line 502
  • #6 gst_tag_list_add_value_internal
    at gsttaglist.c line 1113
  • #7 gst_tag_list_add_valist
    at gsttaglist.c line 1328
  • #8 gst_tag_list_new
    at gsttaglist.c line 806
  • #9 mpegts_base_get_tags_from_eit
    at mpegtsbase.c line 1031
  • #10 mpegts_base_handle_psi
    at mpegtsbase.c line 952
  • #11 mpegts_base_chain
    at mpegtsbase.c line 1194
  • #12 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #13 gst_pad_push_data
    at gstpad.c line 4457
  • #14 gst_pad_push
    at gstpad.c line 4576
  • #15 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #16 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #17 gst_pad_push_data
    at gstpad.c line 4457
  • #18 gst_pad_push
    at gstpad.c line 4576
  • #19 gst_rtp_base_depayload_push
    at gstrtpbasedepayload.c line 823
  • #20 gst_rtp_base_depayload_handle_buffer
    at gstrtpbasedepayload.c line 477
  • #21 gst_rtp_base_depayload_chain
    at gstrtpbasedepayload.c line 536
  • #22 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #23 gst_pad_push_data
    at gstpad.c line 4457
  • #24 gst_pad_push
    at gstpad.c line 4576
  • #25 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #26 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #27 gst_pad_push_data
    at gstpad.c line 4457
  • #28 gst_pad_push
    at gstpad.c line 4576
  • #29 gst_rtp_pt_demux_chain
    at gstrtpptdemux.c line 442
  • #30 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #31 gst_pad_push_data
    at gstpad.c line 4457
  • #32 gst_pad_push
    at gstpad.c line 4576
  • #33 pop_and_push_next
    at gstrtpjitterbuffer.c line 3166
  • #34 handle_next_buffer
    at gstrtpjitterbuffer.c line 3265
  • #35 gst_rtp_jitter_buffer_loop
    at gstrtpjitterbuffer.c line 3724
  • #36 gst_task_func
    at gsttask.c line 334
  • #37 default_func
    at gsttaskpool.c line 68
  • #38 ??
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0

Comment 1 minfrin 2016-09-10 17:22:34 UTC
Full backtrace:

(gdb) bt full
  • #0 raise
    at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c line 37
  • #1 g_logv
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
  • #2 g_log
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
  • #3 gst_structure_set_field
    at gststructure.c line 787
  • #4 gst_structure_id_set_value_internal
    at gststructure.c line 480
  • #5 gst_structure_id_set_value
    at gststructure.c line 502
  • #6 gst_tag_list_add_value_internal
    at gsttaglist.c line 1113
  • #7 gst_tag_list_add_valist
    at gsttaglist.c line 1328
  • #8 gst_tag_list_new
    at gsttaglist.c line 806
  • #9 mpegts_base_get_tags_from_eit
    at mpegtsbase.c line 1031
  • #10 mpegts_base_handle_psi
    at mpegtsbase.c line 952
  • #11 mpegts_base_chain
    at mpegtsbase.c line 1194
  • #12 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #13 gst_pad_push_data
    at gstpad.c line 4457
  • #14 gst_pad_push
    at gstpad.c line 4576
  • #15 gst_base_transform_chain
    at gstbasetransform.c line 2369
  • #16 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #17 gst_pad_push_data
    at gstpad.c line 4457
  • #18 gst_pad_push
    at gstpad.c line 4576
  • #19 gst_rtp_base_depayload_push
    at gstrtpbasedepayload.c line 823
  • #20 gst_rtp_base_depayload_handle_buffer
    at gstrtpbasedepayload.c line 477
  • #21 gst_rtp_base_depayload_chain
    at gstrtpbasedepayload.c line 536
  • #22 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #23 gst_pad_push_data
    at gstpad.c line 4457
  • #24 gst_pad_push
    at gstpad.c line 4576
  • #25 gst_proxy_pad_chain_default
    at gstghostpad.c line 126
  • #26 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #27 gst_pad_push_data
    at gstpad.c line 4457
  • #28 gst_pad_push
    at gstpad.c line 4576
  • #29 gst_rtp_pt_demux_chain
    at gstrtpptdemux.c line 442
  • #30 gst_pad_chain_data_unchecked
    at gstpad.c line 4205
  • #31 gst_pad_push_data
    at gstpad.c line 4457
  • #32 gst_pad_push
    at gstpad.c line 4576
  • #33 pop_and_push_next
    at gstrtpjitterbuffer.c line 3166
  • #34 handle_next_buffer
    at gstrtpjitterbuffer.c line 3265
  • #35 gst_rtp_jitter_buffer_loop
    at gstrtpjitterbuffer.c line 3724
  • #36 gst_task_func
    at gsttask.c line 334
  • #37 default_func
    at gsttaskpool.c line 68
  • #38 ??
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Comment 2 minfrin 2016-09-10 17:43:35 UTC
The name being returned by gst_mpegts_descriptor_parse_dvb_short_event() seems to be NULL.

        program->event_id = event->event_id;
        if ((desc =
                gst_mpegts_find_descriptor (event->descriptors,
                    GST_MTS_DESC_DVB_SHORT_EVENT))) {
          gchar *name;
          if (gst_mpegts_descriptor_parse_dvb_short_event (desc, NULL, &name,
                  NULL)) {
            /* FIXME : Is it correct to post an event duration as a GST_TAG_DURATION ??? */
            program->tags =
                gst_tag_list_new (GST_TAG_TITLE, name, GST_TAG_DURATION,
                event->duration * GST_SECOND, NULL);
            g_free (name);
            return TRUE;
          }
        }
Comment 3 minfrin 2016-09-11 00:08:48 UTC
Created attachment 335288 [details] [review]
Handle the case when  gst_mpegts_descriptor_parse_dvb_short_event() returns a NULL name.

Handle the case when
 gst_mpegts_descriptor_parse_dvb_short_event() returns a NULL name.

Resolves the warning:

GStreamer-WARNING **: Trying to set NULL string on field 'title' on taglist. Please file a bug.
Comment 4 Tim-Philipp Müller 2016-09-13 11:27:07 UTC
Thanks for the patch! Pushed with minor changes (inited variables to NULL for extra good measure, moved the FIXME down to where it belongs).

commit 7713bb763e02ba684612e50e66f85c7e15143de0
Author: Graham Leggett <minfrin@sharp.fm>
Date:   Sun Sep 11 00:06:52 2016 +0000

    tsdemux: handle a NULL name in DVB short event descriptor
    
    Resolves the warning:
    
    GStreamer-WARNING **: Trying to set NULL string on field 'title' on taglist.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=771198
Comment 5 Tim-Philipp Müller 2016-11-02 10:54:12 UTC
This was picked into 1.8 as well.