mirror of
https://github.com/postgres/postgres.git
synced 2026-04-15 22:10:45 -04:00
This reverts commit d3bbc4b96a.
Per discussion, it's not desirable to add valgrind suppressions for
outside our own code base (e.g. glibc in this case), especially when
the suppressions may be platform-specific. There are better ways to
deal with that, e.g. by providing local suppressions.
Discussion: https://www.postgresql.org/message-id/flat/90ac0452-e907-e7a4-b3c8-15bd33780e62%402ndquadrant.com
214 lines
3.8 KiB
Text
214 lines
3.8 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_send
|
|
Memcheck:Param
|
|
socketcall.send(msg)
|
|
|
|
fun:*send*
|
|
fun:pgstat_send
|
|
}
|
|
|
|
{
|
|
padding_pgstat_sendto
|
|
Memcheck:Param
|
|
socketcall.sendto(msg)
|
|
|
|
fun:*send*
|
|
fun:pgstat_send
|
|
}
|
|
|
|
{
|
|
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:IsBinaryCoercible
|
|
}
|
|
|
|
# Atomic writes to 64bit atomic vars uses compare/exchange to
|
|
# guarantee atomic writes of 64bit variables. pg_atomic_write is used
|
|
# during initialization of the atomic variable; that leads to an
|
|
# initial read of the old, undefined, memory value. But that's just to
|
|
# make sure the swap works correctly.
|
|
{
|
|
uninitialized_atomic_init_u64
|
|
Memcheck:Cond
|
|
fun:pg_atomic_exchange_u64_impl
|
|
fun:pg_atomic_write_u64_impl
|
|
fun:pg_atomic_init_u64_impl
|
|
}
|
|
|
|
|
|
# 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
|
|
}
|