From patchwork Sat Aug 26 12:06:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 22363 Received: (qmail 110673 invoked by alias); 26 Aug 2017 12:06:11 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 109471 invoked by uid 89); 26 Aug 2017 12:06:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=H*Ad:D*be, HX-Envelope-From:sk:philipp, H*r:sk:mailsec, H*RU:sk:mailsec X-HELO: mailsec116.isp.belgacom.be Received: from mailsec116.isp.belgacom.be (HELO mailsec116.isp.belgacom.be) (195.238.20.112) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 26 Aug 2017 12:06:05 +0000 IronPort-PHdr: =?us-ascii?q?9a23=3A+cciwBACQ/ON0dBrD7X1UyQJP3N1i/DPJgcQr6Af?= =?us-ascii?q?oPdwSPT4ocbcNUDSrc9gkEXOFd2CrakV26yO6+jJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMhzexe69+IAmrpgjNq8cahpdvJLwswRXTuHtIfO?= =?us-ascii?q?pWxWJsJV2Nmhv3+9m98p1+/SlOovwt78FPX7n0cKQ+VrxYES8pM3sp683xtBnM?= =?us-ascii?q?VhWA630BWWgLiBVIAgzF7BbnXpfttybxq+Rw1DWGMcDwULs5Xymp4aV2Rx/ykC?= =?us-ascii?q?oJNyA3/nzZhMJzi6xWuw6tqwBlzoLIeoyZKOZyc6XAdt0aX2pBWcNRWjRbDIO8?= =?us-ascii?q?bosPC+sBPf5Ar4bjulABrQGxBROrBOP21z9Ih2H53bch0+88FgzGxAwgH9MKsH?= =?us-ascii?q?TVtNX1LLkdXfq7zabS1zXDaOpW2Sr86IfWaBAhuuqBXalzccvRz0kgCR/Fgk+L?= =?us-ascii?q?poP7Jj6Y0PkGvWuD7+d4Vu+jlnQrpx9+rzWt3Msgl4fEi4EPxl3K9Sh0xps+K8?= =?us-ascii?q?eiR05he9GkFYNdtySdN4RrXMwvW3pouCMmyr0evp67YTQKxIwnxxHBb/yHdJCF?= =?us-ascii?q?4hf+W+qLITd4g3dld6ynixaz90iv1PH8W9G33VpXtCZJjNbBu3IX2xDO5MWKSe?= =?us-ascii?q?Fx80mh1DqX0gDc8OBEIUQ6larBLJ4hx6Y9loITsUTCGi/2mV32jLeIeUk+9Omn?= =?us-ascii?q?8f7nYrL/pp+BNo97lBv+Mr81l8ykAuQ5Mg4OUHaH+eimz7Ls41X1QK9Wgf0ujq?= =?us-ascii?q?nZrJfaKNwUpqGkGABZy54j5AyjDzi60NQXg2IHIUleeBKAkojpIU3BL+72DPil?= =?us-ascii?q?mVSjji1nx/fcPr3uGp/NNGTMkK/9fbZh7E5R0BIzzdBe55JQC7EBOOrzVVHruN?= =?us-ascii?q?3WFBA5KQu0w//6CNV8yIweQ3mPD7SCMKPRsV6I4PwgI/WWaIAOpjmuY8QisvHi?= =?us-ascii?q?hzohkEMWfaSy9YAQdWqzE+tvOUjfZmDj0fkbFmJfhgo/SO3ykFDKbjdJYG+vXq?= =?us-ascii?q?8m/XlvEIKnCYbbXo3rn7Wb2z6mH5BMfUhdCUGKHGuufYjSCKREUz6bPsI0ym9M?= =?us-ascii?q?brOmUYJ0jRw=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2ANDwCwYqFZ/yOK91FcHAEFAQsBGAEFA?= =?us-ascii?q?QsBgzCBeY8IjyQBgh8BkRGGd4QXgTCDZEMVAQEBAQEBAQEBAQFqKIIzIoJxLyM?= =?us-ascii?q?vIEs3ijWxfDqME4Mqg1CBY4dmI2CFCR8FoGSCKZIdApJiAkiVcTUigQ10hSkBT?= =?us-ascii?q?B+BaT42iF8BJYIbAQEB?= X-IPAS-Result: =?us-ascii?q?A2ANDwCwYqFZ/yOK91FcHAEFAQsBGAEFAQsBgzCBeY8IjyQ?= =?us-ascii?q?Bgh8BkRGGd4QXgTCDZEMVAQEBAQEBAQEBAQFqKIIzIoJxLyMvIEs3ijWxfDqME?= =?us-ascii?q?4Mqg1CBY4dmI2CFCR8FoGSCKZIdApJiAkiVcTUigQ10hSkBTB+BaT42iF8BJYI?= =?us-ascii?q?bAQEB?= Received: from 35.138-247-81.adsl-dyn.isp.belgacom.be (HELO md.home) ([81.247.138.35]) by relay.skynet.be with ESMTP/TLS/AES128-SHA256; 26 Aug 2017 14:06:02 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [PATCH] Fix leak of auto_obstack objfile_per_bfd_storage->storage_obstack; Date: Sat, 26 Aug 2017 14:06:31 +0200 Message-Id: <1503749191-22447-1-git-send-email-philippe.waroquiers@skynet.be> X-IsSubscribed: yes commit 23732b1e32dd58f7c731d9aee56ff0b22a645d53 Author: Pedro Alves Date: Tue Jun 27 16:22:08 2017 +0100 changed objfile_per_bfd_storage->storage_obstack from 'struct obstack storage_obstack;' to 'auto_obstack storage_obstack;' So the obstack is auto allocated when the objfile_per_bfd_storage ctor is manually called by get_objfile_bfd_data). However, the ctor call was still followed by a manual call to obstack_init (&storage->storage_obstack); This results in a bunch of leaks detected by valgrind, such as: ==24665== 4,064 bytes in 1 blocks are definitely lost in loss record 11,469 of 11,590 ==24665== at 0x4C27BF5: malloc (vg_replace_malloc.c:299) ==24665== by 0x5437B7: xmalloc (common-utils.c:44) ==24665== by 0x77CAA7: _obstack_begin_worker (obstack.c:141) ==24665== by 0x60168F: auto_obstack (gdb_obstack.h:70) ==24665== by 0x60168F: get_objfile_bfd_data(objfile*, bfd*) (objfiles.h:188) ==24665== by 0x601DB6: allocate_objfile(bfd*, char const*, enum_flags) (objfiles.c:423) ==24665== by 0x647753: symbol_file_add_with_addrs(bfd*, char const*, enum_flags, section_addr_info*, enum_flags, objfile*) (symfile.c:1158) ==24665== by 0x647C7B: symbol_file_add_separate(bfd*, char const*, enum_flags, objfile*) (symfile.c:1252) ==24665== by 0x4C7D79: elf_symfile_read(objfile*, enum_flags) (elfread.c:1270) ==24665== by 0x647CB4: read_symbols(objfile*, enum_flags) (symfile.c:861) ==24665== by 0x647809: syms_from_objfile_1 (symfile.c:1062) -> remove the manual call to obstack_init. Reg-tested on Debian 8/amd64, tests results are the same before/after the patch. valgrind still show some leaks, but less. gdb/ChangeLog 2017-08-26 Philippe Waroquiers * objfiles.c (get_objfile_bfd_data): Remove useless obstack_init call. --- gdb/objfiles.c | 1 - 1 file changed, 1 deletion(-) diff --git a/gdb/objfiles.c b/gdb/objfiles.c index c49c7ea..96634b3 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -160,7 +160,6 @@ get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd) if (abfd != NULL) storage->gdbarch = gdbarch_from_bfd (abfd); - obstack_init (&storage->storage_obstack); storage->filename_cache = bcache_xmalloc (NULL, NULL); storage->macro_cache = bcache_xmalloc (NULL, NULL); storage->language_of_main = language_unknown;