[Python-Dev] Possible bug in complexobject.c (still in Python 2.5)

Travis E. Oliphant oliphant.travis at ieee.org
Thu Jun 1 05:59:03 CEST 2006


Guido van Rossum wrote:
> I wouldn't be surprised if this is a genuine bug; the complex type
> doesn't get a lot of love from core developers.
> 
> Could you come up with a proposed fix, and a unit test showing that it
> works (and that the old version doesn't)? (Maybe a good unit test
> would require writing a custome C extension; in that case just show
> some sample code.)


Attached is a sample module that exposes the problem.  The problem goes 
away by replacing

op = PyType_GenericAlloc(type, 0);

with

op = type->tp_alloc(type, 0);

in the function

complex_subtype_from_c_complex

in the file complexobject.c  (about line #191).



The problem with a unit test is that it might not fail.  On my Linux 
system, it doesn't complain about the problem unless I first use strict 
pointer checking with

export MALLOC_CHECK_=2

Then the code

import bugtest
a = bugtest.newcomplex(3.0)
del a

Aborts

Valgrind also shows the error when running the simple code. It seems 
pretty clear to me that the subtype code should be calling the sub-types 
tp_alloc code instead of the generic one.


Best regards,

-Travis










-------------- next part --------------
A non-text attachment was scrubbed...
Name: bugtest.c
Type: text/x-csrc
Size: 1035 bytes
Desc: not available
Url : http://mail.python.org/pipermail/python-dev/attachments/20060531/db6f3342/attachment-0001.c 


More information about the Python-Dev mailing list