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)
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)