[Bug 776540] GstGL: Occasional assertion failures on GST_IS_GL_DISPLAY and GST_IS_GL_CONTEXT

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Jan 2 10:20:40 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=776540

--- Comment #5 from Petros <petroskataras at gmail.com> ---
I ve been looking a bit more into this on Linux. It seems that these failures
are consistently coming from the glupload element when trying to set
gst.gl.app_context and the element has not reached GST_STATE_READY. 

On successful runs if I manually break at the same point where it fails
occasionally ( i.e inside gst_gl_handle_context ) the element has already
switched to GST_STATE_READY while on failed runs it is in an async state change
mode from NULL to READY ( this is visible also on the bt I previously attached
). 

For comparison here is how the upload element looks on a successful run :

{object = {object = {g_type_instance = {g_class = 0x13f3cc0}, ref_count = 3,
qdata = 0x0}, lock = {p = 0x0, i = {0, 0}}, name = 0x13f8340 "upload", parent =
0x13dd0e0, 
    flags = 0, control_bindings = 0x0, control_rate = 100000000, last_sync =
18446744073709551615, _gst_reserved = 0x0}, state_lock = {p = 0x13f8310, i =
{0, 0}}, 
  state_cond = {p = 0x0, i = {2, 0}}, state_cookie = 1, target_state =
GST_STATE_READY, current_state = GST_STATE_READY, next_state =
GST_STATE_VOID_PENDING, 
  pending_state = GST_STATE_VOID_PENDING, last_return =
GST_STATE_CHANGE_SUCCESS, bus = 0x1270c70, clock = 0x0, base_time = 0,
start_time = 0, numpads = 2, pads = 0x13f5480, 
  numsrcpads = 1, srcpads = 0x13f54a0, numsinkpads = 1, sinkpads = 0x13f5460,
pads_cookie = 2, contexts = 0x1401020, _gst_reserved = {0x0, 0x0, 0x0}}


and here is how it looks on a failed run :

{object = {object = {g_type_instance = {g_class = 0x13f3cc0}, ref_count = 2,
qdata = 0x0}, lock = {p = 0x0, i = {0, 0}}, name = 0x142b2a0 "upload", 
    parent = 0x7fff800126a0, flags = 0, control_bindings = 0x0, control_rate =
100000000, last_sync = 18446744073709551615, _gst_reserved = 0x0}, state_lock =
{
    p = 0x1465830, i = {0, 0}}, state_cond = {p = 0x0, i = {1, 0}},
state_cookie = 1, target_state = GST_STATE_READY, current_state =
GST_STATE_NULL, 
  next_state = GST_STATE_READY, pending_state = GST_STATE_READY, last_return =
GST_STATE_CHANGE_ASYNC, bus = 0x7fffd004d310, clock = 0x0, base_time = 0,
start_time = 0, 
  numpads = 2, pads = 0x7fffd01bc620, numsrcpads = 1, srcpads = 0x7fff8c008900,
numsinkpads = 1, sinkpads = 0x7fffdc045180, pads_cookie = 2, contexts =
0x7fffd814eba0, 
  _gst_reserved = {0x0, 0x0, 0x0}}


The failure happens at the point where playbin has reached GST_STATE_READY and
tries to activate the video-sink that contains the glupload element.

Here is how the video-sink looks at the point of the failure :

{object = {object = {g_type_instance = {g_class = 0x12242c0}, ref_count = 4,
qdata = 0x0}, lock = {p = 0x0, i = {0, 0}}, name = 0x1457eb0 "cinder-vbin",
parent = 0x0, 
    flags = 32, control_bindings = 0x0, control_rate = 100000000, last_sync =
18446744073709551615, _gst_reserved = 0x0}, state_lock = {p = 0x145f510, i =
{0, 0}}, 
  state_cond = {p = 0x0, i = {1, 0}}, state_cookie = 1, target_state =
GST_STATE_READY, current_state = GST_STATE_NULL, next_state = GST_STATE_READY, 
  pending_state = GST_STATE_READY, last_return = GST_STATE_CHANGE_ASYNC, bus =
0x7fffd01513b0, clock = 0x0, base_time = 0, start_time = 0, numpads = 1, 
  pads = 0x7fffdc03a400, numsrcpads = 0, srcpads = 0x0, numsinkpads = 1,
sinkpads = 0x7fffdc0054c0, pads_cookie = 1, contexts = 0x7fff8c005920,
_gst_reserved = {0x0, 0x0, 
    0x0}}

and how playbin looks at the same point :

{parent = {bin = {element = {object = {object = {g_type_instance = {g_class =
0x12971f0}, ref_count = 2, qdata = 0x2}, lock = {p = 0x0, i = {0, 0}}, 
          name = 0x142be00 "playbinsink", parent = 0x0, flags = 32,
control_bindings = 0x0, control_rate = 100000000, last_sync =
18446744073709551615, _gst_reserved = 0x0}, 
        state_lock = {p = 0x14645e0, i = {0, 0}}, state_cond = {p = 0x0, i =
{3, 0}}, state_cookie = 2, target_state = GST_STATE_PAUSED, current_state =
GST_STATE_READY, 
        next_state = GST_STATE_PAUSED, pending_state = GST_STATE_PAUSED,
last_return = GST_STATE_CHANGE_ASYNC, bus = 0x7fffcc75e480, clock = 0x0,
base_time = 0, 
        start_time = 0, numpads = 0, pads = 0x0, numsrcpads = 0, srcpads = 0x0,
numsinkpads = 0, sinkpads = 0x0, pads_cookie = 0, contexts = 0x0, _gst_reserved
= {0x0, 0x0, 
          0x0}}, numchildren = 1, children = 0x7fff8c018800, children_cookie =
1, child_bus = 0x7fff8c117b90, messages = 0x7fffdc0d24e0, polling = 0,
state_dirty = 0, 
      clock_dirty = 0, provided_clock = 0x0, clock_provider = 0x0, priv =
0x124d620, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, fixed_clock = 0x0,
stream_time = 0, delay = 0, 
    priv = 0x124d600, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, lock = {p =
0x14454a0, i = {0, 0}}, groups = {{playbin = 0x124d640, lock = {p = 0x0, i =
{0, 0}}, valid = 0, 
      active = 0, uri = 0x0, suburi = 0x0, streaminfo = 0x0, source = 0x0,
video_channels = 0x7fffdc024a40, audio_channels = 0x7fff8c0030c0, text_channels
= 0x7fff8c00d2e0, 
      audio_sink = 0x0, video_sink = 0x0, text_sink = 0x0, uridecodebin = 0x0,
suburidecodebin = 0x0, pending = 0, sub_pending = 0, have_group_id = 0,
group_id = 0, 
      pad_added_id = 0, pad_removed_id = 0, no_more_pads_id = 0,
notify_source_id = 0, drained_id = 0, autoplug_factories_id = 0,
autoplug_select_id = 0, 
      autoplug_continue_id = 0, autoplug_query_id = 0, sub_pad_added_id = 0,
sub_pad_removed_id = 0, sub_no_more_pads_id = 0, sub_autoplug_continue_id = 0, 
      sub_autoplug_query_id = 0, block_id = 0, stream_changed_pending_lock = {p
= 0x0, i = {0, 0}}, stream_changed_pending = 0, suburi_flushes_to_drop_lock =
{p = 0x0, i = {
          0, 0}}, suburi_flushes_to_drop = 0x0, pending_buffering_msg = 0x0,
combiner = {{media_list = {0x7fffea849a41 "audio/", 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0}, 
          get_media_caps = 0x0, type = GST_PLAY_SINK_TYPE_AUDIO, combiner =
0x0, channels = 0x7fff8c0030c0, srcpad = 0x0, sinkpad = 0x0, block_id = 0,
has_active_pad = 0, 
          has_always_ok = 0, has_tags = 0}, {media_list = {0x7fffea849a2e
"video/", 0x7fffea84f94e "image/", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
get_media_caps = 0x0, 
          type = GST_PLAY_SINK_TYPE_VIDEO, combiner = 0x0, channels =
0x7fffdc024a40, srcpad = 0x0, sinkpad = 0x0, block_id = 0, has_active_pad = 0,
has_always_ok = 0, 
          has_tags = 0}, {media_list = {0x7fffea84f955 "text/", 0x7fffea850584
"application/x-subtitle", 0x7fffea85059b "application/x-ssa", 
            0x7fffea8505ad "application/x-ass", 0x7fffea8505bf
"subpicture/x-dvd", 0x7fffea84f95b "subpicture/", 0x7fffea8505d0 "subtitle/",
0x0}, 
          get_media_caps = 0x7fffea841ef0
<gst_subtitle_overlay_create_factory_caps>, type = GST_PLAY_SINK_TYPE_TEXT,
combiner = 0x0, channels = 0x7fff8c00d2e0, 
          srcpad = 0x0, sinkpad = 0x0, block_id = 0, has_active_pad = 0,
has_always_ok = 0, has_tags = 0}}}, {playbin = 0x124d640, lock = {p = 0x1, i =
{1, 0}}, valid = 1, 
      active = 0, uri = 0x1246110
"file:///home/petroska/Software/libs/cinder-aes/test/Linux/GstPlayerRefactorTest/assets/bbb.mp4",
suburi = 0x0, streaminfo = 0x0, 
      source = 0x0, video_channels = 0x7fffdc02e2a0, audio_channels =
0x7fffd8147240, text_channels = 0x7fff8c004880, audio_sink = 0x0, video_sink =
0x13dd0e0, 
      text_sink = 0x0, uridecodebin = 0x0, suburidecodebin = 0x0, pending = 0,
sub_pending = 0, have_group_id = 0, group_id = 0, pad_added_id = 0,
pad_removed_id = 0, 
      no_more_pads_id = 0, notify_source_id = 0, drained_id = 0,
autoplug_factories_id = 0, autoplug_select_id = 0, autoplug_continue_id = 0,
autoplug_query_id = 0, 
      sub_pad_added_id = 0, sub_pad_removed_id = 0, sub_no_more_pads_id = 0,
sub_autoplug_continue_id = 0, sub_autoplug_query_id = 0, block_id = 0, 
      stream_changed_pending_lock = {p = 0x0, i = {0, 0}},
stream_changed_pending = 0, suburi_flushes_to_drop_lock = {p = 0x0, i = {0,
0}}, suburi_flushes_to_drop = 0x0, 
      pending_buffering_msg = 0x0, combiner = {{media_list = {0x7fffea849a41
"audio/", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, get_media_caps = 0x0, 
          type = GST_PLAY_SINK_TYPE_AUDIO, combiner = 0x0, channels =
0x7fffd8147240, srcpad = 0x0, sinkpad = 0x0, block_id = 0, has_active_pad = 0,
has_always_ok = 0, 
          has_tags = 0}, {media_list = {0x7fffea849a2e "video/", 0x7fffea84f94e
"image/", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, get_media_caps = 0x0, 
          type = GST_PLAY_SINK_TYPE_VIDEO, combiner = 0x0, channels =
0x7fffdc02e2a0, srcpad = 0x0, sinkpad = 0x0, block_id = 0, has_active_pad = 0,
has_always_ok = 0, 
          has_tags = 0}, {media_list = {0x7fffea84f955 "text/", 0x7fffea850584
"application/x-subtitle", 0x7fffea85059b "application/x-ssa", 
            0x7fffea8505ad "application/x-ass", 0x7fffea8505bf
"subpicture/x-dvd", 0x7fffea84f95b "subpicture/", 0x7fffea8505d0 "subtitle/",
0x0}, 
          get_media_caps = 0x7fffea841ef0
<gst_subtitle_overlay_create_factory_caps>, type = GST_PLAY_SINK_TYPE_TEXT,
combiner = 0x0, channels = 0x7fff8c004880, 
          srcpad = 0x0, sinkpad = 0x0, block_id = 0, has_active_pad = 0,
has_always_ok = 0, has_tags = 0}}}}, curr_group = 0x124dac8, next_group =
0x124d808, 
  connection_speed = 0, current_video = -1, current_audio = -1, current_text =
-1, buffer_duration = 18446744073709551615, buffer_size = 4294967295,
force_aspect_ratio = 1, 
  multiview_mode = GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE, multiview_flags =
GST_VIDEO_MULTIVIEW_FLAGS_NONE, playsink = 0x13da5b0, source = 0x0, dyn_lock =
{p = 0x0, i = {0, 
      0}}, shutdown = 0, async_pending = 1, elements_lock = {p = 0x0, i = {0,
0}}, elements_cookie = 0, elements = 0x0, have_selector = 1,
video_pending_flush_finish = 0, 
  audio_pending_flush_finish = 0, text_pending_flush_finish = 0, audio_sink =
0x0, video_sink = 0x13dd0e0, text_sink = 0x0, audio_stream_combiner = 0x0, 
  video_stream_combiner = 0x0, text_stream_combiner = 0x0, aelements = 0x0,
velements = 0x0, duration = {{valid = 0, format = GST_FORMAT_UNDEFINED,
duration = 0}, {
      valid = 0, format = GST_FORMAT_UNDEFINED, duration = 0}, {valid = 0,
format = GST_FORMAT_UNDEFINED, duration = 0}, {valid = 0, format =
GST_FORMAT_UNDEFINED, 
      duration = 0}, {valid = 0, format = GST_FORMAT_UNDEFINED, duration = 0}},
ring_buffer_max_size = 0, contexts = 0x125b2e0}

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list