[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: AW: Python bindings: Use of svn_swig_py_make_stream() - avoiding leaking fds

From: Nick Piper <nick.piper_at_logica.com>
Date: Mon, 9 May 2011 11:21:10 +0100

On 09/05/11 09:05, Markus Schaber wrote:
> Hi, Hick,
>
>> Von: Piper, Nick [mailto:nick.piper_at_logica.com]
>
>> In Python, f is a "file" instance, but that will be converted to a
>> svn_stream_t by swig (by svn_swig_py_make_stream()).
>>
>> That file then goes out of scope in Python, but the file descriptor is
>> never closed. I don't see where we should be calling
> svn_stream_close() in
>> order to do that (and call Py_DECREF(py_io)), because the svn_stream_t
> is
>> never exposed back to Python.
>
> I'm not sure about what svn_swig_py_make_stream() does, but normal
> python files automatically close the underlying os resources (file
> descriptor etc.) when they are garbage collected.

I feel in this case, the reference counting means that the gc won't
happen - Py_INCREF(py_io) at
https://github.com/apache/subversion/blob/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c#L2126
increases it by one, but the corresponding Py_DECREF(py_io) at
https://github.com/apache/subversion/blob/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c#L2112
is never called.

I'll continue to study this to see if I'm correct or not....

 Nick

-- 
Sorry for this disclaimer:
Think green - keep it on the screen.
This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you. 
Received on 2011-05-09 12:22:14 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.