[Patches] [ python-Patches-661796 ] BZ2File leaking fd and memory
SourceForge.net
noreply@sourceforge.net
Sun, 05 Jan 2003 12:09:47 -0800
Patches item #661796, was opened at 2003-01-03 14:22
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=661796&group_id=5470
Category: Modules
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Neal Norwitz (nnorwitz)
Assigned to: Gustavo Niemeyer (niemeyer)
Summary: BZ2File leaking fd and memory
Initial Comment:
The attached patch fixes BZ2File() leaking the fd and
PyFileObject* info (name, read ahead buffer) when an
object is deleted.
I'm not sure the patch fixes these problems in the best
way. It exposes most of the implementation from
fileobject.c::file_dealloc() through a private API
_PyFile_Dealloc().
BZ2File derives from PyFileObject.
Make sure the file: 'empty' exists and do:
from bz2 import *
A simple test which demonstrates the problem is:
for i in range(100000): o = BZ2File('empty') ; del o
Without the patch, you quickly get:
IOError: [Errno 24] Too many open files: 'empty'
You can modify this to:
for i in range(100000): o = BZ2File('empty') ;
o.close() ; del o
Now you can see the memory leaks.
----------------------------------------------------------------------
>Comment By: Neal Norwitz (nnorwitz)
Date: 2003-01-05 15:09
Message:
Logged In: YES
user_id=33168
I've found a better solution: change the last line of
BZ2File_dealloc() from:
((PyObject*)self)->ob_type->tp_free((PyObject *)self);
to
PyFile_Type.tp_dealloc((PyObject *)self);
Updated patch attached.
----------------------------------------------------------------------
Comment By: Martin v. Löwis (loewis)
Date: 2003-01-03 14:48
Message:
Logged In: YES
user_id=21627
Assigning to the author of the module for review. Gustavo,
if you can't find the time for a review, feel free to
unassign it.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=661796&group_id=5470