mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 01:51:29 +00:00
The name malloc-leaks-cxx-stl-string-classes-debug was confusing since the suppression wasn't a leak, not part of stl, string, classes or debug. Rename it to libstdcxx-emergency-eh-alloc-pool to indicate it is part of the emergency exception handling memory pool. Note that suppression is only needed for some test cases, normally the pool is cleaned up as part of cxx_freeres.
112 lines
3.7 KiB
Plaintext
112 lines
3.7 KiB
Plaintext
# Below is a temporary patch (slightly modified) from
|
|
# 345307 - Warning about "still reachable" memory when using libstdc++ from gcc 5
|
|
# This patch is not needed anymore if libstdc++ provides __gnu_cxx::__freeres
|
|
# but we still need to ignore these allocations during the leak_cpp_interior
|
|
# to have the test behaviour not depending on libstdc++ version.
|
|
|
|
|
|
|
|
# Some programs are using the C++ STL and string classes.
|
|
# Valgrind reports 'still reachable' memory leaks involving these classes
|
|
# at the exit of the program, but there should be none.
|
|
#
|
|
# Many implementations of the C++ standard libraries use their own memory
|
|
# pool allocators. Memory for quite a number of destructed objects is not
|
|
# immediately freed and given back to the OS, but kept in the pool(s) for
|
|
# later re-use. The fact that the pools are not freed at the exit of the
|
|
# program cause Valgrind to report this memory as still reachable.
|
|
#
|
|
# The behavior not to free pools at the exit could be called a bug of the
|
|
# library though.
|
|
#
|
|
# Using GCC, you can force the STL to use malloc and to free memory as soon
|
|
# as possible by globally disabling memory caching. Beware! Doing so will
|
|
# probably slow down your program, sometimes drastically.
|
|
#
|
|
# There are other ways to disable memory pooling: using the malloc_alloc
|
|
# template with your objects (not portable, but should work for GCC) or
|
|
# even writing your own memory allocators. But beware: allocators belong
|
|
# to the more messy parts of the STL and people went to great lengths to
|
|
# make the STL portable across platforms. Chances are good that your
|
|
# solution will work on your platform, but not on others.
|
|
#
|
|
# 72,704 bytes in 1 blocks are still reachable in loss record 1 of 1
|
|
# at 0x4C28D06: malloc (vg_replace_malloc.c:299)
|
|
# by 0x50C317F: ??? (in /usr/lib64/libstdc++.so.6.0.21)
|
|
# by 0x400F759: call_init.part.0 (dl-init.c:72)
|
|
# by 0x400F86A: call_init (dl-init.c:30)
|
|
# by 0x400F86A: _dl_init (dl-init.c:120)
|
|
# by 0x4000CB9: ??? (in /usr/lib64/ld-2.22.so)
|
|
#
|
|
# HEAP SUMMARY:
|
|
# in use at exit: 72,704 bytes in 1 blocks
|
|
# total heap usage: 4 allocs, 3 frees, 72,864 bytes allocated
|
|
#
|
|
# LEAK SUMMARY:
|
|
# definitely lost: 0 bytes in 0 blocks
|
|
# indirectly lost: 0 bytes in 0 blocks
|
|
# possibly lost: 0 bytes in 0 blocks
|
|
# still reachable: 72,704 bytes in 1 blocks
|
|
# suppressed: 0 bytes in 0 blocks
|
|
|
|
# All the following suppressions are variants of
|
|
# _dl_init -> call_init which calls the DT_INIT_ARRAY functions
|
|
|
|
# These suppressions are sensitive to changes to GCC and libstdc++
|
|
# in order to generate a suppression stanza run
|
|
#
|
|
# /vg-in-place --gen-suppressions=all --show-reachable=yes --leak-check=full --run-cxx-freeres=no memcheck/tests/leak_cpp_interior
|
|
#
|
|
# since leaks are ordered by increasing size the stanza to look for is the last one
|
|
|
|
|
|
{
|
|
malloc-leaks-cxx-stl-string-classes
|
|
Memcheck:Leak
|
|
match-leak-kinds: reachable
|
|
fun:malloc
|
|
obj:*lib*/libstdc++.so*
|
|
fun:call_init*
|
|
}
|
|
{
|
|
libstdcxx-emergency-eh-alloc-pool
|
|
Memcheck:Leak
|
|
match-leak-kinds: reachable
|
|
fun:malloc
|
|
fun:pool
|
|
fun:__static_initialization_and_destruction_0
|
|
fun:_GLOBAL__sub_I_eh_alloc.cc
|
|
}
|
|
{
|
|
malloc-leaks-cxx-stl-string-classes-debug2
|
|
Memcheck:Leak
|
|
match-leak-kinds: reachable
|
|
fun:malloc
|
|
obj:*
|
|
fun:call_init
|
|
fun:_dl_init
|
|
fun:_dl_start_user
|
|
}
|
|
{
|
|
malloc-leaks-cxx-stl-string-classes-debug3
|
|
Memcheck:Leak
|
|
match-leak-kinds: reachable
|
|
fun:malloc
|
|
fun:pool
|
|
fun:UnknownInlinedFun
|
|
fun:_GLOBAL__sub_I_eh_alloc.cc
|
|
fun:call_init.part.0
|
|
fun:_dl_init
|
|
obj:*lib*/ld-2.*.so
|
|
}
|
|
{
|
|
FreeBSD-leaks-g++-malloc
|
|
Memcheck:Leak
|
|
match-leak-kinds: reachable
|
|
fun:malloc
|
|
obj:/usr/local/lib*/gcc*/libstdc++.so*
|
|
obj:/libexec/ld-elf*.so.1
|
|
obj:/libexec/ld-elf*.so.1
|
|
obj:/libexec/ld-elf*.so.1
|
|
}
|