Segmentation fault with Py_Finalize()

G

Gal Aviel

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)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top