Boost logo

Boost :

From: Andreas Dietrich (quasi_at_[hidden])
Date: 2001-08-17 13:52:16

On Fri, Aug 17, 2001 at 11:31:12AM -0400, David Abrahams wrote:
> Well, I don't think this is too hard to figure out, even for the
> uninitiated. Just look at
> /home/dada/boost_1_23_0/boost/python/conversions.hpp:327, as indicated
> below. My theory is borne out:
> inline PyObject* to_python(PyObject* p)
> {
> Py_INCREF(p); <<<<<<<<<<<<
> return p;
> }

Ok. You are right ;-) I was confused, because I was pretty sure
that it crashed before test even got called. Here is why:

#include <Python.h>
#include <stdexcept>
namespace {
   PyObject *test(int l,int h){
      throw std::runtime_error("hello");
      return 0;
#include <boost/python/class_builder.hpp>
namespace python = boost::python;
  try {
    python::module_builder this_module("crash");
  catch(...) {

This snippet also leads to a segfault, unfortunately a different one:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 8469)]
0x40254753 in __sjpopnthrow () from /usr/lib/

So it looks like my compiler is broken :-(. I still think the orignal code
should not seg-fault, but return None to python, but this should be trivial
to add.


"We've heard that a million monkeys at a million keyboards could produce the
complete works of Shakespeare. Now, thanks to the Internet, we know this is not
true."  -- Robert Wilensky

Boost list run by bdawes at, gregod at, cpdaniel at, john at