postgresql/src/tools/valgrind.supp

183 lines
3.2 KiB
Plaintext

# 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
}