After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 773889 - Missing symbols when using MSVC compiled plugins against MINGW compiled GStreamer
Missing symbols when using MSVC compiled plugins against MINGW compiled GStre...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: cerbero
1.10.0
Other Linux
: Normal blocker
: 1.10.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-11-03 12:56 UTC by Sebastian Dröge (slomo)
Modified: 2016-11-22 11:20 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastian Dröge (slomo) 2016-11-03 12:56:53 UTC
Happens with 1.10.0 binaries but only on x86-64, not x86. Missing symbols during plugin loading are e.g. _gst_debug_category_new, _gst_debug_min, and others.

It's linked against libgstreamer-1.0-0.dll.


The application itself is also compiled with MSVC but has no problems finding GStreamer symbols, and all non-MSVC compiled plugins also load fine.
Comment 1 Sebastian Dröge (slomo) 2016-11-03 15:10:56 UTC
The same happens when running MINGW compiled gst-inspect-1.0 on the MSVC compiled plugin, so it must be related to the plugin compilation somehow.
Comment 2 Sebastian Dröge (slomo) 2016-11-04 10:22:38 UTC
This is solved now in the 1.10.0.1 binaries but the reason is completely unknown. Both versions were build on the same machine with the same cerbero version, both times there was a complete wipe of any previous builds.

This needs further investigation so it does not happen again in the future.
Comment 3 Nirbheek Chauhan 2016-11-04 14:21:54 UTC
The symbols exported in DLLS from 1.10.0 and 1.10.0.1 are identical, and the DLLs themselves also seem the same. Both dumpbin and dependency walker say that.

Building using MSVC against 1.10.0 and running against 1.10.0.1 works fine.
Building using MSVC against 1.10.0.1 and running against 1.10.0.1 works fine.
Building using MSVC against 1.10.0.1 and running against 1.10.0 exhibits the bug.
Building using MSVC against 1.10.0 and running against 1.10.0 exhibits the bug.

The strangest part is that I tested all permutations of MinGW and MSVC before the release, and it always works from a manually-built Cerbero build.
Comment 4 Sebastian Dröge (slomo) 2016-11-21 10:58:57 UTC
commit ffc6cd333f9cc9a3171a1ec9aa50ac0e9fd893b0
Author: Sebastian Dröge <sebastian@centricular.com>
Date:   Mon Nov 21 12:54:37 2016 +0200

    genlib: Warn if using dlltool and support newer VS versions than 2010
    
    If we generate .lib files with dlltool, they won't work very well with
    Visual Studio and can result in missing symbols.
    
    https://sourceware.org/bugzilla/show_bug.cgi?id=12633
    
    https://bugzilla.gnome.org/show_bug.cgi?id=773889
Comment 5 Sebastian Dröge (slomo) 2016-11-22 11:20:49 UTC
Confirmed in all variants