Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 632010

Summary: Weird C++ ABI mismatch error
Product: Gentoo Linux Reporter: Thomas Capricelli <orzel>
Component: Current packagesAssignee: Gentoo Linux bug wranglers <bug-wranglers>
Status: RESOLVED NEEDINFO    
Severity: normal CC: hydrapolic, jstein
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Thomas Capricelli 2017-09-25 17:56:55 UTC
I'm using 6.4.0. I was using 5.x before this. I'me aware of

    https://wiki.gentoo.org/wiki/Upgrading_GCC

and i've followed what's described here.

I have the following problem though, when starting poedit that was emerged very recently (hence using gcc 6.4.0 for sure):

------------------------------------------------------
% poedit 
Fatal Error: Mismatch between the program and library build versions detected.
The library used 3.0 (wchar_t,compiler with C++ ABI 1009,wx containers,compatible with 2.8),
and your program used 3.0 (wchar_t,compiler with C++ ABI 1010,wx containers,compatible with 2.8).
Abort (core dumped)
------------------------------------------------------

I kinda guess the solution is to recompile wxwidgets (x11-libs/wxGTK i guess). This lib was installed long ago (october 2016), so probably using gcc 5.x.

I tried switching between those implementation, but the behaviour is the same:

------------------------------------------------------
% eselect wxwidgets list
Available wxWidgets profiles:
  [1]   gtk2-unicode-3.0
  [2]   gtk2-unicode-release-2.8
  [3]   gtk3-unicode-3.0-gtk3 *
------------------------------------------------------

I dont understand the problem as both poedit and the wxwidgets lib seem to use the libstdc++.so.6 :

------------------------------------------------------
% ldd /usr/lib64/libwx_gtk3u_stc-3.0-gtk3.so.0 | grep std
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/libstdc++.so.6 (0x00007ff76bfb0000)

% ldd /usr/bin/poedit | grep stdc++
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/libstdc++.so.6 (0x00007fadb6d2a000)

------------------------------------------------------

The bug report is the following: did I miss something when upgrading gcc/g++ ? If so, what ? If not, what else caused this breaking.

And of course, in any case, how can I fix this ?
Comment 1 Tomáš Mózes 2017-09-26 03:28:25 UTC
Does revdep-rebuild help?

https://www.gentoo.org/support/news-items/2015-10-22-gcc-5-new-c++11-abi.html
Comment 2 Tomáš Mózes 2017-09-26 04:49:18 UTC
This would be more appropriate on the forums I suppose.

I've just successfully merged poedit, so maybe try rebuilding everything if revdep-rebuild doesn't help: emerge -eva1 @world
Comment 3 Jonas Stein gentoo-dev 2017-10-07 14:36:13 UTC
It is sad to read that you have problems with the software. The situation seems to be a bit more complicate and requires some analysis.
We can not help you efficiently via bug tracker. The bug tracker aims rather on specific problems in .ebuilds and less on individual systems. 

I have had very good experience on the gentoo IRC [1] with questions like this. Of course there are also forums and mailing lists [2,3].
I hope you understand, that I will close the bug here therefore and wish you good luck on one of the mentioned channels [4].
Please reopen the ticket in order to provide an indication for an specific error in an ebuild or any gentoo related product.

[1] https://www.gentoo.org/get-involved/irc-channels/
[2] https://forums.gentoo.org/
[3] https://www.gentoo.org/get-involved/mailing-lists/all-lists.html
[4] https://www.gentoo.org/support/
Comment 4 Thomas Capricelli 2017-10-08 21:13:53 UTC
(In reply to Jonas Stein from comment #3)
> I hope you understand, that I will close the bug here therefore and wish you
> good luck on one of the mentioned channels [4].

Yes, sure, I'll deal with it outside of bugs.gentoo.org, no problem.

I highly doubt I'll try the "emerge everything again". My purpose was, and still is, to understand what happened. Re-emerging everything is tedious and will definitely hide the problem