Building on Windows with a focus on generating PDB files

David Ing ding at panopto.com
Thu Sep 5 22:47:22 UTC 2019


Yes, you can download PDB files with the published MSVC build for version
1.16.0 here:   https://gstreamer.freedesktop.org/download/  I typically
install the runtime installer and the development installer (the PDB files
come from one of those).  You will notice that some modules don't have a
*.pdb files (those are probably built with mingw).

We are eliminating C++ CLI because we are targetting .NET Core and
migrating to Linux (from Windows).  We are P-Invoking everything because
C++ CLI isn't friendly with .NET Core (and Linux).  We have observed VS
Debugger heap corruption, even when using P-Invoke (without any C++ CLI
whatsoever).  But our errors go away when the VS Debugger is taken out of
the equation.  And we can use the VS Debugger if Native Code Debugging is
turned off.  I agree that it might be a "mingw" thing because I am using
"ucrtbase.dll" and not "msvcrt.dll".


On Thu, Sep 5, 2019 at 2:54 PM Ben Rush <ben at ben-rush.net> wrote:

> A few remarks:
>
> 1) You said "now that *.pdb files are available", is this when we build it
> ourselves or are they actually available for download? If they're available
> for download, I would love to have them as I'm encountering an issue right
> now that could benefit from the insight a nice stack trace would offer
> (perhaps I simply missed the PDBs somewhere),
> 2) In terms of managed code interop'ing with GStreamer: yes, I have
> noticed this as well. However, I'm not convinced it's simply GStreamer, but
> I think anything that is perhaps built with mingw, and I'm not sure as
> though it's simply the debugger, as I have noticed a great many access
> violations when wrapping Gstreamer in C++ CLR. In fact, I had to rewrite
> our entire product to be native VC++ from C++ CLR due to the random errors
> I was getting. The code didn't really change (it was in C++, after all),
> but it was just no longer accessible from C# and no longer was blowing up
> randomly.
>
> I'm hoping I can help improve this platform for Windows. Because it's a
> damn cool platform. I just need it to run better on Windows.
>
> On Thu, Sep 5, 2019 at 4:26 PM David Ing <ding at panopto.com> wrote:
>
>> I have observed that most of the core Gstreamer developers use Fedora 30,
>> and they don't really have a chance to notice Windows-specific problems.  I
>> think they tend to focus on Linux (especially Fedora 30).  But one of the
>> core developers (Nirbheek from Centricular) has done a lot of work on
>> getting the MSVC build to work.
>>
>> Community members (like us) should try to report and help with Windows
>> stuff.  This is easier now that *.pdb files are available.
>>
>> I definitely notice better performance and fewer bugs when I run on
>> Fedora 30 (compared to Windows).  I am not sure why performance is better
>> on Linux.  It might have something to do with the ORC (runtime compiler for
>> inner loops), but I am just guessing.  I have also noticed that the VS
>> debugger causes some kind of heap corruption when debugging a process which
>> contains managed together with native gstreamer code (mingw).  Take away
>> the managed code layer and the heap corruption goes away.  I am not sure
>> why this happens.
>>
>> You should definitely try and work on Fedora 30 if you can.  Here is some
>> setup for the official build:
>> https://gitlab.freedesktop.org/gstreamer/gst-ci/tree/master/docker/fedora
>>
>> I wonder if this link is related to the official Windows build?
>> https://gitlab.freedesktop.org/gstreamer/gst-ci/tree/master/docker/windows
>>
>> On Thu, Sep 5, 2019 at 1:36 PM Ben Rush <ben at ben-rush.net> wrote:
>>
>>> Hi, thanks, David. I really appreciate your response. That clears up a
>>> lot.
>>>
>>> So, this brings me to a straightforward question: is GStreamer generally
>>> more stable on Linux than Windows? Or at least, more used? I ask not to be
>>> negative but to essentially confirm a belief I have picked up after using
>>> it on Windows for a while. Honestly, I have dealt with quite a few more
>>> ephemeral issues: random access violations, performance issues, etc. on
>>> Windows than I have on Linux. Also, comments about it taking so long to
>>> build on Windows, and that there are known bugs that people are potentially
>>> not tracking, also makes me think Windows isn't as much the focus.
>>>
>>> None of this is meant to be negative (honest), and I definitely believe
>>> major products are using it on Windows, but I'm just curious if there is a
>>> basis for these feelings? That perhaps getting it to work as well on
>>> Windows as it does on Linux perhaps simply means more work for me.
>>>
>>> Thanks again.
>>>
>>> On Thu, Sep 5, 2019 at 2:43 PM David Ing <ding at panopto.com> wrote:
>>>
>>>> The official Windows binaries are built using this tool:
>>>> https://gitlab.freedesktop.org/gstreamer/cerbero
>>>>
>>>> The official WIndows binaries are built on a Windows machine, although
>>>> it is possible to build the mingw binaries from Linux using a cross-compile
>>>> (through cerbero).  The MSVC build is great because it provides *.pdb
>>>> files, but not all components can be built using msvc, the remainder are
>>>> built via mingw.  Unfortunately, building on a WIndows machine takes a
>>>> really really really long time.  (The cross-compile from Linux is much
>>>> faster.)
>>>>
>>>> With Cerbero, the 1.16 branches use a very old version of the mingw
>>>> toolchain.  The master branch uses a newer version of the mingw toolchain.
>>>>
>>>> There are a number of known bugs with the Windows version of gstreamer
>>>> which do not exist on Linux.  (I do not know if anybody is maintaining a
>>>> list of those bugs.)
>>>>
>>>> On Thu, Sep 5, 2019 at 11:51 AM Ben Rush <ben at ben-rush.net> wrote:
>>>>
>>>>> I have a desire to build Gstreamer on Windows, more specifically a
>>>>> debug build so that I can track down some crashes that are occurring.
>>>>> Unfortunately, it seems as though this isn't a thing that's well-traveled,
>>>>> or I'm at least getting conflicting information on forums and blog posts
>>>>> about the process. I thought I'd ask on here about the latest state of
>>>>> things since blog posts/forum posts can be depreciated quickly with
>>>>> updates. I'm cool with RTFM, but some sources I'm reading say the manual
>>>>> itself is out of date.
>>>>>
>>>>> For example, a couple of blog posts (such as this one:
>>>>> https://cardinalpeak.com/blog/build-gstreamer-on-windows-an-advanced-tutorial/)
>>>>> that don't appear too old, mention the existing instructions are, and I
>>>>> quote, "woefully out of date" (presumably when specifically targeting
>>>>> Windows) and that the task is "fairly complex". There are Windows builds,
>>>>> and so presumably there is a well-tested method for generating these
>>>>> binaries on Windows. If so, surely there are well-tested steps out there
>>>>> for doing what I want. But if instructions available to me (I'm assuming
>>>>> this blog post meant the official instructions) are out of date, I'd like
>>>>> to keep that in mind as I'm using them. Or if HE is wrong, I'd like to know
>>>>> that. And if the official instructions are NOT out of date, I'm wondering
>>>>> if anyone has had any luck using them to generate any other than release
>>>>> builds?
>>>>>
>>>>> Any advice? Pointers? Feedback? Thanks for your time.
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> gstreamer-devel mailing list
>>>>> gstreamer-devel at lists.freedesktop.org
>>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>
>>>> _______________________________________________
>>>> gstreamer-devel mailing list
>>>> gstreamer-devel at lists.freedesktop.org
>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> _______________________________________________
> 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/20190905/3f541728/attachment.html>


More information about the gstreamer-devel mailing list