有没有办法在valgrind memcheck中命名mempools?
PostgreSQL大量使用内存池,当启用Valgrind时,使用有没有办法在valgrind memcheck中命名mempools?,c,postgresql,valgrind,memcheck,C,Postgresql,Valgrind,Memcheck,PostgreSQL大量使用内存池,当启用Valgrind时,使用Valgrind\u CREATE\u MEMPOOL等向Valgrind提供有关内存池的信息 结合使用客户端请求的增量泄漏检查,如VALGRIND\u DO\u leak\u CHECK和VALGRIND\u DO\u ADDED\u leak\u CHECK,这对于跟踪大型、复杂和长寿命程序中的内存使用非常有用 但是:PostgreSQL有很多缓存,它们的生存期往往跨越事务等典型边界。这样的缓存中的内存出现泄漏(出于各种原因)
Valgrind\u CREATE\u MEMPOOL
等向Valgrind提供有关内存池的信息
结合使用客户端请求的增量泄漏检查,如VALGRIND\u DO\u leak\u CHECK
和VALGRIND\u DO\u ADDED\u leak\u CHECK
,这对于跟踪大型、复杂和长寿命程序中的内存使用非常有用
但是:PostgreSQL有很多缓存,它们的生存期往往跨越事务等典型边界。这样的缓存中的内存出现泄漏(出于各种原因)通常是可以的,但如果仅使用堆栈在缓存上下文中分配了这样的内存,则并不总是容易识别
因此,我正在寻找一种在泄漏报告中显示内存池名称并在抑制中对其进行过滤的方法。理想情况下
# Do not copy, this DOES NOT WORK
{
my_suppression_name
Memcheck:Leak
match-leak-kinds: reachable
pool:CacheMemoryContext # <---- something like this
fun:malloc
fun:AllocSetAlloc
fun:palloc
fun:initStringInfo
fun:apply_work
...
}
#不要复制,这不起作用
{
我的名字
Memcheck:泄漏
匹配泄漏类型:可达
池:CacheMoryContext#
... 6 (+6) bytes in 1 (+1) blocks are possibly lost in loss record 180 of 942
... in mempool "CacheMemoryContext" <---- Like this
... at 0x815FFC: MemoryContextAlloc (mcxt.c:771)
... by 0x817680: MemoryContextStrdup (mcxt.c:1157)