[Pythonmac-SIG] C++ ABI 1002/102 incompatibility with wxPython
Brendan Simon (eTRIX)
brendan.simon at etrix.com.au
Sun Feb 6 10:47:37 CET 2011
On 26/01/11 4:06 AM, Christopher Barker wrote:
> On 1/25/11 1:20 AM, Brendan Simon (eTRIX) wrote:
>> I have a wxPython app that is built with py2app. A user recently
>> reported the following error when trying to run the app.
>>
>> Fatal Error: Mismatch between the program and library build versions
>> detected.
>> The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1002,wx
>> containers,compatible with 2.6),
>> and your program used 2.8 (no debug,Unicode,compiler with C++ ABI
>> 102,wx containers,compatible with 2.6).
>> Abort trap
>> logout
As others have informed me, the C++ ABI changed from gcc-3.3 to gcc-3.4
(and beyond).
> Meanwhile a couple questions/thoughts:
>
> > It appears to be a difference in the wx libraries on the target system
>> and the wx libraries on the build system.
>>
>> Unfortunately, at this stage, I do not know what the OS X version is on
>> the target system.
>>
>> The app was built using Python 2.5.4, (wxPython 2.8.11.0 or 2.8.4.2 ??)
>> on OS X 10.6.6.
>
> Is that the "apple's" python? i.e. the one in:
>
> /System/Library/Frameworks/Python.framework/Versions/2.5
>
> If so, that is likely your problem. py2app does not bundle up everything
> if you're using Apple's python, so your python install and your users
> may be different.
It's not Apple's python. It is 2.5.4 from Python.org.
>> Is there anyway to fix this with a py2app setting ??
>
> not until we figure out what's wrong...
>
>> Doesn't py2app copy all the libraries to the app bundle ??
>
> it should, but it won't if you are using Apple's python, and sometimes
> things go wrong. wxPython puts itself in /usr/local/, while putting
> nifty sys.path manipulations in the python installs, so things can get a
> bit confused. But it's done so that one installer can support both
> python,org and apple pythons.
>
>> I guess that
>> doesn't guarantee that the libraries will load on any OS.
>
> no, it doesn't, but it should load on any version that your supporting
> libs are built for -- the standard wxPython installers are built for
> 10.4 and above (maybe 10.3.9 --not sure about that), and so is the
> python,org python -- are you using any other third-party libs that
> aren't pure python?
I have more info now. The app is being run on a PPC Mac with 10.4.11
(Tiger). Tiger should be fine in terms of ABI compatibility for
wxPython and Python.
I now have a 10.4.11 PowerPC Mac and can replicate the problem, though
it was a 10.2 (Jaguar) system that I upgraded to 10.4 (Tiger). i.e.
it's not a fresh install of Tiger.
$ file /Applications/MyApp.app/Contents/MyApp
MyApp: Mach-O fat file with 2 architectures
MyApp (for architecture ppc): Mach-O executable ppc
MyApp (for architecture i386): Mach-O executable i386
$ /Applications/MyApp.app/Contents/MacOS/MyApp
Fatal Error: Mismatch between the program and library build versions
detected.
The library used 2.8 (debug,Unicode,compiler with C++ ABI 1002,wx
containers,compatible with 2.6)
and wxPython used 2.8 (debug,Unicode,compiler with C++ ABI 102,wx
containers,compatible with 2.6)
Abort
$ /Applications/MyApp.app/Contents/MacOS/python
Could not find platform independent libraries <exec_prefix>
Consider setting $PYTHONPATH to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Python 2.5.4 (r254:67917, Dec 23 2008, 14:57:27)
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
>>> import sys
>>> for l in sys.path: print l
...
/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk
/Library/Frameworks/Python.framework/Versions/2.5/lib/lib-dynload
>>>
$ ls -l /Library/Frameworks/
$
No output from above command, but it shouldn't matter right, as all
libraries should be in the app bundle, right ??
More information about the Pythonmac-SIG
mailing list