glimagesink : lockup when using overlay and going back to ready state

philippe renon philippe_renon at yahoo.fr
Mon Oct 5 00:15:21 PDT 2015


Hi,
I am seeing a pipeline lockup when using glimagesink with a video overlay and going back to Ready state.
It is reproducible with a simple pipeline like "gltestsrc ! glimagesink" and going to Playing state then back to Ready state.
It was reproduced on a post 1.6.0 master compiled under Windows 7/MingW. Overlay window is provided by a Qt 5.4.1 app. Pipeline runs fine otherwise.

Here are some back traces taken during the lockup:
Thread 1 is locked while finalizing the gl context.Thread 22 is locked while trying to destroy a window (!?!)
Thread 21 is waiting for nav event (which is, I guess, ok).

Thread 1 (Thread 280.0xe48):
#0  0x777d1f2d in ntdll!ZwWaitForKeyedEvent ()
   from C:\Windows\SysWOW64\ntdll.dll
#1  0x777d1f2d in ntdll!ZwWaitForKeyedEvent ()
   from C:\Windows\SysWOW64\ntdll.dll
#2  0x77857a67 in ntdll!RtlSleepConditionVariableSRW ()
   from C:\Windows\SysWOW64\ntdll.dll
#3  0x0028bbd0 in ?? ()
#4  0x756c52e8 in SleepConditionVariableSRW ()
   from C:\Windows\syswow64\kernel32.dll
#5  0x68633ea8 in g_cond_wait (cond=0x48c1a02c, entered_mutex=0x48c1a018)
    at gthread-win32.c:300
#6  0x4f802bc8 in gst_gl_context_finalize (object=0x48c1a058)
    at gstglcontext.c:632
#7  0x63a4a7e1 in g_object_unref (_object=0x48c1a058) at gobject.c:3174
#8  0x3b4a378b in gst_object_unref (object=0x48c1a058) at gstobject.c:282
#9  0x4f809978 in gst_gl_buffer_pool_finalize (object=0x48cc6348)
    at gstglbufferpool.c:442
#10 0x63a4a7e1 in g_object_unref (_object=0x48cc6348) at gobject.c:3174
#11 0x3b4a378b in gst_object_unref (object=0x48cc6348) at gstobject.c:282
#12 0x6b5e4f8b in gst_base_src_set_allocation (
    basesrc=basesrc at entry=0x48cbd860, pool=pool at entry=0x0,
    allocator=allocator at entry=0x0, params=params at entry=0x0)
    at gstbasesrc.c:2995
#13 0x6b5e6e83 in gst_base_src_stop (basesrc=basesrc at entry=0x48cbd860)
    at gstbasesrc.c:3548
#14 0x6b5ed5ef in gst_base_src_activate_push (active=0, parent=0x48cbd860,
    pad=<optimized out>) at gstbasesrc.c:3704
#15 gst_base_src_activate_mode (pad=0x48aaf190, parent=0x48cbd860,
    mode=GST_PAD_MODE_PUSH, active=0) at gstbasesrc.c:3776
#16 0x3b4e9e72 in gst_pad_activate_mode (pad=pad at entry=0x48aaf190,
    mode=mode at entry=GST_PAD_MODE_PUSH, active=active at entry=0) at gstpad.c:1187
#17 0x3b4ea824 in gst_pad_set_active (pad=pad at entry=0x48aaf190, active=0)
    at gstpad.c:1071
#18 0x3b4cc164 in activate_pads (vpad=vpad at entry=0x28be98,
    ret=ret at entry=0x28bed8, active=active at entry=0x28bf2c) at gstelement.c:2693
#19 0x3b4dcaa9 in gst_iterator_fold (it=it at entry=0x489d3da0,
    func=func at entry=0x3b4cc140 <activate_pads>, ret=ret at entry=0x28bed8,
    user_data=user_data at entry=0x28bf2c) at gstiterator.c:614
#20 0x3b4cc370 in iterator_activate_fold_with_resync (
    iter=iter at entry=0x489d3da0, user_data=user_data at entry=0x28bf2c,
    func=0x3b4cc140 <activate_pads>) at gstelement.c:2717
#21 0x3b4ce2f8 in gst_element_pads_activate (
    element=element at entry=0x48cbd860, active=active at entry=0)
    at gstelement.c:2753
#22 0x3b4ce640 in gst_element_change_state_func (element=0x48cbd860,
    transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2827
#23 0x6b5eb0f3 in gst_base_src_change_state (element=0x48cbd860,
    transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbasesrc.c:3813
#24 0x4f5b068c in gst_gl_test_src_change_state (element=0x48cbd860,
    transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstgltestsrc.c:901
#25 0x3b4d027c in gst_element_change_state (element=element at entry=0x48cbd860,
    transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2607
#26 0x3b4d0bba in gst_element_set_state_func (element=0x48cbd860,
    state=GST_STATE_READY) at gstelement.c:2563
#27 0x3b4ae69b in gst_bin_element_set_state (next=GST_STATE_READY,
    current=GST_STATE_PAUSED, start_time=0, base_time=11978461145,
    element=0x48cbd860, bin=0x48ac5380) at gstbin.c:2410
#28 gst_bin_change_state_func (element=0x48ac5380,
    transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2743
#29 0x3b4d027c in gst_element_change_state (element=0x48ac5380,
    transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2607
#30 0x3b4d0711 in gst_element_continue_state (
    element=element at entry=0x48ac5380, ret=26,
    ret at entry=GST_STATE_CHANGE_SUCCESS) at gstelement.c:2317
#31 0x3b4d02f2 in gst_element_change_state (element=element at entry=0x48ac5380,
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstelement.c:2644
#32 0x3b4d0bba in gst_element_set_state_func (element=0x48ac5380,
    state=GST_STATE_NULL) at gstelement.c:2563
#33 0x68482ae8 in VideoWidget::dispose (this=0x3ceb5300)
    at D:/Projects/LibrePilotGST/ground/gcs/src/libs/gstreamer/videowidget.cpp:192
...

Thread 22 (Thread 280.0xa00):
#0  0x75e89a6a in USER32!DestroyWindow () from C:\Windows\syswow64\user32.dll
#1  0x75e89a6a in USER32!DestroyWindow () from C:\Windows\syswow64\user32.dll
#2  0x4f825572 in gst_gl_window_win32_close (window=0x48cc4098)
    at gstglwindow_win32.c:138
#3  0x4f804ece in gst_gl_context_create_thread (context=0x48c1a058)
    at gstglcontext.c:1240
#4  0x6861717d in g_thread_proxy (data=0x48ae7258) at gthread.c:764
#5  0x686340ad in g_thread_win32_proxy (data=0x48ae7258)
    at gthread-win32.c:450
#6  0x759b1287 in msvcrt!_itow_s () from C:\Windows\syswow64\msvcrt.dll
#7  0x759b1328 in msvcrt!_endthreadex () from C:\Windows\syswow64\msvcrt.dll
#8  0x7564338a in KERNEL32!BaseThreadInitThunk ()
   from C:\Windows\syswow64\kernel32.dll
#9  0x777e97f2 in ntdll!RtlInitializeExceptionChain ()
   from C:\Windows\SysWOW64\ntdll.dll
#10 0x777e97c5 in ntdll!RtlInitializeExceptionChain ()
   from C:\Windows\SysWOW64\ntdll.dll
#11 0x00000000 in ?? ()


Thread 21 (Thread 280.0x16dc):
#0  0x777d015d in ntdll!ZwWaitForMultipleObjects ()
   from C:\Windows\SysWOW64\ntdll.dll
#1  0x777d015d in ntdll!ZwWaitForMultipleObjects ()
   from C:\Windows\SysWOW64\ntdll.dll
#2  0x75c51605 in WaitForMultipleObjectsEx ()
   from C:\Windows\syswow64\KernelBase.dll
#3  0x00000001 in ?? ()
#4  0x522ffc24 in ?? ()
#5  0x756419f8 in WaitForMultipleObjectsEx ()
   from C:\Windows\syswow64\kernel32.dll
#6  0x686005f5 in poll_rest (poll_msgs=poll_msgs at entry=0,
    handles=handles at entry=0x522ffd20, nhandles=nhandles at entry=1,
    fds=fds at entry=0x48766978, nfds=nfds at entry=1, timeout=timeout at entry=-1)
    at gpoll.c:180
#7  0x68600945 in g_poll (fds=0x48766978, nfds=1, timeout=-1) at gpoll.c:319
#8  0x685f3301 in g_main_context_poll (n_fds=1, fds=0x48766978, timeout=-1,
    context=0x3cf3ea08, priority=<optimized out>) at gmain.c:4240
#9  g_main_context_iterate (context=0x3cf3ea08, block=block at entry=1,
    dispatch=dispatch at entry=1, self=<optimized out>) at gmain.c:3940
#10 0x685f37f5 in g_main_loop_run (loop=0x487580d8) at gmain.c:4139
#11 0x4f81ab51 in gst_gl_window_run_navigation (window=0x487580d8)
    at gstglwindow.c:575
#12 0x4f81b888 in gst_gl_window_navigation_thread (window=0x48cc4098)
    at gstglwindow.c:970
#13 0x6861717d in g_thread_proxy (data=0x489d0ad8) at gthread.c:764
#14 0x686340ad in g_thread_win32_proxy (data=0x489d0ad8)
    at gthread-win32.c:450
#15 0x759b1287 in msvcrt!_itow_s () from C:\Windows\syswow64\msvcrt.dll
#16 0x759b1328 in msvcrt!_endthreadex () from C:\Windows\syswow64\msvcrt.dll
#17 0x7564338a in KERNEL32!BaseThreadInitThunk ()
   from C:\Windows\syswow64\kernel32.dll
#18 0x777e97f2 in ntdll!RtlInitializeExceptionChain ()
   from C:\Windows\SysWOW64\ntdll.dll
#19 0x777e97c5 in ntdll!RtlInitializeExceptionChain ()
   from C:\Windows\SysWOW64\ntdll.dll
#20 0x00000000 in ?? ()

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20151005/c0746a27/attachment-0001.html>


More information about the gstreamer-devel mailing list