www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/08/20/04:39:54

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Thu, 20 Aug 2009 10:39:26 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: find(1) memory leak in cygheap
Message-ID: <20090820083926.GJ32408@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <c8a3efee0908190447l11062bf1waba8ca9df5581468 AT mail DOT gmail DOT com> <20090819140322 DOT GB8713 AT ednor DOT casa DOT cgf DOT cx> <c8a3efee0908190804i4130ecbfp7561934ab2272da8 AT mail DOT gmail DOT com> <c8a3efee0908192309k4e207b4fs662d2c2baae8c0a2 AT mail DOT gmail DOT com>
MIME-Version: 1.0
In-Reply-To: <c8a3efee0908192309k4e207b4fs662d2c2baae8c0a2@mail.gmail.com>
User-Agent: Mutt/1.5.19 (2009-02-20)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Aug 20 14:09, Haojun Bao wrote:
> I have done some debugging, and the culprit should be dup(2) syscall.
> Here's another test case, this time written in C.
> 
> Note that the cygheap_start and cygheap_max value will be very likely
> different on your computer, so you should use gdb to take a peek into
> cygwin1.dll to get your value. Or else you should remove the reference
> to these memory location.
> 
> The test case will show cygheap is always growing, and at the end it will print
>   1 [main] a 3560 Q:\a.exe: *** fatal error - cmalloc would have returned NULL

Thanks for the testcase!  It was pretty easy to find the culprit with
it.  Deep in dup(), the strings for the filenames of the new file
descriptor were allocated twice.  While I was at it, I also found two
other potential memory leaks, which would just show up much less
frequent.

This fixes your find testcase as well, and probably (hopefully?) also
the problem reported in http://cygwin.com/ml/cygwin/2009-08/msg00620.html

I applied a patch to CVS and will upload a -60 release asap.


Thanks again,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019