postgresql/src/tools/valgrind.supp
Michael Paquier b8cfcb9e00 Fix typos and inconsistencies in code and comments
This change is a cocktail of harmonization of function argument names,
grammar typos, renames for better consistency and unused code (see
ltree).  All of these have been spotted by the author.

Author: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/b2c0d0b7-3944-487d-a03d-d155851958ff@gmail.com
2026-01-05 09:19:15 +09:00

229 lines
4.6 KiB
Text

# This is a suppression file for use with Valgrind tools. File format
# documentation:
# http://valgrind.org/docs/manual/mc-manual.html#mc-manual.suppfiles
# The libc symbol that implements a particular standard interface is
# implementation-dependent. For example, strncpy() shows up as "__GI_strncpy"
# on some platforms. Use wildcards to avoid mentioning such specific names.
# Avoid mentioning functions that are good candidates for inlining,
# particularly single-caller static functions. Suppressions mentioning them
# would be ineffective at higher optimization levels.
# We have occasion to write raw binary structures to disk or to the network.
# These may contain uninitialized padding bytes. Since recipients also ignore
# those bytes as padding, this is harmless.
{
padding_pgstat_write
Memcheck:Param
write(buf)
...
fun:pgstat_write_statsfiles
}
{
padding_XLogRecData_CRC
Memcheck:Value8
fun:pg_comp_crc32c*
fun:XLogRecordAssemble
}
{
padding_XLogRecData_write
Memcheck:Param
pwrite64(buf)
...
fun:XLogWrite
}
{
padding_relcache
Memcheck:Param
write(buf)
...
fun:write_relcache_init_file
}
{
padding_reorderbuffer_serialize
Memcheck:Param
write(buf)
...
fun:ReorderBufferSerializeTXN
}
{
padding_twophase_prepare
Memcheck:Param
write(buf)
...
fun:EndPrepare
}
{
padding_twophase_CRC
Memcheck:Value8
fun:pg_comp_crc32c*
fun:EndPrepare
}
{
padding_bootstrap_initial_xlog_write
Memcheck:Param
write(buf)
...
fun:BootStrapXLOG
}
{
padding_bootstrap_control_file_write
Memcheck:Param
write(buf)
...
fun:WriteControlFile
fun:BootStrapXLOG
}
{
bootstrap_write_relmap_overlap
Memcheck:Overlap
fun:memcpy*
fun:write_relmap_file
fun:RelationMapFinishBootstrap
}
# gcc on ppc64 can generate a four-byte read to fetch the final "char" fields
# of a FormData_pg_cast. This is valid compiler behavior, because a proper
# FormData_pg_cast has trailing padding. Tuples we treat as structures omit
# that padding, so Valgrind reports an invalid read. Practical trouble would
# entail the missing pad bytes falling in a different memory page. So long as
# the structure is aligned, that will not happen.
{
overread_tuplestruct_pg_cast
Memcheck:Addr4
fun:IsBinaryCoercibleWithCast
}
# Python's allocator does some low-level tricks for efficiency. Those
# can be disabled for better instrumentation; but few people testing
# postgres will have such a build of python. So add broad
# suppressions of the resulting errors.
# See also https://svn.python.org/projects/python/trunk/Misc/README.valgrind
{
python_clever_allocator
Memcheck:Addr4
fun:PyObject_Free
}
{
python_clever_allocator
Memcheck:Addr8
fun:PyObject_Free
}
{
python_clever_allocator
Memcheck:Value4
fun:PyObject_Free
}
{
python_clever_allocator
Memcheck:Value8
fun:PyObject_Free
}
{
python_clever_allocator
Memcheck:Cond
fun:PyObject_Free
}
{
python_clever_allocator
Memcheck:Addr4
fun:PyObject_Realloc
}
{
python_clever_allocator
Memcheck:Addr8
fun:PyObject_Realloc
}
{
python_clever_allocator
Memcheck:Value4
fun:PyObject_Realloc
}
{
python_clever_allocator
Memcheck:Value8
fun:PyObject_Realloc
}
{
python_clever_allocator
Memcheck:Cond
fun:PyObject_Realloc
}
# NUMA introspection requires touching memory first, and some of it may
# be marked as noaccess (e.g. unpinned buffers). So just ignore that.
{
pg_numa_touch_mem_if_required
Memcheck:Addr4
fun:pg_numa_touch_mem_if_required
}
{
pg_numa_touch_mem_if_required
Memcheck:Addr8
fun:pg_numa_touch_mem_if_required
}
# Memory-leak suppressions
# Note that a suppression rule will silence complaints about memory blocks
# allocated in matching places, but it won't prevent "indirectly lost"
# complaints about blocks that are only reachable via the suppressed blocks.
# Suppress complaints about stuff leaked during function cache loading.
# Both the PL/pgSQL and SQL-function parsing processes generate some cruft
# within the function's cache context, which doesn't seem worth the trouble
# to get rid of. Moreover, there are cases where CachedFunction structs
# are intentionally leaked because we're unsure if any fn_extra pointers
# remain.
{
hide_function_cache_leaks
Memcheck:Leak
match-leak-kinds: definite,possible,indirect
...
fun:cached_function_compile
}
# Suppress complaints about stuff leaked during TS dictionary loading.
# Not very much is typically lost there, and preventing it would
# require a risky API change for TS tmplinit functions.
{
hide_ts_dictionary_leaks
Memcheck:Leak
match-leak-kinds: definite,possible,indirect
...
fun:lookup_ts_dictionary_cache
}