[Numpy-discussion] core dump during import

Skip Montanaro skip at pobox.com
Tue Aug 17 15:57:41 CDT 2004


(I posted this last week to scipy-user but received no responses.  Since it
seems to involve Numeric I thought I'd try here.)

------------------------------------------------------------------------------

I'm the "python guy" at work which by default makes me the "scipy
installation guy" as well, though I'm not using it for any of my own
projects.  Awhile ago I performed a very basic installation:

    install latest f2py
    install Numeric 23.1
    install SciPy_complete-0.3

The platform is Solaris 9 on Intel.  I'm using Python 2.3.4 (though
originally installed using 2.3.3).  GCC and G77 are both at 3.3.2.

The installation goes fine with the one caveat that I needed to point
LD_RUN_PATH at the g77 lib dir so libg2c.so.0 could be found at runtime.

If I execute

    from scipy.stats import distribution

at the interpreter prompt I get a segfault.  Here's the beginning of the gdb
traceback:

    #0  0x20ec8356 in ?? ()
    #1  0xdd2d7e24 in Cephes_InitOperators (dictionary=0x8486dfc)
        at Lib/special/cephesmodule.c:413
    #2  0xdd2d7a7a in initcephes () at Lib/special/cephesmodule.c:1105
    #3  0x080d082e in _PyImport_LoadDynamicModule (
        name=0x8040500 "scipy.special.cephes", 
        pathname=0x8040070 "/opt/lang/python/lib/python2.3/site-packages/scipy/special/cephes.so", fp=0x8148780) at ../Python/importdl.c:53
    #4  0x080cd637 in load_module (name=0x8040500 "scipy.special.cephes", 
        fp=0x8148780, 
        buf=0x8040070 "/opt/lang/python/lib/python2.3/site-packages/scipy/special/cephes.so", type=3, loader=0x0) at ../Python/import.c:1708
    #5  0x080ce345 in import_submodule (mod=0x8149fa4, subname=0x804050e "cephes", 
        fullname=0x8040500 "scipy.special.cephes") at ../Python/import.c:2291
    #6  0x080cdea4 in load_next (mod=0x8149fa4, altmod=0x81265e0, 
        p_name=0x8040930, buf=0x8040500 "scipy.special.cephes", p_buflen=0x80404fc)
        at ../Python/import.c:2111
    #7  0x080cfbf1 in import_module_ex (name=0x0, globals=0x8486c64, 
        locals=0x8486c64, fromlist=0x83e256c) at ../Python/import.c:1957
    #8  0x080ced40 in PyImport_ImportModuleEx (name=0x8369c34 "cephes", 
        globals=0x8486c64, locals=0x8486c64, fromlist=0x83e256c)
        at ../Python/import.c:1998
    #9  0x080a1bde in builtin___import__ (self=0x0, args=0x8483d4c)
        at ../Python/bltinmodule.c:45
    #10 0x080fac78 in PyCFunction_Call (func=0x8151bec, arg=0x8483d4c, kw=0x0)
        at ../Objects/methodobject.c:108
    #11 0x08062e90 in PyObject_Call (func=0x8151bec, arg=0x8483d4c, kw=0x0)
        at ../Objects/abstract.c:1755

Since I don't use SciPy, Cephes or f2py outside of installing SciPy I don't
really know where to start poking.  Frame 1 is at this line:

    413    f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtr_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "bdtr", bdtr_doc, 0);

and cephes3a_functions looks suspicious:

    (gdb) p cephes3a_functions
    $2 = {0x5, 0x6}

I presume considering the variable name those are supposed to be valid
function pointers.  Stepping through initcephes leads me to this:

    (gdb) n
    393         cephes3a_functions[0] = PyUFunc_fff_f_As_iid_d;
    (gdb) n
    391         cephes3_functions[2] = PyUFunc_ffF_F_As_ddD_D;
    (gdb) n
    392         cephes3_functions[3] = PyUFunc_ddD_D;
    (gdb) n
    394         cephes3a_functions[1] = PyUFunc_ddd_d_As_iid_d;
    (gdb) n
    395         cephes3_2_functions[0] = PyUFunc_fff_ff_As_ddd_dd;
    (gdb) p cephes3a_functions
    $9 = {0x5, 0x6}
    (gdb) p PyUFunc_ddD_D
    $10 = {void (char **, int *, int *, void *)} 0xdd2e4720 <PyUFunc_ddD_D>
    (gdb) p PyUFunc_ddd_d_As_iid_d
    $11 = {void (char **, int *, int *, 
        void *)} 0xdd2e4a20 <PyUFunc_ddd_d_As_iid_d>

It seems there's something amiss with the cephes3a_functions initialization.
In fact, other cephes*_functions variables appear bogus as well:

    (gdb) p cephes3_functions
    $12 = {0, 0, 0x3, 0x4}
    (gdb) p cephes1_functions
    $13 = {0x464c457f, 0x10101}
    (gdb) p cephes2_4_functions
    $14 = {0x7e34, 0x7}

Does this ring a bell with anybody?  Any clues about how to proceed would be
appreciated.

Thanks,

-- 
Skip Montanaro
Got spam? http://www.spambayes.org/
skip at pobox.com




More information about the Numpy-discussion mailing list