Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pXUH8-0005sQ-An for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Mar 2023 21:46:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pXUH6-0003o0-TY for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Mar 2023 21:46:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pXUH6-0003nr-IY for pgsql-hackers@lists.postgresql.org; Wed, 01 Mar 2023 21:46:12 +0000 Received: from mail1.dalibo.net ([51.159.93.128] helo=mail.dalibo.com) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pXUH1-00066q-UE for pgsql-hackers@lists.postgresql.org; Wed, 01 Mar 2023 21:46:12 +0000 Received: from karst (larco.ioguix.net [78.202.0.6]) by mail.dalibo.com (Postfix) with ESMTPSA id DBE7F1F846; Wed, 1 Mar 2023 22:45:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dalibo.com; s=a; t=1677707159; bh=u9HZoIMmr5k55NpxVv0Q3wstfd2sYFcJxeoljhEQbfs=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Ct0ou7/XyzpIuIWky6mc5LTqHY4bHzN33eMVb9iGK9FhYoB1CPuQgN9li2hBE6JRo NY++5lwK4BuSA/QJoj08gOVkR3gwg2J33xbMNtTBBbBTxKySEVk8VJjLLXVs19gfGA WSPet/0JGTLsZae6qoWsl/qgE7xEDTZmiJF8gcus= Date: Wed, 1 Mar 2023 22:45:58 +0100 From: Jehan-Guillaume de Rorthais To: Tomas Vondra Cc: pgsql-hackers@lists.postgresql.org Subject: Re: Memory leak from ExecutorState context? Message-ID: <20230301224558.1cde4032@karst> In-Reply-To: <8980879f-1a7a-87f0-3967-e0b8e2b3948c@enterprisedb.com> References: <20230228190643.1e368315@karst> <45d453c8-b2d3-b477-36eb-32fdf4455f3c@enterprisedb.com> <20230301184840.0a897a80@karst> <20230301190944.56ed0665@karst> <8980879f-1a7a-87f0-3967-e0b8e2b3948c@enterprisedb.com> Organization: Dalibo MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Wed, 1 Mar 2023 20:34:08 +0100 Tomas Vondra wrote: > On 3/1/23 19:09, Jehan-Guillaume de Rorthais wrote: > > On Wed, 1 Mar 2023 18:48:40 +0100 > > Jehan-Guillaume de Rorthais wrote: > > ... > >> You'll find some intermediate stats I already collected in attachment: > >> > >> * break 1, 2 and 3 are from AllocSetAlloc, break 4 is from AllocSetFree. > >> * most of the non-free'd chunk are allocated since the very beginning, > >> before the 5000's allocation call for almost 1M call so far. > >> * 3754 of them have a chunk->size of 0 > >> * it seems there's some buggy stats or data: > >> # this one actually really comes from the gdb log > >> 0x38a77b8: break=3 num=191 sz=4711441762604810240 (weird sz) > >> # this one might be a bug in my script > >> 0x2: break=2 num=945346 sz=2 (weird > >> address) > >> * ignoring the weird size requested during the 191st call, the total amount > >> of non free'd memory is currently 5488MB > > > > I forgot one stat. I don't know if this is expected, normal or not, but 53 > > chunks has been allocated on an existing address that was not free'd before. > > > > It's likely chunk was freed by repalloc() and not by pfree() directly. > Or maybe the whole context got destroyed/reset, in which case we don't > free individual chunks. But that's unlikely for the ExecutorState. Well, as all breakpoints were conditional on ExecutorState, I suppose this might be repalloc then. Regards,