__dict__ in class inherited from C extension module

T

Tamas Nepusz

Dear Python experts,

I have a strange problem - or more precisely, I'm not even sure if it's
a problem or not. I'm developing a Python extension module in C which
creates a new type with methods, mapping support and stuff like that :)
Everything's working fine, but if I inherit a new class from this type
in Python, I start getting strange warning messages in valgrind. Just a
simple example:

import mymodule

class InheritedType(mymodule.MyType):
def a_new_method(self): print "test"

x=InheritedType()
x.a_new_method()

("mymodule" is the C extension module I developed)
The error message I see in valgrind is the following:

==6579== Conditional jump or move depends on uninitialized value(s)
==6579== at 0x807CFF9: PyObject_GenericGetAttr (object.c:1283)
==6579== by 0x80B2EA3: PyEval_EvalFrame (ceval.c:1957)
[...]

I'm using Python 2.4.3, and by taking a look at the source of object.c
(line 1283), it looks like the tp_dict member of the type object of my
subclass is not initialized. The code snippet from line 1281-1285 looks
like this:

dictptr = (PyObject **) ((char *)obj + dictoffset);
dict = *dictptr;
if (dict != NULL) {
res = PyDict_GetItem(dict, name);
if (res != NULL) {
[...]

Should I worry about Valgrind's warning or is it just a false alarm? It
does not occur if I try to inherit my class from a built-in class (like
string or module or whatever), only if I use my extension's class, so I
suspect that I'm doing something wrong. Is there anything I should
watch out for when I create inheritable classes in a C extension?

Thanks a lot in advance.
 

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

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,527
Members
44,999
Latest member
MakersCBDGummiesReview

Latest Threads

Top