Building on Windows with a focus on generating PDB files

Ben Rush ben at ben-rush.net
Thu Sep 5 21:54:23 UTC 2019


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190905/196ce6c8/attachment.html>


More information about the gstreamer-devel mailing list