On 12/02/2010 02:23 PM, Dane Springmeyer wrote:
Hello,

I recently recompiled my C++ app (mapnik.org, which uses boost python for 
python binding) with -m64 flags for 64 bit operation and this broke the boost 
python exception handling.

Instead of C++ exceptions being propagated to python exceptions, I get 
segmentation faults (core dump).

I have a long dependency chain that all needs to be 64 bit, so I'm really stuck 
unless I can find a way to restore boost python's ability to handle exceptions 
without crashing.

Exceptions are very common during setup of mapnik, and are needed to report 
basic configuration issues as a user gets set up.

I'm desperate to try anything that might help - anyone have any suggestions?

What i have tried so far:

1) recompiling all apps with -02 instead of -03
2) making sure all apps are compiled with the exact same version of gcc (at 
least all the C++ libraries I have compiled from source)
3) ensured that all dynamic libraries link to the same libgcc_s.so.1 and 
libstdc++.so.6.
4) tried with both boost 1.44 and 1.45

I'm out of ideas - anyone have suggestions to try?


I'm not running Solaris, so I can't help too much specifically, but it sounds like you might learn a lot from trying exceptions in a non-Boost Python module compiled in C++. Perhaps just take the first example here:

http://docs.python.org/extending/

and add a function that throws and catches an exception.

If that succeeds, try throwing and catching in a shared library that's linked to your Python module, and then try throwing and catching across the library boundary.

You might also want to check the compile flags for Python itself, just in case there's something obviously different there between 64-bit and 32-bit on Solaris.


Good luck!

Jim Bosch


_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to