The problem doesn't have anything to do with boost.python. The thing is in 
initializing numpy API pointer specifically PyArray_API*. If you print this 
pointer before creating the array, it'll turn out to be null. If you move 
import_array function just before the array creation call, it should work. You 
can find more details here 
http://docs.scipy.org/doc/numpy/reference/c-api.array.html in Miscellaneous 
section at the bottom. 

Regards,
Alexandra

> 05 авг. 2016 г., в 20:00, cplusplus-sig-requ...@python.org написал(а):
> 
> Send Cplusplus-sig mailing list submissions to
>    cplusplus-sig@python.org
> 
> To subscribe or unsubscribe via the World Wide Web, visit
>    https://mail.python.org/mailman/listinfo/cplusplus-sig
> or, via email, send a message with subject or body 'help' to
>    cplusplus-sig-requ...@python.org
> 
> You can reach the person managing the list at
>    cplusplus-sig-ow...@python.org
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Cplusplus-sig digest..."
> 
> 
> Today's Topics:
> 
>   1. Segmentation Fault (core dumped) on Python 3.5.2 but not
>      Python 2.7.12 (Matthew Conte)
>   2. Re: Segmentation Fault (core dumped) on Python 3.5.2 but not
>      Python 2.7.12 (Stefan Seefeld)
>   3. Re: Segmentation Fault (core dumped) on Python 3.5.2 but not
>      Python 2.7.12 (Matthew Conte)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Thu, 4 Aug 2016 13:10:23 -0400
> From: Matthew Conte <matt.p.co...@gmail.com>
> To: cplusplus-sig@python.org
> Subject: [C++-sig] Segmentation Fault (core dumped) on Python 3.5.2
>    but not Python 2.7.12
> Message-ID:
>    <CAFwmYYjxXXVQV=6wv8x_q4uc2gjogr1or_jsurhp3kcmreb...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> So I'm trying to create a boost python module that simply creates and
> returns a numpy array,
> but the function crashes (sometimes) and it doesn't ever seem to crash on
> Python 2.
> 
> Here's the source code I made:
> 
> #include <boost/python.hpp>
> #include <numpy/ndarrayobject.h>
> 
> using namespace boost::python;
> 
> object create_numpy_array() {
> npy_intp dims = 1;
> long* data = new long[1];
> data[0] = 1;
> PyObject* obj = PyArray_SimpleNewFromData(1, &dims, PyArray_LONGLTR, data);
> boost::python::handle<> handle(obj);
> boost::python::numeric::array arr(handle);
> return arr.copy();
> }
> 
> BOOST_PYTHON_MODULE(create) {
> import_array();
> numeric::array::set_module_and_type("numpy", "ndarray");
> def("numpy_array", &create_numpy_array);
> }
> 
> 
> using a simple python script to test:
> 
> import create
> print(create.numpy_array())
> 
> 
> The stack trace indicates that the crash occurs on a boost::python::handle
> destructor trying to decrease the ref count of a PyObject with a ref count
> of 0.
> 
> I've tried this on both Windows 7 and Ubuntu 16.04 both 64-bit.
> 
> Thank you.
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: 
> <http://mail.python.org/pipermail/cplusplus-sig/attachments/20160804/2ad0a9ec/attachment-0001.html>
> 
> ------------------------------
> 
> Message: 2
> Date: Thu, 4 Aug 2016 13:14:58 -0400
> From: Stefan Seefeld <ste...@seefeld.name>
> To: cplusplus-sig@python.org
> Subject: Re: [C++-sig] Segmentation Fault (core dumped) on Python
>    3.5.2 but not Python 2.7.12
> Message-ID: <32f9c08d-2d65-c1b5-ca1a-1055f3784...@seefeld.name>
> Content-Type: text/plain; charset=windows-1252
> 
> Hi Matthew,
> 
> would you mind submitting an issue on
> https://github.com/boostorg/python/issues for this.
> 
> Thanks,
>        Stefan
> 
>> On 04.08.2016 13:10, Matthew Conte wrote:
>> So I'm trying to create a boost python module that simply creates and
>> returns a numpy array, 
>> but the function crashes (sometimes) and it doesn't ever seem to crash
>> on Python 2.
>> 
>> Here's the source code I made:
>> 
>> #include <boost/python.hpp>
>> #include <numpy/ndarrayobject.h>
>> 
>> using namespace boost::python;
>> 
>> object create_numpy_array() {
>> npy_intp dims = 1;
>> long* data = new long[1];
>> data[0] = 1;
>> PyObject* obj = PyArray_SimpleNewFromData(1, &dims, PyArray_LONGLTR,
>> data);
>> boost::python::handle<> handle(obj);
>> boost::python::numeric::array arr(handle);
>> return arr.copy();
>> }
>> 
>> BOOST_PYTHON_MODULE(create) {
>> import_array();
>> numeric::array::set_module_and_type("numpy", "ndarray");
>> def("numpy_array", &create_numpy_array);
>> }
>> 
>> 
>> using a simple python script to test:
>> 
>> import create
>> print(create.numpy_array())
>> 
>> 
>> The stack trace indicates that the crash occurs on a
>> boost::python::handle destructor trying to decrease the ref count of a
>> PyObject with a ref count of 0.
>> 
>> I've tried this on both Windows 7 and Ubuntu 16.04 both 64-bit.
>> 
>> Thank you.
>> 
>> 
>> _______________________________________________
>> Cplusplus-sig mailing list
>> Cplusplus-sig@python.org
>> https://mail.python.org/mailman/listinfo/cplusplus-sig
> 
> 
> -- 
> 
>      ...ich hab' noch einen Koffer in Berlin...
> 
> 
> 
> ------------------------------
> 
> Message: 3
> Date: Thu, 4 Aug 2016 13:16:58 -0400
> From: Matthew Conte <matt.p.co...@gmail.com>
> To: "Development of Python/C++ integration" <cplusplus-sig@python.org>
> Subject: Re: [C++-sig] Segmentation Fault (core dumped) on Python
>    3.5.2 but not Python 2.7.12
> Message-ID:
>    <cafwmyyjn4cdp4slas0c4jacfhpoxledypx+lospv4ndgvfh...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> I will, thank you.
> 
>> On Thu, Aug 4, 2016 at 1:14 PM, Stefan Seefeld <ste...@seefeld.name> wrote:
>> 
>> Hi Matthew,
>> 
>> would you mind submitting an issue on
>> https://github.com/boostorg/python/issues for this.
>> 
>> Thanks,
>>        Stefan
>> 
>>> On 04.08.2016 13:10, Matthew Conte wrote:
>>> So I'm trying to create a boost python module that simply creates and
>>> returns a numpy array,
>>> but the function crashes (sometimes) and it doesn't ever seem to crash
>>> on Python 2.
>>> 
>>> Here's the source code I made:
>>> 
>>> #include <boost/python.hpp>
>>> #include <numpy/ndarrayobject.h>
>>> 
>>> using namespace boost::python;
>>> 
>>> object create_numpy_array() {
>>> npy_intp dims = 1;
>>> long* data = new long[1];
>>> data[0] = 1;
>>> PyObject* obj = PyArray_SimpleNewFromData(1, &dims, PyArray_LONGLTR,
>>> data);
>>> boost::python::handle<> handle(obj);
>>> boost::python::numeric::array arr(handle);
>>> return arr.copy();
>>> }
>>> 
>>> BOOST_PYTHON_MODULE(create) {
>>> import_array();
>>> numeric::array::set_module_and_type("numpy", "ndarray");
>>> def("numpy_array", &create_numpy_array);
>>> }
>>> 
>>> 
>>> using a simple python script to test:
>>> 
>>> import create
>>> print(create.numpy_array())
>>> 
>>> 
>>> The stack trace indicates that the crash occurs on a
>>> boost::python::handle destructor trying to decrease the ref count of a
>>> PyObject with a ref count of 0.
>>> 
>>> I've tried this on both Windows 7 and Ubuntu 16.04 both 64-bit.
>>> 
>>> Thank you.
>>> 
>>> 
>>> _______________________________________________
>>> Cplusplus-sig mailing list
>>> Cplusplus-sig@python.org
>>> https://mail.python.org/mailman/listinfo/cplusplus-sig
>> 
>> 
>> --
>> 
>>      ...ich hab' noch einen Koffer in Berlin...
>> 
>> _______________________________________________
>> Cplusplus-sig mailing list
>> Cplusplus-sig@python.org
>> https://mail.python.org/mailman/listinfo/cplusplus-sig
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: 
> <http://mail.python.org/pipermail/cplusplus-sig/attachments/20160804/b50c011c/attachment-0001.html>
> 
> ------------------------------
> 
> Subject: Digest Footer
> 
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> https://mail.python.org/mailman/listinfo/cplusplus-sig
> 
> ------------------------------
> 
> End of Cplusplus-sig Digest, Vol 94, Issue 2
> ********************************************
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to