[Patches] [ python-Patches-980082 ] Missing INCREF in PyType_Ready

SourceForge.net noreply at sourceforge.net
Wed Aug 18 15:21:38 CEST 2004


Patches item #980082, was opened at 2004-06-26 02:37
Message generated for change (Comment added) made by loewis
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=980082&group_id=5470

Category: Core (C code)
Group: None
>Status: Closed
>Resolution: Accepted
Priority: 5
Submitted By: Eric Huss (ehuss)
Assigned to: Nobody/Anonymous (nobody)
Summary: Missing INCREF in PyType_Ready

Initial Comment:
In PyType_Ready() if the type object you are readying 
does not explicitly define its tp_base value, it will 
default to use PyBaseObject_Type.

However, this assignment does not INCREF the 
PyBaseObject_Type pointer.  Thus, for heap allocated 
type objects, when the type_dealloc() function is 
called, a DECREF is called on tp_base which can 
eventually cause PyBaseObject_Type refcount go to 0, 
at which point bad things happen.


----------------------------------------------------------------------

>Comment By: Martin v. Löwis (loewis)
Date: 2004-08-18 15:21

Message:
Logged In: YES 
user_id=21627

I think the missing INCREF is a bug regardless of whether
the code is dead or not (if it is really dead, the bug is
that is hasn't been removed). I have committed the patch as
typeobject.c 2.263 and 2.241.6.12.

----------------------------------------------------------------------

Comment By: Eric Huss (ehuss)
Date: 2004-06-29 20:39

Message:
Logged In: YES 
user_id=393416

There are relatively few ways to make a heap allocated type 
object.  I have made a method to create structseq type 
objects on the heap (see sf patch 980098).  There doesn't 
appear to be a direct API to do it, so I did it manually.  Since 
the Type_Ready code has a check for NULL bases, one might 
as well take advantage of it.


----------------------------------------------------------------------

Comment By: Michael Hudson (mwh)
Date: 2004-06-29 18:06

Message:
Logged In: YES 
user_id=6656

I'm not sure this is actually a real problem.  I don't think
you can get into the "base == NULL" case with a heap type...

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=980082&group_id=5470


More information about the Patches mailing list