https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64535

--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #15)
> I think we need to get a suppression into valgrind:
> 
> ==21268== Memcheck, a memory error detector
> ==21268== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
> ==21268== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
> ==21268== Command: ./a.out
> ==21268== 
> ==21268== 
> ==21268== HEAP SUMMARY:
> ==21268==     in use at exit: 72,704 bytes in 1 blocks
> ==21268==   total heap usage: 5,747 allocs, 5,746 frees, 822,784 bytes
> allocated
> ==21268== 
> ==21268== 72,704 bytes in 1 blocks are still reachable in loss record 1 of 1
> ==21268==    at 0x4A0645D: malloc (vg_replace_malloc.c:291)
> ==21268==    by 0x4C990FF: _GLOBAL__sub_I_eh_alloc.cc (eh_alloc.cc:117)
> ==21268==    by 0x394940F2D9: call_init.part.0 (dl-init.c:82)
> ==21268==    by 0x394940F3C2: _dl_init (dl-init.c:34)
> ==21268==    by 0x3949401229: ??? (in /usr/lib64/ld-2.18.so)
> ==21268== 
> ==21268== LEAK SUMMARY:
> ==21268==    definitely lost: 0 bytes in 0 blocks
> ==21268==    indirectly lost: 0 bytes in 0 blocks
> ==21268==      possibly lost: 0 bytes in 0 blocks
> ==21268==    still reachable: 72,704 bytes in 1 blocks
> ==21268==         suppressed: 0 bytes in 0 blocks
> ==21268== 
> ==21268== For counts of detected and suppressed errors, rerun with: -v
> ==21268== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)

Or add a destructor.

Index: libstdc++-v3/libsupc++/eh_alloc.cc
===================================================================
--- libstdc++-v3/libsupc++/eh_alloc.cc  (revision 220160)
+++ libstdc++-v3/libsupc++/eh_alloc.cc  (working copy)
@@ -81,6 +81,7 @@ namespace
     {
     public:
       pool();
+      ~pool();

       void *allocate (std::size_t);
       void free (void *);
@@ -240,6 +242,11 @@ namespace
              && p < arena + arena_size);
     }

+  pool::~pool ()
+    {
+      free (arena);
+    }
+
   pool emergency_pool;
 }

Reply via email to