Segmentation fault with =?utf-8?b?UHlfRmluYWxpemUoKQ==?=

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Gal Aviel

    Segmentation fault with =?utf-8?b?UHlfRmluYWxpemUoKQ==?=

    Hello All,

    I Need some tips/help/ideas debugging segmentation fault ...

    I'm trying to debug Python running embedded inside a Verilog
    Simulator (as a SystemVerilog DPI application). (on SUSE LINUX
    Enterprise Server 9 (i586))

    The Embedded python loads two SWIG wrapped modules (written in C and C++).

    All goes well until finally I try to destroy the interpreter using
    Py_Finalize(). Seems like Python's garbage collection is trying to
    free something it's not suppose to free (thinks it owns it
    but has been freed already? Python/SWIG ownership issues?)

    MY question: how can tell the name of the object that visit_decref()
    below is trying to free? or at least, when/where it was allocated
    in my code?

    I'm not really a Software guy, but I have TotalView Enterprise
    at my disposal and I noticed it has memory debugging capabilities.

    Can I somehow know when the pointer/object that is trying to be freed was
    allocated and where? what it is?

    Many many thanks in advance,

    Gal.

    The details..

    The stack trace:

    Stack Trace
    C visit_decref, FP=bfff9258
    C dict_traverse, FP=bfff9298
    C collect, FP=bfff9368
    C PyGC_Collect, FP=bfff9378
    C Py_Finalize, FP=bfff9398
    C destroy_python, FP=bfff93b8


    The stack frame for visit_decref():

    Stack Frame
    Function "dict_traverse" :
    op: 0x50de3934 (Allocated Interior) -(PyObject)
    visit: 0x4e81a600 : visit_decref
    arg: 0x00000000
    Block "$b1":
    vret (%eax): 0x00000000 (0)
    Local variables:
    i: 0x00000001 (1)
    pk: 0x5092e320 (Allocated Interior) -(PyObject)
    pv: 0x094dfc98 (Allocated Interior) -(PyObject)



Working...