[Bug 796890] d3d: d3d_wnd_proc (d3dhelper.c) raises an exception because sink is NULL at LOCK_SINK (sink);

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Jul 30 20:24:33 UTC 2018


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

--- Comment #3 from Marcos Kintschner <marcos.ktn at gmail.com> ---
This is a crash that happens eventually and it's not being easy to reproduce
it.

I'm using gstreamer along with Qt, so I'm passing the Qt window id to the
function gst_video_overlay_set_window_handle.

This is the call stack when the error occurs:

>	[Inline Frame] glib-2.0-0.dll!g_rec_mutex_get_impl(_GRecMutex *) Line 131	C
     glib-2.0-0.dll!g_rec_mutex_lock(_GRecMutex * mutex) Line 159    C
     gstd3d.dll!d3d_wnd_proc(HWND__ * hWnd, unsigned int message, unsigned int
wParam, long lParam) Line 2004    C
     [External Code]    
     [Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]    
     qwindowsd.dll!QWindowsWindow::show_sys() Line 1475    C++
     qwindowsd.dll!QWindowsWindow::setVisible(bool visible) Line 1301    C++
     Qt5Guid.dll!QWindowPrivate::setVisible(bool visible) Line 403    C++
     Qt5Widgetsd.dll!QWidgetWindow::setNativeWindowVisibility(bool visible)
Line 206    C++
     Qt5Widgetsd.dll!QWidgetPrivate::show_sys() Line 8120    C++
     Qt5Widgetsd.dll!QWidgetPrivate::show_helper() Line 8043    C++
     Qt5Widgetsd.dll!QWidget::setVisible(bool visible) Line 8337    C++
     Qt5Widgetsd.dll!QWidget::show() Line 7888    C++

The QWidget is the window used to render the video.

I'm using two pipelines to capture two cameras, this looks like a race
condition to me.

I've added the console output as an attachment. Note that I've added this debug
message:

GST_DEBUG_OBJECT(sink, "SetProp handle:%p", sink->d3d.window_handle);

just before calling the function SetProp (at d3d_window_wndproc_set function)
and it is calling only for the first video, but not for the second.
So when we try to recover it with GetProp, it returns NULL.

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