Bugzilla – Bug 986540
wx library ABI incompatible with its applications
Last modified: 2017-02-17 17:06:02 UTC
Hugin and PyOBD (a Python app) do not start due to Wx ABI incompatibility: lpechacek@fmn:~/Downloads/pyobd-0.9.2> ./pyobd Fatal Error: Mismatch between the program and library build versions detected. The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1009,STL containers,compatible with 2.6), and wxPython used 2.8 (no debug,Unicode,compiler with C++ ABI 1010,STL containers,compatible with 2.6). Aborted (core dumped) lpechacek@fmn:~/Downloads/pyobd-0.9.2> hugin Fatal Error: Mismatch between the program and library build versions detected. The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1009,STL containers,compatible with 2.6), and your program used 2.8 (no debug,Unicode,compiler with C++ ABI 1010,STL containers,compatible with 2.6). Aborted (core dumped) lpechacek@fmn:~/Downloads/pyobd-0.9.2> gdb hugin GNU gdb (GDB; openSUSE Tumbleweed) 7.11 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i586-suse-linux". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://bugs.opensuse.org/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from hugin...(no debugging symbols found)...done. Missing separate debuginfos, use: zypper install hugin-debuginfo-2016.0.0-1.3.i586 (gdb) run Starting program: /usr/bin/hugin [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1". Fatal Error: Mismatch between the program and library build versions detected. The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1009,STL containers,compatible with 2.6), and your program used 2.8 (no debug,Unicode,compiler with C++ ABI 1010,STL containers,compatible with 2.6). Program received signal SIGABRT, Aborted. 0xb7fd9f3d in __kernel_vsyscall () (gdb)
Where may I find this pyodb in the build service?
pyOBD is not part of openSUSE distribution unlike wxWidgets which it is using. For debugging you can use Hugin, which is included in the distro.
As expected, with today's Tumbleweed release, the issue is gone. Question remains if this condition could be prevented through package dependencies.
Which dependency would you like to see that is currently missing?
I am afraid that there is no easy way to prevent this type of breakage without recompilation of all applications. wxWidgets developers don't care about a stable ABI. They care only about stable API. Configure options, libraries available, library versions, compiler versions… Everything that can cause ABI breakage. It caused many obscure crashes in past. wxWidgets developers decided to solve this problem by adding an ABI consistency checks. Crashes are now clean and well defined. I tried to prevent the ABI incompatibility by adding four ABI variants of wxWidgets to the distro. But it caused different type of problems (library outside the default searching paths, need for RPATH, compatibility with no more than one variant of ABI by applications compiled without specially crafted wxGTK…) WONTFIX = CANTFIX. It is a decision of upstream.
To be fair, the problem lies with the ABI "breakage" of G++ (g++ -fabi-version=n, and n is a moving target), and the fact that transitive rebuilds are disabled in openSUSE:Factory. (osc meta prj openSUSE:Factory: note the rebuild=local, which means "rebuild on source change only").
In this case, yes. But wxGTK will break in many other cases: - enable/disable Unicode - enable/disable STL - enable/disable 2.4 compatibility ...
(In reply to Stanislav Brabec from comment #7) > In this case, yes. But wxGTK will break in many other cases: > - enable/disable Unicode > - enable/disable STL > - enable/disable 2.4 compatibility > ... Indeed; though for openSUSE, I consider the ABI breakage that results from --enable-thisandthat a solved issue, since we just assign a unique SONAME for a particular set of {flags, shipped wx version}. The number of problem cases is therefore really just down to __GXX_ABI_VERSION. I already thought about just always using e.g. -fabi-version=2, but I wonder what effect this has on wx-using programs which would go on using -fabi-version=latest.
A patch has been added to upstream and openSUSE… only "a few" more days until it's in Tumbleweed.
. *** This bug has been marked as a duplicate of bug 953017 ***