[C++-sig] Re: Boost::Python for C code -> Segmentation fault

sashan sashang at ihug.co.nz
Wed Jul 28 05:39:06 CEST 2004


Mario Palomo wrote:
> It doesn't work. I get the same segfault with the extern "C" and without 
> the extern "C".
> 
> I'll try make_setter and make_getter rather than def_readwrite(). Then 
> I'll try to run python inside gdb and get a backtrace (bt) of where the 
> segfault is happening... Can someone reproduce my segfault?
> 

For what its worth I can repro it.

/***************************************************************/
#include <stdio.h>

typedef struct user {
   char *name;
   int number;
}user;

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include <boost/python/class.hpp>
using namespace boost::python;

BOOST_PYTHON_MODULE(segfault)
{
   class_<user>("user")
     .def_readwrite("name",   &user::name)
     .def_readwrite("number", &user::number)
   ;
}
/***************************************************************/
To build:
g++ -g -c segfault.cpp -Wall -I/usr/include/python2.3
ld -shared -o segfault.so segfault.o -lboost_python

Running:
from segfault import *
u = user()
u.number = 1
Segmentation fault

I'm using the boost package that comes with Gentoo's portage system. 
I've never had any luck building python extensions with it. The only way 
i've been able to build extensions is by downloading the tarball, and 
setting up the boost stuff from there and using bjam to build the extension.
-- 
sashan




More information about the Cplusplus-sig mailing list