aboutsummaryrefslogtreecommitdiff
path: root/src/tools/valgrind.supp
blob: 91742d790bce6c0e8cfaccd0822875cfd5ca82d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# 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:XLogInsert
}

{
	padding_XLogRecData_write
	Memcheck:Param
	write(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:EndPrepare
}


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