Bug 951588

Summary: Missing symbol g_get_home_dir_utf8 on x64
Product: [Fedora] Fedora Reporter: Marc-Andre Lureau <marcandre.lureau>
Component: mingw-glib2Assignee: Richard W.M. Jones <rjones>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 19CC: dieterv, erik-fedora, fedora-mingw, fedora, kalevlember, lfarkas, rjones
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-04-20 19:37:28 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Marc-Andre Lureau 2013-04-12 14:14:51 UTC
A number of mingw64 64 bit DLL require g_get_home_dir_utf8() but it is no longer exported:

Binary file gtk-demo.exe matches
Binary file libgstpbutils-0.10-0.dll matches
Binary file libgstreamer-0.10-0.dll matches
Binary file libgtk-win32-2.0-0.dll matches
Binary file libspice-client-glib-2.0-8.dll matches


gendef - libglib-2.0-0.dll | grep g_get_home
 * [libglib-2.0-0.dll] Found PE+ image
g_get_home_dir

Comment 1 Erik van Pienbroek 2013-04-12 14:33:49 UTC
That's odd. IIRC this symbol should only be exported for the win32 target, not for the win64 target..

Comment 2 Dieter Verfaillie 2013-04-12 20:54:55 UTC
(In reply to comment #1)
> That's odd. IIRC this symbol should only be exported for the win32 target,
> not for the win64 target..

That is correct, the _utf8() variants should only exist in 32 bit binaries.
Code calling the non _utf8() variants when compiled against a glib newer than
2.18 (iirc) automatically use the _utf8() dll entry points. The non _utf8()
dll entry points are (or where) provided for backward compatibility. In
other words, to support binaries compiled against a glib version older
than 2.18 (again, iirc). At least, that was the idea back when this
was implemented.

This compatibility problem never existed with 64 bit binaries, hence the
_utf8() variants should simply not exist there.

Comment 3 Marc-Andre Lureau 2013-04-12 21:19:14 UTC
I really do want to believe you guys, but the fact is we have several mingw64 binaries in fedora that use that symbols. WebKit is also missing from the list above.

So I suggest we just change the ifdef line that exclude x64 platform, at least for now. Or someone needs to rebuild those packages against newer glib, asap would be nice :)

Comment 4 Erik van Pienbroek 2013-04-12 21:22:07 UTC
This upstream commit looks related to this issue: https://git.gnome.org/browse/glib/commit/?id=8c42a663f8182f8281c083390aa761e8e9badc63
If this really is the case then this issue should have started to appear as of glib 2.35.9.

The odd thing about this commit is that apparently the _utf8 wrappers were also used on Win64 (everything is inside an #ifdef G_OS_WIN32 block). Therefore both win32 and win64 binaries which were built against an older version of glib may have still used these symbols (as can be seen with the grep output in the comment 0).

The most straightforward way to resolve this issue would be to rebuild the packages in question which are still using the _utf8 wrappers. However, end-user compiled binaries may also be affected and I'm not sure whether we can accept this ABI break in glib...

Comment 5 Marc-Andre Lureau 2013-04-15 14:15:49 UTC
(In reply to comment #4)
> This upstream commit looks related to this issue:
> https://git.gnome.org/browse/glib/commit/
> ?id=8c42a663f8182f8281c083390aa761e8e9badc63
> If this really is the case then this issue should have started to appear as
> of glib 2.35.9.

Yes, it looks to me like a mistake. #ifdef G_OS_WIN32 doesn't mean 32bit only,  it is true for win64 as well. So that commit looks wrong to me.

I would suggest 64 bit has the same compatibility as 32 bit, so we remove the
-#if defined (G_OS_WIN32) && !defined (_WIN64)
+#if defined (G_OS_WIN32)

Comment 6 Marc-Andre Lureau 2013-04-15 15:28:55 UTC
(upstream https://bugzilla.gnome.org/show_bug.cgi?id=697879)

Comment 7 Fedora Update System 2013-04-16 11:41:18 UTC
mingw-w64-tools-2.0.999-0.7.trunk.20130403.fc19,mingw-qt-4.8.4-3.fc19,mingw-libxml2-2.9.0-3.fc19,mingw-headers-2.0.999-0.19.trunk.20130403.fc19,mingw-glib2-2.36.1-1.fc19,mingw-gtk2-2.24.17-1.fc19,mingw-gcc-4.8.0-3.fc19,mingw-crt-2.0.999-0.19.trunk.20130403.fc19,mingw-binutils-2.23.52.0.1-1.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/mingw-w64-tools-2.0.999-0.7.trunk.20130403.fc19,mingw-qt-4.8.4-3.fc19,mingw-libxml2-2.9.0-3.fc19,mingw-headers-2.0.999-0.19.trunk.20130403.fc19,mingw-glib2-2.36.1-1.fc19,mingw-gtk2-2.24.17-1.fc19,mingw-gcc-4.8.0-3.fc19,mingw-crt-2.0.999-0.19.trunk.20130403.fc19,mingw-binutils-2.23.52.0.1-1.fc19

Comment 8 Fedora Update System 2013-04-16 16:09:58 UTC
Package mingw-w64-tools-2.0.999-0.7.trunk.20130403.fc19, mingw-qt-4.8.4-3.fc19, mingw-libxml2-2.9.0-3.fc19, mingw-headers-2.0.999-0.19.trunk.20130403.fc19, mingw-glib2-2.36.1-1.fc19, mingw-gtk2-2.24.17-1.fc19, mingw-gcc-4.8.0-3.fc19, mingw-crt-2.0.999-0.19.trunk.20130403.fc19, mingw-binutils-2.23.52.0.1-1.fc19:
* should fix your issue,
* was pushed to the Fedora 19 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing mingw-w64-tools-2.0.999-0.7.trunk.20130403.fc19 mingw-qt-4.8.4-3.fc19 mingw-libxml2-2.9.0-3.fc19 mingw-headers-2.0.999-0.19.trunk.20130403.fc19 mingw-glib2-2.36.1-1.fc19 mingw-gtk2-2.24.17-1.fc19 mingw-gcc-4.8.0-3.fc19 mingw-crt-2.0.999-0.19.trunk.20130403.fc19 mingw-binutils-2.23.52.0.1-1.fc19'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2013-5786/mingw-w64-tools-2.0.999-0.7.trunk.20130403.fc19,mingw-qt-4.8.4-3.fc19,mingw-libxml2-2.9.0-3.fc19,mingw-headers-2.0.999-0.19.trunk.20130403.fc19,mingw-glib2-2.36.1-1.fc19,mingw-gtk2-2.24.17-1.fc19,mingw-gcc-4.8.0-3.fc19,mingw-crt-2.0.999-0.19.trunk.20130403.fc19,mingw-binutils-2.23.52.0.1-1.fc19
then log in and leave karma (feedback).

Comment 9 Fedora Update System 2013-04-20 19:37:30 UTC
mingw-w64-tools-2.0.999-0.7.trunk.20130403.fc19, mingw-qt-4.8.4-3.fc19, mingw-libxml2-2.9.0-3.fc19, mingw-headers-2.0.999-0.19.trunk.20130403.fc19, mingw-glib2-2.36.1-1.fc19, mingw-gtk2-2.24.17-1.fc19, mingw-gcc-4.8.0-3.fc19, mingw-crt-2.0.999-0.19.trunk.20130403.fc19, mingw-binutils-2.23.52.0.1-1.fc19 has been pushed to the Fedora 19 stable repository.  If problems still persist, please make note of it in this bug report.