[Numpy-discussion] Re: ANN: numarray-1.2.3 -- segfault in in my C program

Todd Miller jmiller at stsci.edu
Fri Mar 4 07:04:31 EST 2005


>From what you're showing me,  it looks like libnumarray initialization
is failing which makes me suspect a corrupted numarray installation. 
Here are some things to try:

1.  Completely delete your existing site-packages/numarray.  Also delete
numarray/build then re-install numarray.

2.  Delete and re-install your extensions.  In principle, 
numarray-1.2.3 is supposed to be binary compatible with numarray-1.1.1
but maybe I'm mistaken.  

3.  Hopefully you won't get this far but... a python which works well
with gdb can be built from source using ./configure --with-pydebug.  So
a debug scenario is something like:

% tar zxf Python-2.2.3.tar.gz
% cd Python-2.2.3
% ./configure --with-pydebug --prefix=$HOME
% make
% make install

% cd ..
% tar zxf numarray-1.2.3.tar.gz
% cd numarray-1.2.3
% python setup.py install

% cd ..
% tar zxf your_stuff.tar.gz
% cd your_stuff
% python setup.py install

This makes a debug Python installed in $HOME/bin, $HOME/lib, and
$HOME/include.   This process is useful for compiling Python itself and
extensions with "-g -O0" and hence gdb works better.  Besides
appropriate compiler switches, debug Python also has more robust object
memory management and better tracked reference counting. 

Debug like this:

% setenv PATH $HOME/bin:$PATH  # export if you use bash
% rehash

% gdb python
(gdb) run
>>> <do the test>
<crash>
(gdb) l <startline>,<endline>  # to see some code
(gdb) p <some_interesting_variable>
(gdb) up # Move up the stack frame to see where the bogus value came
from

Regards,
Todd

On Thu, 2005-03-03 at 14:40, Sebastian Haase wrote:
> Hi,
> After upgrading from numarray 1.1  (now 1.2.3)
> We get a Segmentation fault in our C++ program on Linux (python2.2,gcc2.95) , 
> gdb says this: 
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 1087498336 (LWP 8279)]
> 0x406d68d5 in PyObject_GetAttrString () from /usr/lib/libpython2.2.so.0.0
> (gdb) where
> #0  0x406d68d5 in PyObject_GetAttrString () from /usr/lib/libpython2.2.so.0.0
> #1  0x410f905e in deferred_libnumarray_init () at Src/libnumarraymodule.c:149
> #2  0x410f98a8 in NA_NewAllFromBuffer (ndim=3, shape=0xbffff2e4, 
> type=tFloat32, bufferObject=0x8a03988, byteoffset=0,
> <nl>    bytestride=0, byteorder=0, aligned=1, writeable=1) at Src/
> libnumarraymodule.c:636
> #3  0x0805b159 in MyApp::OnInit (this=0x8108f50) at omx_app.cpp:519
> #4  0x4026f616 in wxEntry () from /jws30/haase/PrLin0/wxGtkLibs/
> libwx_gtk-2.4.so
> #5  0x0805a91a in main (argc=1, argv=0xbffff414) at omx_app.cpp:247
> 
> 
> To initialize libnumarray I was using this:
>    {
> //      import_libnumarray();
>       {
>         PyObject *module = PyImport_ImportModule("numarray.libnumarray");
>         if (!module)
>               Py_FatalError("Can't import module 'numarray.libnumarray'");
>         if (module != NULL) {
>           PyObject *module_dict = PyModule_GetDict(module);
>           PyObject *c_api_object =
>                  PyDict_GetItemString(module_dict, "_C_API");
>           if (PyCObject_Check(c_api_object)) {
>             libnumarray_API = (void **)PyCObject_AsVoidPtr(c_api_object);
>           } else {
>             Py_FatalError("Can't get API for module 'numarray.libnumarray'");
>           }
>         }
>       }
>   }
> 
> Any idea ?
> 
> Thanks,
> Sebastian Haase
> 
> 
> 
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide
> Read honest & candid reviews on hundreds of IT Products from real users.
> Discover which products truly live up to the hype. Start reading now.
> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
-- 





More information about the NumPy-Discussion mailing list