[Bug 788754] gl: wayland: sometimes block pipeline at PREROLLED

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Nov 2 23:59:55 UTC 2017


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

--- Comment #15 from Matthew Waters (ystreet00) <ystreet00 at gmail.com> ---
e.g. I can get the following stall on startup with
-bad/gl/gtk/filtervideooverlay/filtervideooverlay which is becuse mesa's
wayland GL handling doesn't take into account the race possible with setting a
wl_proxy's wl_queue in
https://cgit.freedesktop.org/mesa/mesa/tree/src/egl/drivers/dri2/platform_wayland.c

(gdb) t a a bt

Thread 8 (Thread 0x7fffcbdfa700 (LWP 3633)):
#0  0x00007ffff219bc49 in syscall () at /usr/lib/libc.so.6
#1  0x00007ffff35be6b1 in g_cond_wait () at /usr/lib/libglib-2.0.so.0
#2  0x00007fffe9ee57f4 in gst_gl_window_default_send_message
(window=0x5555557ba040, callback=<optimized out>, data=<optimized out>) at
gstglwindow.c:603
#3  0x00007fffea131eb5 in gst_glimage_sink_redisplay
(gl_sink=gl_sink at entry=0x555555e31df0) at gstglimagesink.c:2377
#4  0x00007fffea132390 in gst_glimage_sink_show_frame (vsink=<optimized out>,
buf=<optimized out>) at gstglimagesink.c:1741
#5  0x00007ffff4a8f3ce in gst_base_sink_chain_unlocked
(basesink=basesink at entry=0x555555e31df0, obj=obj at entry=0x5555557eae00,
is_list=is_list at entry=0, pad=<optimized out>) at gstbasesink.c:3546
#6  0x00007ffff4a90150 in gst_base_sink_chain_main (basesink=0x555555e31df0,
pad=<optimized out>, obj=0x5555557eae00, is_list=0) at gstbasesink.c:3672
#7  0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eae00,
type=4112, pad=0x555555e1d930) at gstpad.c:4215
#8  0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1d6f0,
type=type at entry=4112, data=data at entry=0x5555557eae00) at gstpad.c:4471
#9  0x00007ffff47a84e3 in gst_pad_push (pad=0x555555e1d6f0,
buffer=0x5555557eae00) at gstpad.c:4590
#10 0x00007ffff4a9c87f in gst_base_transform_chain (pad=<optimized out>,
parent=<optimized out>, buffer=<optimized out>) at gstbasetransform.c:2312
#11 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eae00,
type=4112, pad=0x555555e1d4b0) at gstpad.c:4215
#12 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1d270,
type=type at entry=4112, data=data at entry=0x5555557eae00) at gstpad.c:4471
#13 0x00007ffff47a84e3 in gst_pad_push (pad=0x555555e1d270,
buffer=0x5555557eae00) at gstpad.c:4590
#14 0x00007ffff4a9c87f in gst_base_transform_chain (pad=<optimized out>,
parent=<optimized out>, buffer=<optimized out>) at gstbasetransform.c:2312
#15 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eae00,
type=4112, pad=0x555555e1d030) at gstpad.c:4215
#16 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1cdf0,
type=type at entry=4112, data=data at entry=0x5555557eae00) at gstpad.c:4471
#17 0x00007ffff47a84e3 in gst_pad_push (pad=0x555555e1cdf0,
buffer=0x5555557eae00) at gstpad.c:4590
#18 0x00007ffff4a9c87f in gst_base_transform_chain (pad=<optimized out>,
parent=<optimized out>, buffer=<optimized out>) at gstbasetransform.c:2312
#19 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eae00,
type=4112, pad=0x555555e1cbb0) at gstpad.c:4215
#20 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e421f0,
type=type at entry=4112, data=data at entry=0x5555557eae00) at gstpad.c:4471
#21 0x00007ffff47a84e3 in gst_pad_push (pad=pad at entry=0x555555e421f0,
buffer=buffer at entry=0x5555557eae00) at gstpad.c:4590
#22 0x00007ffff478e04b in gst_proxy_pad_chain_default (pad=<optimized out>,
parent=<optimized out>, buffer=0x5555557eae00) at gstghostpad.c:127
#23 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eae00,
type=4112, pad=0x555555e40050) at gstpad.c:4215
#24 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1c970,
type=type at entry=4112, data=data at entry=0x5555557eae00) at gstpad.c:4471
#25 0x00007ffff47a84e3 in gst_pad_push (pad=0x555555e1c970,
buffer=0x5555557eae00) at gstpad.c:4590
#26 0x00007ffff4a9c87f in gst_base_transform_chain (pad=<optimized out>,
parent=<optimized out>, buffer=<optimized out>) at gstbasetransform.c:2312
#27 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eacf0,
type=4112, pad=0x555555e1c730) at gstpad.c:4215
#28 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1c4f0,
type=type at entry=4112, data=data at entry=0x5555557eacf0) at gstpad.c:4471
#29 0x00007ffff47a84e3 in gst_pad_push (pad=0x555555e1c4f0,
buffer=0x5555557eacf0) at gstpad.c:4590
#30 0x00007ffff4a9c87f in gst_base_transform_chain (pad=<optimized out>,
parent=<optimized out>, buffer=<optimized out>) at gstbasetransform.c:2312
#31 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eacf0,
type=4112, pad=0x555555e1c2b0) at gstpad.c:4215
#32 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1ddb0,
type=type at entry=4112, data=data at entry=0x5555557eacf0) at gstpad.c:4471
#33 0x00007ffff47a84e3 in gst_pad_push (pad=0x555555e1ddb0,
buffer=0x5555557eacf0) at gstpad.c:4590
#34 0x00007ffff4a9c87f in gst_base_transform_chain (pad=<optimized out>,
parent=<optimized out>, buffer=<optimized out>) at gstbasetransform.c:2312
#35 0x00007ffff479ff73 in gst_pad_chain_data_unchecked (data=0x5555557eacf0,
type=4112, pad=0x555555e1db70) at gstpad.c:4215
#36 0x00007ffff479ff73 in gst_pad_push_data (pad=pad at entry=0x555555e1c070,
type=type at entry=4112, data=data at entry=0x5555557eacf0) at gstpad.c:4471
#37 0x00007ffff47a84e3 in gst_pad_push (pad=pad at entry=0x555555e1c070,
buffer=0x5555557eacf0) at gstpad.c:4590
#38 0x00007ffff4a95855 in gst_base_src_loop (pad=0x555555e1c070) at
gstbasesrc.c:2918
#39 0x00007ffff47d4819 in gst_task_func (task=0x555555e4d170) at gsttask.c:332
#40 0x00007ffff3585f5b in  () at /usr/lib/libglib-2.0.so.0
#41 0x00007ffff358b1eb in  () at /usr/lib/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#42 0x00007ffff246908a in start_thread () at /usr/lib/libpthread.so.0
#43 0x00007ffff21a124f in clone () at /usr/lib/libc.so.6

Thread 7 (Thread 0x7fffdab7c700 (LWP 3632)):
#0  0x00007ffff2196d4b in poll () at /usr/lib/libc.so.6
#1  0x00007ffff3596ed3 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007ffff3597f42 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#3  0x00007fffe9ec8847 in _event_thread_main (display=0x7fffcc002050) at
gstgldisplay.c:143
#4  0x00007ffff358b1eb in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007ffff246908a in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007ffff21a124f in clone () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7fffdb37d700 (LWP 3631)):
#0  0x00007ffff2196d4b in poll () at /usr/lib/libc.so.6
#1  0x00007ffff517a4ab in  () at /usr/lib/libwayland-client.so.0
#2  0x00007ffff517bb8e in wl_display_dispatch_queue () at
/usr/lib/libwayland-client.so.0
#3  0x00007fffda160084 in  () at /usr/lib/libEGL_mesa.so.0
#4  0x00007fffda152996 in eglSwapBuffers () at /usr/lib/libEGL_mesa.so.0
#5  0x00007fffe9ef396d in draw_cb (data=0x5555557ba040) at
gstglwindow_wayland_egl.c:507
#6  0x00007fffe9ee4b83 in _run_message_sync (message=0x7fffcbdf8ec0) at
gstglwindow.c:577
#7  0x00007fffe9ee4b22 in _run_message_async (message=0x555555b38160) at
gstglwindow.c:644
#8  0x00007ffff35950be in g_main_context_dispatch () at
/usr/lib/libglib-2.0.so.0
#9  0x00007ffff3596f69 in  () at /usr/lib/libglib-2.0.so.0
#10 0x00007ffff3597f42 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#11 0x00007fffe9ee4c05 in gst_gl_window_default_run (window=0x5555557ba040) at
gstglwindow.c:503
#12 0x00007fffe9ecca39 in gst_gl_context_create_thread (context=0x7fffe40165b0)
at gstglcontext.c:1309
#13 0x00007ffff358b1eb in  () at /usr/lib/libglib-2.0.so.0
#14 0x00007ffff246908a in start_thread () at /usr/lib/libpthread.so.0
#15 0x00007ffff21a124f in clone () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7fffdbb7e700 (LWP 3630)):
#0  0x00007ffff2196d4b in poll () at /usr/lib/libc.so.6
#1  0x00007ffff3596ed3 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007ffff3597f42 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#3  0x00007fffe9ec8847 in _event_thread_main (display=0x5555557ea390) at
gstgldisplay.c:143
#4  0x00007ffff358b1eb in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007ffff246908a in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007ffff21a124f in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7ffff7f98e00 (LWP 3612)):
#0  0x00007ffff219bc49 in syscall () at /usr/lib/libc.so.6
#1  0x00007ffff35be6b1 in g_cond_wait () at /usr/lib/libglib-2.0.so.0
#2  0x00007fffe9ee57f4 in gst_gl_window_default_send_message
(window=0x5555557ba040, callback=<optimized out>, data=<optimized out>) at
gstglwindow.c:603
#3  0x00007fffea131eb5 in gst_glimage_sink_redisplay (gl_sink=<optimized out>)
at gstglimagesink.c:2377
#4  0x00007fffea12ea60 in gst_gl_sink_bin_overlay_expose (overlay=<optimized
out>) at gstglsinkbin.c:448
#5  0x000055555555659f in expose_cb(GtkWidget*, cairo_t*, GstElement*)
(widget=0x555555e4d0f0, cr=0x555555b8e400, videosink=0x55555578baa0) at
main.cpp:105
#6  0x00007ffff76f4098 in  () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff784457d in  () at /usr/lib/libgtk-3.so.0
#8  0x00007ffff387dc01 in g_signal_emit_valist () at
/usr/lib/libgobject-2.0.so.0
#9  0x00007ffff387e920 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#10 0x00007ffff7851963 in  () at /usr/lib/libgtk-3.so.0
#11 0x00007ffff762694f in gtk_container_propagate_draw () at
/usr/lib/libgtk-3.so.0
#12 0x00007ffff7626a33 in  () at /usr/lib/libgtk-3.so.0
#13 0x00007ffff785f9af in  () at /usr/lib/libgtk-3.so.0
#14 0x00007ffff7851730 in  () at /usr/lib/libgtk-3.so.0
#15 0x00007ffff785aee3 in  () at /usr/lib/libgtk-3.so.0
#16 0x00007ffff76f2f5a in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#17 0x00007ffff71fc6f6 in  () at /usr/lib/libgdk-3.so.0
#18 0x00007ffff720d03b in  () at /usr/lib/libgdk-3.so.0
#19 0x00007ffff720e299 in  () at /usr/lib/libgdk-3.so.0
#20 0x00007ffff720e499 in  () at /usr/lib/libgdk-3.so.0
#21 0x00007ffff38656f5 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#22 0x00007ffff38790b0 in  () at /usr/lib/libgobject-2.0.so.0
#23 0x00007ffff387d696 in g_signal_emit_valist () at
/usr/lib/libgobject-2.0.so.0
#24 0x00007ffff387e920 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#25 0x00007ffff720600a in  () at /usr/lib/libgdk-3.so.0
#26 0x00007ffff71f07c3 in  () at /usr/lib/libgdk-3.so.0
#27 0x00007ffff3593cb3 in  () at /usr/lib/libglib-2.0.so.0
#28 0x00007ffff35950be in g_main_context_dispatch () at
/usr/lib/libglib-2.0.so.0
#29 0x00007ffff3596f69 in  () at /usr/lib/libglib-2.0.so.0
#30 0x00007ffff3597f42 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#31 0x00007ffff76f211f in gtk_main () at /usr/lib/libgtk-3.so.0
#32 0x0000555555557097 in main(gint, gchar**) (argc=1, argv=0x7fffffffb3c8) at
main.cpp:292
(gdb)

-- 
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