diff options
Diffstat (limited to 'src/tools/valgrind.supp')
-rw-r--r-- | src/tools/valgrind.supp | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/src/tools/valgrind.supp b/src/tools/valgrind.supp new file mode 100644 index 0000000..e3a179d --- /dev/null +++ b/src/tools/valgrind.supp @@ -0,0 +1,200 @@ +# 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 +} + +# 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 +} |