Building on Windows with a focus on generating PDB files

David Ing ding at panopto.com
Thu Sep 5 21:26:27 UTC 2019


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


More information about the gstreamer-devel mailing list