Dynamic library problems with Python and libstdc++
Backstory
--------

I'm creating a Python module using SWIG on an older computer (running 10.5.8). For various reasons, I am using GCC 4.5 (installed via MacPorts) to do this, using Python 2.7 (installed via MacPorts, compiled using the system-default GCC 4.0.1).

Observed Behavior
--------

To make a long story short: calling `str( myObject )` in Python causes the C++ code in turn to call `std::operator<< <std::char_traits<char> > `. This generates the following error:

    Python(487) malloc: *** error for object 0x69548c: Non-aligned pointer being freed
    *** set a breakpoint in malloc_error_break to debug

Setting a breakpoint and calling `backtrace` when it fails gives:

    #0  0x9734de68 in malloc_error_break ()
    #1  0x97348ad0 in szone_error ()
    #2  0x97e6fdfc in std::string::_Rep::_M_destroy ()
    #3  0x97e71388 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string ()
    #4  0x97e6b748 in std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow ()
    #5  0x97e6e7a0 in std::basic_streambuf<char, std::char_traits<char> >::xsputn ()
    #6  0x00641638 in std::__ostream_insert<char, std::char_traits<char> > ()
    #7  0x006418d0 in std::operator<< <std::char_traits<char> > ()
    #8  0x01083058 [my code]

Suspected issue
--------

I believe the issue to be that my code links against a new version of libstdc++:

    /opt/local/lib/gcc45/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.14.0)

whereas the Python binary has a very indirect dependence on the system `libstdc++`, which loads first (output from `info shared` in gdb):

      1 dyld                  - 0x8fe00000        dyld Y Y /usr/lib/dyld at 0x8fe00000 (offset 0x0) with prefix "__dyld_"
      2 Python                - 0x1000            exec Y Y /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (offset 0x0)
                                              (objfile is) /opt/local/bin/python
      3 Python                F 0x219000          dyld Y Y /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python at 0x219000 (offset 0x219000)
      4 libSystem.B.dylib     - 0x9723d000        dyld Y Y /usr/lib/libSystem.B.dylib at 0x9723d000 (offset -0x68dc3000)
                                     (commpage objfile is) /usr/lib/libSystem.B.dylib[LC_SEGMENT.__DATA.__commpage]
      5 CoreFoundation        F 0x970b3000        dyld Y Y /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation at 0x970b3000 (offset -0x68f4d000)
      6 libgcc_s.1.dylib      - 0x923e6000        dyld Y Y /usr/lib/libgcc_s.1.dylib at 0x923e6000 (offset -0x6dc1a000)
      7 libmathCommon.A.dylib - 0x94af5000        dyld Y Y /usr/lib/system/libmathCommon.A.dylib at 0x94af5000 (offset -0x6b50b000)
      8 libicucore.A.dylib    - 0x97cf4000        dyld Y Y /usr/lib/libicucore.A.dylib at 0x97cf4000 (offset -0x6830c000)
      9 libobjc.A.dylib       - 0x926f0000        dyld Y Y /usr/lib/libobjc.A.dylib at 0x926f0000 (offset -0x6d910000)
                                     (commpage objfile is) /usr/lib/libobjc.A.dylib[LC_SEGMENT.__DATA.__commpage]
     10 libauto.dylib         - 0x95eac000        dyld Y Y /usr/lib/libauto.dylib at 0x95eac000 (offset -0x6a154000)
     11 libstdc++.6.0.4.dylib - 0x97e3d000        dyld Y Y /usr/lib/libstdc++.6.0.4.dylib at 0x97e3d000 (offset -0x681c3000)
    **** my Python _module.so and a few more shared libraries it depends on ****
    15 libstdc++.6.dylib     - 0x600000          dyld Y Y /opt/local/lib/gcc45/libstdc++.6.dylib at 0x600000 (offset 0x600000)
    **** more libraries ****

Is my guess right? 


Attempted resolutions
--------

I tried to force MacPorts to build Python using GCC 4.5 rather than the Apple compiler, but the install phase fails because it needs to create a Mac "Framework", which vanilla GCC apparently doesn't do.

I tried the `-static-libstdc++` compiler flag when building and linking my shared library, but `otool -L` (the mac analog of `ldd`) still shows the GCC 4.5 library as a dependent, and the code still crashes.

I tried modifying DYLD_LIBRARY_PATH by prepending `/opt/local/lib/gcc45/` but without avail.

What can I do to get this to work? I'm at my wit's end.
Dynamic library problems with Python and libstdc++
===

Backstory
--------

I'm creating a Python module using SWIG on an older computer (running 10.5.8). For various reasons, I am using GCC 4.5 (installed via MacPorts) to do this, using Python 2.7 (installed via MacPorts, compiled using the system-default GCC 4.0.1).

Observed Behavior
--------

To make a long story short: calling `str( myObject )` in Python causes the C++ code in turn to call `std::operator<< <std::char_traits<char> > `. This generates the following error:

    Python(487) malloc: *** error for object 0x69548c: Non-aligned pointer being freed
    *** set a breakpoint in malloc_error_break to debug

Setting a breakpoint and calling `backtrace` when it fails gives:

    #0  0x9734de68 in malloc_error_break ()
    #1  0x97348ad0 in szone_error ()
    #2  0x97e6fdfc in std::string::_Rep::_M_destroy ()
    #3  0x97e71388 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string ()
    #4  0x97e6b748 in std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow ()
    #5  0x97e6e7a0 in std::basic_streambuf<char, std::char_traits<char> >::xsputn ()
    #6  0x00641638 in std::__ostream_insert<char, std::char_traits<char> > ()
    #7  0x006418d0 in std::operator<< <std::char_traits<char> > ()
    #8  0x01083058 [my code]

Suspected issue
--------

I believe the issue to be that my code links against a new version of libstdc++:

    /opt/local/lib/gcc45/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.14.0)

whereas the Python binary has a very indirect dependence on the system `libstdc++`, which loads first (output from `info shared` in gdb):

      1 dyld                  - 0x8fe00000        dyld Y Y /usr/lib/dyld at 0x8fe00000 (offset 0x0) with prefix "__dyld_"
      2 Python                - 0x1000            exec Y Y /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (offset 0x0)
                                              (objfile is) /opt/local/bin/python
      3 Python                F 0x219000          dyld Y Y /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python at 0x219000 (offset 0x219000)
      4 libSystem.B.dylib     - 0x9723d000        dyld Y Y /usr/lib/libSystem.B.dylib at 0x9723d000 (offset -0x68dc3000)
                                     (commpage objfile is) /usr/lib/libSystem.B.dylib[LC_SEGMENT.__DATA.__commpage]
      5 CoreFoundation        F 0x970b3000        dyld Y Y /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation at 0x970b3000 (offset -0x68f4d000)
      6 libgcc_s.1.dylib      - 0x923e6000        dyld Y Y /usr/lib/libgcc_s.1.dylib at 0x923e6000 (offset -0x6dc1a000)
      7 libmathCommon.A.dylib - 0x94af5000        dyld Y Y /usr/lib/system/libmathCommon.A.dylib at 0x94af5000 (offset -0x6b50b000)
      8 libicucore.A.dylib    - 0x97cf4000        dyld Y Y /usr/lib/libicucore.A.dylib at 0x97cf4000 (offset -0x6830c000)
      9 libobjc.A.dylib       - 0x926f0000        dyld Y Y /usr/lib/libobjc.A.dylib at 0x926f0000 (offset -0x6d910000)
                                     (commpage objfile is) /usr/lib/libobjc.A.dylib[LC_SEGMENT.__DATA.__commpage]
     10 libauto.dylib         - 0x95eac000        dyld Y Y /usr/lib/libauto.dylib at 0x95eac000 (offset -0x6a154000)
     11 libstdc++.6.0.4.dylib - 0x97e3d000        dyld Y Y /usr/lib/libstdc++.6.0.4.dylib at 0x97e3d000 (offset -0x681c3000)
    **** my Python _module.so and a few more shared libraries it depends on ****
    15 libstdc++.6.dylib     - 0x600000          dyld Y Y /opt/local/lib/gcc45/libstdc++.6.dylib at 0x600000 (offset 0x600000)
    **** more libraries ****

Is my guess right? 


Attempted resolutions
--------

I tried to force MacPorts to build Python using GCC 4.5 rather than the Apple compiler, but the install phase fails because it needs to create a Mac "Framework", which vanilla GCC apparently doesn't do.

I tried the `-static-libstdc++` compiler flag when building and linking my shared library, but `otool -L` (the mac analog of `ldd`) still shows the GCC 4.5 library as a dependent, and the code still crashes.

I tried modifying DYLD_LIBRARY_PATH by prepending `/opt/local/lib/gcc45/` but without avail.

What can I do to get this to work? I'm at my wit's end.