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 385084 - endless ghost pad pull/push activate recursion until crash
endless ghost pad pull/push activate recursion until crash
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal normal
: 0.10.12
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-12-12 15:08 UTC by Tim-Philipp Müller
Modified: 2007-02-20 10:16 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tim-Philipp Müller 2006-12-12 15:08:46 UTC
Try (with valid URI):

 gst-launch-0.10 http://host/foo.ogg ! identity ! decodebin ! fakesink



This crashes here like this:

Program received signal SIGSEGV, Segmentation fault.

Thread NaN (LWP 31870)

  • #1 gst_pad_activate_push
    at gstpad.c line 822
  • #2 gst_ghost_pad_do_activate_push
    at gstghostpad.c line 630
  • #3 gst_pad_activate_push
    at gstpad.c line 863
  • #4 gst_pad_activate_pull
    at gstpad.c line 731
  • #5 gst_ghost_pad_internal_do_activate_pull
    at gstghostpad.c line 609
  • #6 gst_pad_activate_pull
    at gstpad.c line 756
  • #7 gst_pad_activate_push
    at gstpad.c line 850
  • #8 gst_ghost_pad_do_activate_push
    at gstghostpad.c line 630
  • #9 gst_pad_activate_push
    at gstpad.c line 863
  • #10 gst_pad_activate_pull
    at gstpad.c line 731
  • #11 gst_ghost_pad_internal_do_activate_pull
    at gstghostpad.c line 609
  • #12 gst_pad_activate_pull
    at gstpad.c line 756
  • #13 gst_pad_activate_push
    at gstpad.c line 850
  • #14 gst_ghost_pad_do_activate_push
    at gstghostpad.c line 630

Comment 1 Jan Schmidt 2006-12-12 15:25:38 UTC
Easier way to reproduce:

gst-launch-0.10 file:///path/to/file.ogg ! queue ! identity ! decodebin ! fakesink -v
Comment 2 Jan Schmidt 2006-12-12 15:26:15 UTC
Doesn't happen without the identity, btw so possibly basetransform's fault.
Comment 3 Wim Taymans 2006-12-14 10:19:10 UTC
seems to be a ghostpad thing.
Comment 4 Tim-Philipp Müller 2007-02-02 16:58:23 UTC
Seen something similar today (only similar, because the repetead activation was consecutive and not recursive like here) with a demuxer supporting pull-mode. Basically it would repeatedly try to active the demuxer if the demuxer added pads during activation, but then for some reason still returned FALSE from its activate function (then the demuxer would do the same again and it loops forever).  May or may not be related, not sure.
Comment 5 Wim Taymans 2007-02-20 10:16:51 UTC
        * docs/design/part-gstghostpad.txt:
        * gst/gstghostpad.c: (gst_ghost_pad_class_init),
        (gst_ghost_pad_internal_do_activate_push),
        (gst_ghost_pad_internal_do_activate_pull),
        (gst_ghost_pad_do_activate_push), (gst_ghost_pad_do_activate_pull),
        (gst_ghost_pad_do_link), (gst_ghost_pad_dispose),
        (gst_ghost_pad_new_full), (gst_ghost_pad_set_target):
        Do not set the internal pad as a parent anymore so we can avoid
        hierarchy linking errors when the ghostpad has no parent yet. This also
        fixes failed activation because of unlinked internal pads, which in 
        turn fixes the impossible case where you have to activate a pad before 
        you can add it to a running element.
        Also fix the docs.

        * gst/gstpad.c: (pre_activate), (post_activate),
        (gst_pad_set_active), (gst_pad_activate_pull),
        (gst_pad_activate_push), (gst_pad_check_pull_range):
        Add some more debug info.
        Mark activation mode in pre_activate so that we don't try to activate in
        endless loops. Fixes #385084.