Your message dated Thu, 18 Aug 2005 11:06:13 +0200
with message-id <[EMAIL PROTECTED]>
and subject line Bug#275023: g++-3.4: valgrind reports vectors don't free their 
memory
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 5 Oct 2004 14:50:48 +0000
>From [EMAIL PROTECTED] Tue Oct 05 07:50:47 2004
Return-path: <[EMAIL PROTECTED]>
Received: from bunkus.org (p15097576.pureserver.info) [217.160.128.146] 
        by spohr.debian.org with esmtp (Exim 3.35 1 (Debian))
        id 1CEqeN-0007On-00; Tue, 05 Oct 2004 07:50:47 -0700
Received: from localhost (localhost.localdomain [127.0.0.1])
        by p15097576.pureserver.info (Postfix) with ESMTP id 0E8BB440074;
        Tue,  5 Oct 2004 16:50:46 +0200 (CEST)
Received: from p15097576.pureserver.info ([127.0.0.1])
 by localhost (p15097576 [127.0.0.1]) (amavisd-new, port 10024) with SMTP
 id 31071-05; Tue,  5 Oct 2004 16:50:45 +0200 (CEST)
Received: from jaina.no-ip.com (port-212-202-180-232.dynamic.qsc.de 
[212.202.180.232])
        by p15097576.pureserver.info (Postfix) with ESMTP id 8924044006B;
        Tue,  5 Oct 2004 16:50:44 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
        by jaina.no-ip.com (Postfix) with ESMTP id 95A6D5499191;
        Tue,  5 Oct 2004 16:50:43 +0200 (CEST)
Received: from jaina.no-ip.com ([127.0.0.1])
        by localhost (jaina [127.0.0.1]) (amavisd-new, port 10024) with SMTP
        id 02638-03; Tue, 5 Oct 2004 16:50:42 +0200 (CEST)
Received: by jaina.no-ip.com (Postfix, from userid 500)
        id 599705499187; Tue,  5 Oct 2004 16:50:42 +0200 (CEST)
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: Moritz Bunkus <[EMAIL PROTECTED]>
To: Debian Bug Tracking System <[EMAIL PROTECTED]>
Subject: g++-3.4: valgrind reports vectors don't free their memory
X-Mailer: reportbug 2.62
Date: Tue, 05 Oct 2004 16:50:41 +0200
Message-Id: <[EMAIL PROTECTED]>
X-Virus-Scanned: by amavisd-new-20030616-p9 (Debian) at bunkus.org
X-Virus-Scanned: by amavisd-new at bunkus.org
Delivered-To: [EMAIL PROTECTED]
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 
        (1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Status: No, hits=-8.0 required=4.0 tests=BAYES_00,HAS_PACKAGE 
        autolearn=no version=2.60-bugs.debian.org_2004_03_25
X-Spam-Level: 

Package: g++-3.4
Version: 3.4.2-2
Severity: normal

Maybe this is not a bug in g++ but in valgrind, or maybe it isn't a
bug at all, so my apologies if this is wrong here. Anyway.

A program using std::vector compiled with g++-3.4 spits out a lot of
warnings when it is run under valgrind with leak checking enabled. The
same source code compiled with g++-3.3 produces only one of those
entries with valgrind.

This short (and very useless) program demonstrates it:
---------------------------
#include <vector>

using namespace std;

typedef struct {
  int i;
  char c;
} some_struct_t;

void some_func() {
  vector<some_struct_t> v;
  some_struct_t s;

  s.i = 42;
  s.c = 'd';
  v.push_back(s);
  s.i = 54;
  s.c = 'a';
  v.push_back(s);
}

int main() {
  some_func();

  return 0;
}
----------------------------

Compilation: g++-3.4 -o testme-3.4 testme.cpp

valgrind 2.2.0-2 (Debian package), command line:
valgrind --leak-check=yes --show-reachable=yes ./testme-3.4

Output:
-----------------------------
==16676== Memcheck, a memory error detector for x86-linux.
==16676== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al.
==16676== Using valgrind-2.2.0, a program supervision framework for x86-linux.
==16676== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al.
==16676== For more details, rerun with: -v
==16676== 
==16676== 
==16676== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 17 from 1)
==16676== malloc/free: in use at exit: 8518 bytes in 9 blocks.
==16676== malloc/free: 10 allocs, 1 frees, 8530 bytes allocated.
==16676== For counts of detected errors, rerun with: -v
==16676== searching for pointers to 9 not-freed blocks.
==16676== checked 2446368 bytes.
==16676== 
==16676== 20 bytes in 5 blocks are still reachable in loss record 1 of 4
==16676==    at 0x1B90506F: operator new(unsigned) (vg_replace_malloc.c:133)
==16676==    by 0x8049C03: 
__gnu_cxx::__mt_alloc<some_struct_t>::_S_initialize() (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x80493AC: 
__gnu_cxx::__mt_alloc<some_struct_t>::allocate(unsigned, void const*) (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x8048FB5: std::_Vector_base<some_struct_t, 
std::allocator<some_struct_t> >::_M_allocate(unsigned) (in 
/home/mosu/tmp/testme-3.4)
==16676== 
==16676== 
==16676== 80 bytes in 1 blocks are still reachable in loss record 2 of 4
==16676==    at 0x1B90506F: operator new(unsigned) (vg_replace_malloc.c:133)
==16676==    by 0x80499C9: 
__gnu_cxx::__mt_alloc<some_struct_t>::_S_initialize() (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x80493AC: 
__gnu_cxx::__mt_alloc<some_struct_t>::allocate(unsigned, void const*) (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x8048FB5: std::_Vector_base<some_struct_t, 
std::allocator<some_struct_t> >::_M_allocate(unsigned) (in 
/home/mosu/tmp/testme-3.4)
==16676== 
==16676== 
==16676== 258 bytes in 1 blocks are still reachable in loss record 3 of 4
==16676==    at 0x1B90506F: operator new(unsigned) (vg_replace_malloc.c:133)
==16676==    by 0x8049953: 
__gnu_cxx::__mt_alloc<some_struct_t>::_S_initialize() (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x80493AC: 
__gnu_cxx::__mt_alloc<some_struct_t>::allocate(unsigned, void const*) (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x8048FB5: std::_Vector_base<some_struct_t, 
std::allocator<some_struct_t> >::_M_allocate(unsigned) (in 
/home/mosu/tmp/testme-3.4)
==16676== 
==16676== 
==16676== 8160 bytes in 2 blocks are still reachable in loss record 4 of 4
==16676==    at 0x1B90506F: operator new(unsigned) (vg_replace_malloc.c:133)
==16676==    by 0x804960B: 
__gnu_cxx::__mt_alloc<some_struct_t>::allocate(unsigned, void const*) (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x8048FB5: std::_Vector_base<some_struct_t, 
std::allocator<some_struct_t> >::_M_allocate(unsigned) (in 
/home/mosu/tmp/testme-3.4)
==16676==    by 0x8048C9B: std::vector<some_struct_t, 
std::allocator<some_struct_t> 
>::_M_insert_aux(__gnu_cxx::__normal_iterator<some_struct_t*, 
std::vector<some_struct_t, std::allocator<some_struct_t> > >, some_struct_t 
const&) (in /home/mosu/tmp/testme-3.4)
==16676== 
==16676== LEAK SUMMARY:
==16676==    definitely lost: 0 bytes in 0 blocks.
==16676==    possibly lost:   0 bytes in 0 blocks.
==16676==    still reachable: 8518 bytes in 9 blocks.
==16676==         suppressed: 0 bytes in 0 blocks.
-----------------------------

With a "proper" program its output becomes even more verbose and makes
finding real issues in the program very hard.

g++-3.3 -o testme-3.3 testme.cpp
valgrind --leak-check=yes --show-reachable=yes ./testme-3.3

Output:
-----------------------------
==17180== Memcheck, a memory error detector for x86-linux.
==17180== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al.
==17180== Using valgrind-2.2.0, a program supervision framework for x86-linux.
==17180== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al.
==17180== For more details, rerun with: -v
==17180== 
==17180== 
==17180== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 17 from 1)
==17180== malloc/free: in use at exit: 320 bytes in 1 blocks.
==17180== malloc/free: 1 allocs, 0 frees, 320 bytes allocated.
==17180== For counts of detected errors, rerun with: -v
==17180== searching for pointers to 1 not-freed blocks.
==17180== checked 2343248 bytes.
==17180== 
==17180== 320 bytes in 1 blocks are still reachable in loss record 1 of 1
==17180==    at 0x1B90506F: operator new(unsigned) (vg_replace_malloc.c:133)
==17180==    by 0x1B999BFA: std::__default_alloc_template<true, 
0>::_S_chunk_alloc(unsigned, int&) (in /usr/lib/libstdc++.so.5.0.6)
==17180==    by 0x1B999B0C: std::__default_alloc_template<true, 
0>::_S_refill(unsigned) (in /usr/lib/libstdc++.so.5.0.6)
==17180==    by 0x1B999807: std::__default_alloc_template<true, 
0>::allocate(unsigned) (in /usr/lib/libstdc++.so.5.0.6)
==17180== 
==17180== LEAK SUMMARY:
==17180==    definitely lost: 0 bytes in 0 blocks.
==17180==    possibly lost:   0 bytes in 0 blocks.
==17180==    still reachable: 320 bytes in 1 blocks.
==17180==         suppressed: 0 bytes in 0 blocks.
-----------------------------

Thanks, Mosu

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.4.26
Locale: LANG=en_US, LC_CTYPE=en_US

Versions of packages g++-3.4 depends on:
ii  gcc-3.4                     3.4.2-2      The GNU C compiler
ii  gcc-3.4-base                3.4.2-2      The GNU Compiler Collection (base 
ii  libc6                       2.3.2.ds1-16 GNU C Library: Shared libraries an
ii  libstdc++6-dev              3.4.2-2      The GNU Standard C++ Library v3 (d

-- no debconf information

---------------------------------------
Received: (at 275023-done) by bugs.debian.org; 18 Aug 2005 09:06:18 +0000
>From [EMAIL PROTECTED] Thu Aug 18 02:06:18 2005
Return-path: <[EMAIL PROTECTED]>
Received: from mail.cs.tu-berlin.de [130.149.17.13] (root)
        by spohr.debian.org with esmtp (Exim 3.36 1 (Debian))
        id 1E5gLq-0006Pq-00; Thu, 18 Aug 2005 02:06:18 -0700
Received: from mailhost.cs.tu-berlin.de ([EMAIL PROTECTED] [130.149.17.13])
        by mail.cs.tu-berlin.de (8.9.3p2/8.9.3) with ESMTP id LAA21934;
        Thu, 18 Aug 2005 11:06:15 +0200 (MEST)
Received: from localhost (localhost [127.0.0.1])
        by mailhost.cs.tu-berlin.de (Postfix) with ESMTP id 50DA2FD4F;
        Thu, 18 Aug 2005 11:06:15 +0200 (MEST)
Received: from mailhost.cs.tu-berlin.de ([127.0.0.1])
 by localhost (bueno [127.0.0.1]) (amavisd-new, port 10224) with ESMTP
 id 29605-20; Thu, 18 Aug 2005 11:06:14 +0200 (MEST) 11332
Received: from bolero.cs.tu-berlin.de (bolero.cs.tu-berlin.de [130.149.19.1])
        by mailhost.cs.tu-berlin.de (Postfix) with ESMTP;
        Thu, 18 Aug 2005 11:06:13 +0200 (MEST)
Received: (from [EMAIL PROTECTED])
        by bolero.cs.tu-berlin.de (8.12.10+Sun/8.12.8/Submit) id j7I96DG8013012;
        Thu, 18 Aug 2005 11:06:13 +0200 (MEST)
From: Matthias Klose <[EMAIL PROTECTED]>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-ID: <[EMAIL PROTECTED]>
Date: Thu, 18 Aug 2005 11:06:13 +0200
To: Moritz Bunkus <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
Subject: Re: Bug#275023: g++-3.4: valgrind reports vectors don't free their 
memory
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
X-Mailer: VM 7.17 under 21.4 (patch 17) "Jumbo Shrimp" XEmacs Lucid
X-Virus-Scanned: by amavisd-new at cs.tu-berlin.de
Delivered-To: [EMAIL PROTECTED]
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02 
        (1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Level: 
X-Spam-Status: No, hits=-6.0 required=4.0 tests=BAYES_00,HAS_BUG_NUMBER 
        autolearn=no version=2.60-bugs.debian.org_2005_01_02

Moritz Bunkus writes:
> Hey,
> 
> sorry for not responding for such a long time. I've upgraded to valgrind
> 3.0 and g++ 3.4.5, and valgrind does not report these leaks anymore. So
> the issue's been solved.

thanks for the feedback.
closing the report.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to