Dear Python/OpenCL community,
I am pretty new (py)opencl and encountered a problem, maybe it a lack of understanding of
openCL, but I found strange python seg-faults:
test program:
#!/usr/bin/python
import numpy, pyopencl
ctx = pyopencl.create_some_context()
data=numpy.random.random((1024,1024)).astype(numpy.float32)
img = pyopencl.image_from_array(ctx, ary=data, mode="r", norm_int=False,
num_channels=1)
print img
System: debian sid: pyopencl2012.1 (the same code works with debian stable and v2011.2)
Here is the backtrace obtained with GDB:
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007ffff340c253 in pyopencl::create_image_from_desc(pyopencl::context const&,
unsigned long, _cl_image_format const&, _cl_image_desc&,
boost::python::api::object) () from /usr/lib/python2.7/dist-packages/pyopencl/_cl.so
#2 0x00007ffff342de36 in _object*
boost::python::detail::invoke<boost::python::detail::install_holder<pyopencl::image*>,
pyopencl::image* (*)(pyopencl::context const&, unsigned long, _cl_image_format
const&, _cl_image_desc&, boost::python::api::object),
boost::python::arg_from_python<pyopencl::context const&>,
boost::python::arg_from_python<unsigned long>,
boost::python::arg_from_python<_cl_image_format const&>,
boost::python::arg_from_python<_cl_image_desc&>,
boost::python::arg_from_python<boost::python::api::object>
>(boost::python::detail::invoke_tag_<false, false>,
boost::python::detail::install_holder<pyopencl::image*> const&, pyopencl::image*
(*&)(pyopencl::context const&, unsigned long, _cl_image_format const&,
_cl_image_desc&, boost::python::api::object),
boost::python::arg_from_python<pyopencl::context const&>&,
boost::python::arg_from_python<unsigned long>&,
boost::python::arg_from_python<_cl_image_format const&>&,
boost::python::arg_from_python<_cl_image_desc&>&,
boost::python::arg_from_python<boost::python::api::object>&) () from
/usr/lib/python2.7/dist-packages/pyopencl/_cl.so
#3 0x00007ffff342e06f in
boost::python::detail::caller_arity<5u>::impl<pyopencl::image*
(*)(pyopencl::context const&, unsigned long, _cl_image_format const&,
_cl_image_desc&, boost::python::api::object),
boost::python::detail::constructor_policy<boost::python::default_call_policies>,
boost::mpl::vector6<pyopencl::image*, pyopencl::context const&, unsigned long,
_cl_image_format const&, _cl_image_desc&, boost::python::api::object>
>::operator()(_object*, _object*) ()
from /usr/lib/python2.7/dist-packages/pyopencl/_cl.so
#4 0x00007ffff311715b in boost::python::objects::function::call(_object*, _object*) const
()
from /usr/lib/libboost_python-py27.so.1.49.0
#5 0x00007ffff3117378 in ?? () from /usr/lib/libboost_python-py27.so.1.49.0
#6 0x00007ffff3120593 in
boost::python::detail::exception_handler::operator()(boost::function0<void>
const&) const ()
from /usr/lib/libboost_python-py27.so.1.49.0
#7 0x00007ffff3445983 in
boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool,
boost::python::detail::translate_exception<pyopencl::error, void (*)(pyopencl::error
const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>,
boost::_bi::value<void (*)(pyopencl::error const&)> > >, bool,
boost::python::detail::exception_handler const&, boost::function0<void>
const&>::invoke(boost::detail::function::function_buffer&,
boost::python::detail::exception_handler const&, boost::function0<void>
const&) () from /usr/lib/python2.7/dist-packages/pyopencl/_cl.so
#8 0x00007ffff3120373 in
boost::python::handle_exception_impl(boost::function0<void>) ()
from /usr/lib/libboost_python-py27.so.1.49.0
#9 0x00007ffff3115635 in ?? () from /usr/lib/libboost_python-py27.so.1.49.0
Thanks for your help.
If you are not able to reproduce this bug, I should mention it to debian.
Cheers,
--
Jérôme Kieffer
Data analysis unit - ESRF