This is the mail archive of the cygwin-apps@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: The allegation is that setup is keeping open handles around...


Christopher Faylor schrieb:
On Wed, Nov 17, 2004 at 12:28:27AM -0500, Robb, Sam wrote:
So it looks like the package files aren't being closed somewhere.

Taking a look at the source, and trying to figure out where something like this might occur, I ended up in in install.cc, where I saw the following comment in Installer::installOneSource():

/* FIXME: potential leak of either *tmp or *tmp2 */

Here, it looks as if handling a compressed file leads to a handle leak
as an io_stream isn't closed.  Actually, there appear to be a couple of
places where a pointer returned by io_stream::open() isn't being freed
(where I'm assuming that 'delete tmp' is the proper way to deal with a
pointer returned by io_stream::open()...)

You cannot directly delete tmp. This is delegated to the stream provider.


But this flawed, since they are stacked in archive_tar and then compress_bz.
The problem is that ~archive_tar is never called because ~compress_bz sets destroyed=1
which will lead to not closing the archive_tar->state.parent


Solution pending...

My investigations brought me to the same place and the same conclusion
although it has been quite a while since I last looked at the setup
sources.  It seems likely that you're right, though.

Sort of cries out for some sort of destructor doesn't it?  Rather
than

io_stream *tmp = io_stream::open ("foo", "rb");

do

io_stream tmp ("foo", "rb");

and let the io_stream destructor do whatever it has to do.

That is probably a lot of work, though.  I guess I don't understand why
there is a FIXME here rather than a delete of tmp and tmp2.

Also I found the use of the variable tmp in different scopes and with
different types seems like a recipe confusing.

If we aren't going to get any traction on this from any of the setup
developers, I'll generate a new version of setup for testing in the
next couple of days.

-- Let each man exercise the art he knows. (Aristophanes, Wasps, 422 B.C.)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]