Bug 986540 - wx library ABI incompatible with its applications
wx library ABI incompatible with its applications
Status: RESOLVED DUPLICATE of bug 953017
Classification: openSUSE
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: X11 Applications
Current
Other Other
: P5 - None : Critical (vote)
: ---
Assigned To: Stanislav Brabec
E-mail List
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2016-06-26 11:51 UTC by Libor Pechacek
Modified: 2017-02-17 17:06 UTC (History)
1 user (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Libor Pechacek 2016-06-26 11:51:09 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)
Comment 1 Jan Engelhardt 2016-06-28 15:46:55 UTC
Where may I find this pyodb in the build service?
Comment 2 Libor Pechacek 2016-06-29 11:47:50 UTC
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.
Comment 3 Libor Pechacek 2016-06-29 12:29:43 UTC
As expected, with today's Tumbleweed release, the issue is gone.  Question remains if this condition could be prevented through package dependencies.
Comment 4 Jan Engelhardt 2016-06-29 12:33:51 UTC
Which dependency would you like to see that is currently missing?
Comment 5 Stanislav Brabec 2016-06-30 13:33:58 UTC
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.
Comment 6 Jan Engelhardt 2016-06-30 14:24:52 UTC
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").
Comment 7 Stanislav Brabec 2016-07-01 14:10:50 UTC
In this case, yes. But wxGTK will break in many other cases:
- enable/disable Unicode
- enable/disable STL
- enable/disable 2.4 compatibility
...
Comment 8 Jan Engelhardt 2016-07-01 14:54:02 UTC
(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.
Comment 9 Jan Engelhardt 2017-02-06 16:58:09 UTC
A patch has been added to upstream and openSUSE… only "a few" more days until it's in Tumbleweed.
Comment 10 Jan Engelhardt 2017-02-17 17:06:02 UTC
.

*** This bug has been marked as a duplicate of bug 953017 ***