You're passing a null object pointer, so BPL correctly fails an 
assertion check?

Niall

On 28 May 2012 at 21:39, Adam Preble wrote:

> I wanted to provide an instance of a particular object I'm using for
> Stackless Python state management.  I'm trying to take over the green
> thread management so I can do my own scheduling--but that's only context.
>  In the attached code, I'm trying to do some of life's more simple things.
>  I have the main module, and the scope for that module.  With this, I had
> hoped I could embed an actual instance of an object.  From there I
> anticipate calling it from Python without having to import or do anything
> else.  I figured I'd take the main script scope, add an object called
> "runtime", and set it to the one in my C++ runtime.
> 
> It compiles fine but blows up during runtime with the ever-descriptive
> "error_already_set()" without a message.
> 
> This problem only seems to touch the Boost part of the runtime so I don't
> think that's an issue.  I'm using Stackless Python 2.6.5, with Boost 1.49,
> on Windows Vista with Visual Studio 2010.
> 
> I had as my inspiration this:
> http://wiki.python.org/moin/boost.python/HowTo#module_level_objects
> 
> Which doesn't look to be current.  I can't figure out how to use the
> run-time example there, in particular.  It looks like calling interpreter()
> is not supported, or I have no idea how to make it happen.
> 
> I'm doing something like this:
> EmbeddedSynchronization embeddedSync;        // A class member up above
> ...
> 
> [Did the PyInitialize]
> boost::python::handle<>
> mainHandle(boost::python::borrowed(PyImport_AddModule("__main__")));
> boost::python::object   mainModule(mainHandle);
> boost::python::scope    mainScope(mainModule);
> 
> boost::python::object   class_oClassSync =
> boost::python::class_<EmbeddedSynchronization,
> boost::noncopyable>("EmbeddedSynchronization")
>                                             .def("nap",
> &EmbeddedSynchronization::beNice)
>                                             .staticmethod("nap");
> 
> mainScope().attr("runtime") = embeddedSync;         // Dead right here
> 
> Stack trace going down in there:
> > StacklessEmbedding.exe!boost::python::throw_error_already_set()  Line 62
> C++
>   StacklessEmbedding.exe!boost::python::expect_non_null<_object>(_object *
> x)  Line 46 C++
>   
> StacklessEmbedding.exe!boost::python::converter::detail::return_object_manager_from_python<boost::python::api::object>::operator()(_object
> * obj)  Line 156 + 0x9 bytes C++
>   
> StacklessEmbedding.exe!boost::python::call<boost::python::api::object>(_object
> * callable, boost::type<boost::python::api::object> * __formal)  Line 76 +
> 0x10 bytes C++
>   
> StacklessEmbedding.exe!boost::python::api::object_operators<boost::python::api::object>::operator()()
>  Line 54 + 0x14 bytes C++
> 
> Anything obviously wrong?
> 


-- 
Technology & Consulting Services - ned Productions Limited.
http://www.nedproductions.biz/. VAT reg: IE 9708311Q.
Work Portfolio: http://careers.stackoverflow.com/nialldouglas/



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

Reply via email to