[Numpy-discussion] API broken after 1.1.1 (previously "crashes after switching to 1.3.x")

Adrian E. Feiguin afeiguin at uci.edu
Fri Jun 3 10:57:21 CDT 2005


That worked, thanks! BTW, Are you planning to release soon?
aludos,
<ADRIAN>

Todd Miller wrote:

>On Thu, 2005-06-02 at 19:11, Adrian E. Feiguin wrote:
>  
>
>>Hi Todd,
>>
>>I compiled the cvs version and it seems that you have fixed the problem, 
>>excellent! However, your "fix" for older versions doesn't work, any 
>>suggestions?
>>    
>>
>
>Try this instead (or get and use the "real" argc, argv):
>
>PySys_SetArgv(0, &"");
>
>
>Todd
>
>  
>
>>Thanks!
>><ADRIAN>
>>
>>Todd Miller wrote:
>>
>>    
>>
>>>I looked over your diffs but I don't think they're related to the
>>>problem you're seeing.  
>>>
>>>>From your previous posts and those of Sebastian,  I had the impression
>>>that you're using numarray in an embedded context... so  I found
>>>embedded "from numarray import *".  
>>>
>>>I learned that numarray embedding "broke" for numarray-1.2.3 by adding
>>>the unnecessary requirement that sys.argv exist.  I fixed this in
>>>numarray CVS.  A possible alternative to my fix which should work for
>>>older versions of numarray is to call PySys_SetArgv(0,NULL) after
>>>Py_Initialize() to ensure that sys.argv exists.
>>>
>>>Regards,
>>>Todd
>>>
>>>On Wed, 2005-06-01 at 18:37, Adrian E. Feiguin wrote:
>>> 
>>>
>>>      
>>>
>>>>Hi,
>>>>
>>>>As I've been discussing withTodd, scigraphica crashes after switching to 
>>>>a newer version of numarray. I checked that it does not crash with 
>>>>Numeric, or numarray-1.1.1, so I figured that at some point something 
>>>>was broken. It seems that at some point between numarray-1.1.1 and 1.2.3 
>>>>some change broke the API. What I mean is that my libraries simply fail 
>>>>to load numarray. I did diff between headers, and the only relevant 
>>>>change that I noticed between 1.1.1 and 1.2.3 that I guess could be 
>>>>related to this problem is in libnumeric.h:
>>>>
>>>>132c132
>>>>< static int  PyArray_Converter  (PyObject *, PyObject **);
>>>>---
>>>>        
>>>>
>>>>>static int  XXX_PyArray_Converter  (PyObject *, PyObject **);
>>>>>          
>>>>>
>>>>140c140
>>>>< static int  PyArray_ValidType  (int type);
>>>>---
>>>>        
>>>>
>>>>>static int  XXX_PyArray_ValidType  (int type);
>>>>>          
>>>>>
>>>>208c208
>>>>< #define  PyArray_Converter (libnumeric_API ? (*(int (*)  (PyObject *, 
>>>>PyObject **) ) libnumeric_API[ 25 ]) : (*(int (*)  (PyObject *, PyObject 
>>>>**) ) libnumeric_FatalApiError))
>>>>---
>>>>        
>>>>
>>>>>#define  XXX_PyArray_Converter (libnumeric_API ? (*(int (*)  
>>>>>          
>>>>>
>>>>(PyObject *, PyObject **) ) libnumeric_API[ 25 ]) : (*(int (*)  
>>>>(PyObject *, PyObject **) ) libnumeric_FatalApiError))
>>>>216c216
>>>>< #define  PyArray_ValidType (libnumeric_API ? (*(int (*)  (int type) ) 
>>>>libnumeric_API[ 29 ]) : (*(int (*)  (int type) ) libnumeric_FatalApiError))
>>>>---
>>>>        
>>>>
>>>>>#define  XXX_PyArray_ValidType (libnumeric_API ? (*(int (*)  (int 
>>>>>          
>>>>>
>>>>type) ) libnumeric_API[ 29 ]) : (*(int (*)  (int type) ) 
>>>>libnumeric_FatalApiError))
>>>>
>>>>I hope this helps. I'll work with 1.1.1 from now on, unless you think 
>>>>the problem is in my code.
>>>>Any ideas?
>>>>Thanks
>>>><ADRIAN>
>>>>
>>>>Todd Miller wrote:
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>>>Hi Adrian,
>>>>>
>>>>>I don't think you should be doing both "import_array()" and
>>>>>"import_libnumeric()".  Those should be roughly equivalent.  If you're
>>>>>using only the Numeric compatible API (no NA_ functions) then do:
>>>>>
>>>>>#include "numarray/arrayobject.h"
>>>>>
>>>>>... and later in your init function:
>>>>>
>>>>>import_array();
>>>>>
>>>>>just like Numeric.  If you also need some of the NA_ functions,  then
>>>>>look at Src/_dotblas.c or Src/_numarraymodule.c for how to interface
>>>>>with both native and numeric compatible interfaces at the same time.  If
>>>>>you only need NA_ functions, look at Src/_ndarraymodule.c.
>>>>>
>>>>>Regards,
>>>>>Todd
>>>>>
>>>>>On Fri, 2005-05-27 at 18:37 -0700, Adrian E. Feiguin wrote:
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>>>Hi Todd,
>>>>>>
>>>>>>Thank you for your reply. I have a completely new installation, there 
>>>>>>are no conflicts with previous installations.
>>>>>>I found that the problem is in import_libnumeric in libnumeric.h. It 
>>>>>>seems that the libnumeric_API is not initialized because it doesn't pass 
>>>>>>the line:
>>>>>>
>>>>>>      PyObject *module = 
>>>>>>PyImport_ImportModule("numarray.libnumeric");     \
>>>>>>      if (module != NULL) 
>>>>>>{                                               \
>>>>>>
>>>>>>Any ideas?
>>>>>>Thank you again,
>>>>>><ADRIAN>
>>>>>>
>>>>>>
>>>>>>Todd Miller wrote:       
>>>>>>
>>>>>>  
>>>>>>
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>>>>Hi Adrian,
>>>>>>>
>>>>>>>On Thu, 2005-05-26 at 18:00 -0700, Adrian E. Feiguin wrote:
>>>>>>>
>>>>>>>
>>>>>>>    
>>>>>>>
>>>>>>>         
>>>>>>>
>>>>>>>              
>>>>>>>
>>>>>>>>Hi! I'm the lead developer of scigraphica (SG) 
>>>>>>>>http://scigraphica.sourceforge.net and I'm using python and numarray to 
>>>>>>>>parse math. SG is built on top of libscigraphica, and libscigraphica has 
>>>>>>>>all the python code. I've been using an old version 0.6.1, and 
>>>>>>>>everything worked fine. After switching to 1.6.2the program crashes. 
>>>>>>>>I'll give you some info to see if you can tell me what's wrong:
>>>>>>>>
>>>>>>>>I'm using:
>>>>>>>>#define PY_ARRAY_UNIQUE_SYMBOL PyArrayXXX
>>>>>>>>#include <arrayobject.h>
>>>>>>>>
>>>>>>>>and in the code:
>>>>>>>> import_libnumeric();
>>>>>>>> import_array();
>>>>>>>>
>>>>>>>> object=PyRun_String ("from numarray import *", Py_single_input, 
>>>>>>>>main_dict, sg_dict);
>>>>>>>>
>>>>>>>>(I noticed that you have to add import_libnumeric now)
>>>>>>>> 
>>>>>>>>
>>>>>>>>      
>>>>>>>>
>>>>>>>>           
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>In general,  this is not true. 
>>>>>>>
>>>>>>>Paradoxically,  if you're using the numeric compatible API,
>>>>>>>import_array() is all you need to do.  If you're using both the numarray
>>>>>>>native and numeric compatible APIs,  then you need to 
>>>>>>>import_libnumarray() and import_libnumeric().
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>    
>>>>>>>
>>>>>>>         
>>>>>>>
>>>>>>>              
>>>>>>>
>>>>>>>>The gdb output is:
>>>>>>>>
>>>>>>>>Importing python module: sys
>>>>>>>>Importing python module: pickle
>>>>>>>>Importing python module: os
>>>>>>>>Importing python module: numarrayProgram received signal SIGSEGV, 
>>>>>>>>Segmentation fault.
>>>>>>>>[Switching to Thread 1083181376 (LWP 11648)]
>>>>>>>>0x400ab0b5 in PyObject_GetAttrString ()
>>>>>>>>from 
>>>>>>>>/home/afeiguin/cvs/test/libscigraphica-2/scigraphica/.libs/libscigraphica-2.0-2.0.so.0
>>>>>>>>#0  0x400ab0b5 in PyObject_GetAttrString ()
>>>>>>>>from 
>>>>>>>>/home/afeiguin/cvs/test/libscigraphica-2/scigraphica/.libs/libscigraphica-2.0-2.0.so.0
>>>>>>>>#1  0x40b1ff66 in deferred_libnumarray_init () at 
>>>>>>>>Src/libnumarraymodule.c:152
>>>>>>>>#2  0x40b21f8c in NA_NumArrayCheck (op=0x0) at Src/libnumarraymodule.c:1357
>>>>>>>>#3  0x40b43c1c in PyArray_Check (op=0x0) at Src/libnumericmodule.c:216
>>>>>>>>#4  0x4004d903 in python_insert_object (worksheet=0x81ba4e0, row=0, col=0,
>>>>>>>> object=0x80bda3c, orient=GTK_ORIENTATION_VERTICAL, link=0, as_is=0)
>>>>>>>> at sg_python_worksheet.c:802
>>>>>>>>#5  0x4004da12 in python_sheet (worksheet=0x81ba4e0, row=0, col=0,
>>>>>>>> command=0x8366d68 ".1", orient=GTK_ORIENTATION_VERTICAL)
>>>>>>>> at sg_python_worksheet.c:843
>>>>>>>>#6  0x40061f7c in sg_worksheet_cell_set (worksheet=0x81ba4e0, row=0, col=0,
>>>>>>>> text=0x8365520 ".1", formula=1, eval=1) at sg_worksheet.c:508
>>>>>>>>#7  0x40061d59 in set_cell (sheet=0x81ba4e0, row=0, col=0, data=0x81ba4e0)
>>>>>>>> at sg_worksheet.c:439
>>>>>>>>
>>>>>>>>Look that in #4 object=0x80bda3c, and in #3 op=0x0.
>>>>>>>>Any hints?
>>>>>>>> 
>>>>>>>>
>>>>>>>>      
>>>>>>>>
>>>>>>>>           
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>numarray-0.6.1 is very old so in order to transition to numarray-1.3.2
>>>>>>>you should:
>>>>>>>
>>>>>>>a. completely delete your numarray installation
>>>>>>>
>>>>>>>b. reinstall numarray
>>>>>>>
>>>>>>>c. rebuild and reinstall any extensions based on numarray.
>>>>>>>
>>>>>>>My guess is that either you have overlapping/conflicting numarray
>>>>>>>installations or you have extensions from numarray-0.6.1 trying to run
>>>>>>>against numarray-1.3.2.
>>>>>>>
>>>>>>>Regards,
>>>>>>>Todd
>>>>>>>
>>>>>>>
>>>>>>>.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>    
>>>>>>>
>>>>>>>         
>>>>>>>
>>>>>>>              
>>>>>>>
>>>>>>-------------------------------------------------------
>>>>>>This SF.Net email is sponsored by Yahoo.
>>>>>>Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
>>>>>>Search APIs Find out how you can build Yahoo! directly into your own
>>>>>>Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
>>>>>>_______________________________________________
>>>>>>Numpy-discussion mailing list
>>>>>>Numpy-discussion at lists.sourceforge.net
>>>>>>https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>>>>>>  
>>>>>>
>>>>>>       
>>>>>>
>>>>>>            
>>>>>>
>>>>>-------------------------------------------------------
>>>>>This SF.Net email is sponsored by Yahoo.
>>>>>Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
>>>>>Search APIs Find out how you can build Yahoo! directly into your own
>>>>>Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
>>>>>_______________________________________________
>>>>>Numpy-discussion mailing list
>>>>>Numpy-discussion at lists.sourceforge.net
>>>>>https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>>>>>
>>>>>.
>>>>>
>>>>>
>>>>>
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>-------------------------------------------------------
>>>>This SF.Net email is sponsored by Yahoo.
>>>>Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
>>>>Search APIs Find out how you can build Yahoo! directly into your own
>>>>Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
>>>>_______________________________________________
>>>>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