Random access violation (seg. fault) when calling GStreamer functions from MATLAB context in Windows

Marc Gelinas mgelinas at kinova.ca
Thu Feb 7 02:57:10 UTC 2019


Hi Nicolas,

Thank you for the quick response.

Please find attached 4 MATLAB crash reports, along with matching gdb (MinGW
64-bit) outputs.

Thank you,
MarcG


On Wed, 6 Feb 2019 at 02:13, <gstreamer-devel-request at lists.freedesktop.org>
wrote:

> ---------- Forwarded message ----------
> From: Nicolas Dufresne <nicolas at ndufresne.ca>
> To: Discussion of the development of and with GStreamer <
> gstreamer-devel at lists.freedesktop.org>
> Cc:
> Bcc:
> Date: Tue, 5 Feb 2019 22:42:32 -0500
> Subject: Re: Random access violation (seg. fault) when calling GStreamer
> functions from MATLAB context in Windows
>
>
> Le mar. 5 févr. 2019 16 h 57, Marc Gelinas <mgelinas at kinova.ca> a écrit :
>
>> Hello,
>>
>> I wonder if anyone has ever been able to use GStreamer libraries with
>> MATLAB in Windows.
>>
>> Context
>> -------
>> We are developing a custom adapter to be used with MATLAB's Image
>> Acquisition Toolbox add-on library (imaqmex.mexw64). Our adapter is a
>> library (.dll in Windows) and uses GStreamer to access an RTSP video feed.
>>
>> MATLAB --> imaqmex.mexw64 --> our_custom_adapter.dll --> gstreamer
>> libraries
>>
>> The components are:
>> - Windows 7
>> - MATLAB R2018b (v9.5.0.944444) with Image Acquisition Toolbox v5.5
>> - GStreamer libraries v1.14.4 for Windows
>> - Visual Studio 2015 (because it appears that the imaqmex.mexw64 was
>> built with VS 2015).
>>
>>
>> Issue
>> -----
>> At some point in MATLAB's Command Window, we type 'imaqhwinfo'. This
>> results in the Image Acquisition Toolbox library calling our adapter's
>> initialization code, which in turn calls gst_init_check(), after checking
>> that it's not already initialized (i.e. gst_is_initialized).
>>
>> Then, somewhere along the line, an access violation (segmentation fault)
>> randomly occurs in a GStreamer function (doesn't always occur when calling
>> the same function). I have noticed that it often occurs when "calling"
>> GST_LOG or GST_DEBUG macros, but it can also occur when calling any other
>> function. For instance, calling gst_tag_register from plugin_init
>> (isomp4-plugin.c).
>>
>> It looks like there's an alignment issue between the MATLAB context and
>> the GStreamer libraries.
>>
>> I've tried to change multiple compiler and linker options but I didn't
>> find any combination to make it work.
>>
>> - Does anyone have any idea what could be the issue and how to fix it?
>>
>
> Best would be to share a backtrace of the crash, with additional
> information about local variables and their location.
>
> If it's always in a logging function, you would try and provide as many
> different logging functions that crash, from there we may find something
> they have in common.
>
> - Is it just a question of setting the proper compiler/linker options or
>> it's more complex than that?
>>
>
> It can be from very simple to very complex. GStreamer is built with a very
> ancient Mingw toolchain, which sometimes have some oops. We are working on
> moving to something newer, but this is still being worked on.
>
> An example issue we faced, was that this old mingw was not aligning the
> stack properly for use with vector variables (from intrinsic, like SSE
> instructions). We workaround that using compiler hints, that was on 32bit
> windows only though.
>
> For log function, we use a lot of vararg, and variable size must fit the
> format. I'm also wondering if the calling convention or just the mix of
> compiler may not have some incompatibility we are not aware of.
>
>
>> It must be noted that with Linux, the same code (obviously with
>> appropriate #ifdef/#ifndef _WIN32 where required) works without any
>> issues.
>>
>>
>> Finally, in the GStreamer instructions for Installing on Windows
>> <https://gstreamer.freedesktop.org/documentation/installing/on-windows.html#installing-on-windows>,
>> it's said that the property pages only work with Visual Studio 2010. What
>> do we need to change to make them work with Visual Studio 2015? I didn't
>> face any issue loading them in Visual Studio 2015.
>>
>
> That is likely just outdated doc (and slightly miss written) I imagine it
> was meant to say that you need *at least* VS 2010. Of course it could break
> in the future, we have not control over that, but the is not report in the
> direction yet.
>
>>
>>
>>
>> Thank you in advance for any help, it will be greatly appreciated.
>>
>> Regards,
>> MarcG
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb_trace_12504.log
Type: text/x-log
Size: 17384 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matlab_crash_dump.12504-1
Type: application/octet-stream
Size: 14285 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0004.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb_trace_15032.log
Type: text/x-log
Size: 20679 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0005.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb_trace_13536.log
Type: text/x-log
Size: 17558 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0006.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb_trace_14248.log
Type: text/x-log
Size: 17342 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0007.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matlab_crash_dump.13536-1
Type: application/octet-stream
Size: 14325 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0005.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matlab_crash_dump.14248-1
Type: application/octet-stream
Size: 13976 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0006.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matlab_crash_dump.15032-1
Type: application/octet-stream
Size: 14459 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190206/5fad736a/attachment-0007.obj>


More information about the gstreamer-devel mailing list