1# This is a suppression file for use with Valgrind tools.  File format
2# documentation:
3#	http://valgrind.org/docs/manual/mc-manual.html#mc-manual.suppfiles
4
5# The libc symbol that implements a particular standard interface is
6# implementation-dependent.  For example, strncpy() shows up as "__GI_strncpy"
7# on some platforms.  Use wildcards to avoid mentioning such specific names.
8# Avoid mentioning functions that are good candidates for inlining,
9# particularly single-caller static functions.  Suppressions mentioning them
10# would be ineffective at higher optimization levels.
11
12
13# We have occasion to write raw binary structures to disk or to the network.
14# These may contain uninitialized padding bytes.  Since recipients also ignore
15# those bytes as padding, this is harmless.
16
17{
18	padding_pgstat_send
19	Memcheck:Param
20	socketcall.send(msg)
21
22	fun:*send*
23	fun:pgstat_send
24}
25
26{
27	padding_pgstat_sendto
28	Memcheck:Param
29	socketcall.sendto(msg)
30
31	fun:*send*
32	fun:pgstat_send
33}
34
35{
36	padding_pgstat_write
37	Memcheck:Param
38	write(buf)
39
40	...
41	fun:pgstat_write_statsfiles
42}
43
44{
45	padding_XLogRecData_CRC
46	Memcheck:Value8
47
48	fun:pg_comp_crc32c*
49	fun:XLogRecordAssemble
50}
51
52{
53	padding_XLogRecData_write
54	Memcheck:Param
55	write(buf)
56
57    ...
58	fun:XLogWrite
59}
60
61{
62	padding_relcache
63	Memcheck:Param
64	write(buf)
65
66	...
67	fun:write_relcache_init_file
68}
69
70{
71	padding_reorderbuffer_serialize
72	Memcheck:Param
73	write(buf)
74
75	...
76	fun:ReorderBufferSerializeTXN
77}
78
79{
80	padding_twophase_prepare
81	Memcheck:Param
82	write(buf)
83
84	...
85	fun:EndPrepare
86}
87
88
89{
90	padding_twophase_CRC
91	Memcheck:Value8
92	fun:pg_comp_crc32c*
93	fun:EndPrepare
94}
95
96{
97	padding_bootstrap_initial_xlog_write
98	Memcheck:Param
99	write(buf)
100
101	...
102	fun:BootStrapXLOG
103}
104
105{
106	padding_bootstrap_control_file_write
107	Memcheck:Param
108	write(buf)
109
110	...
111	fun:WriteControlFile
112	fun:BootStrapXLOG
113}
114
115{
116	bootstrap_write_relmap_overlap
117	Memcheck:Overlap
118	fun:memcpy*
119	fun:write_relmap_file
120	fun:RelationMapFinishBootstrap
121}
122
123
124# gcc on ppc64 can generate a four-byte read to fetch the final "char" fields
125# of a FormData_pg_cast.  This is valid compiler behavior, because a proper
126# FormData_pg_cast has trailing padding.  Tuples we treat as structures omit
127# that padding, so Valgrind reports an invalid read.  Practical trouble would
128# entail the missing pad bytes falling in a different memory page.  So long as
129# the structure is aligned, that will not happen.
130{
131	overread_tuplestruct_pg_cast
132	Memcheck:Addr4
133
134	fun:IsBinaryCoercible
135}
136
137# Python's allocator does some low-level tricks for efficiency. Those
138# can be disabled for better instrumentation; but few people testing
139# postgres will have such a build of python. So add broad
140# suppressions of the resulting errors.
141# See also https://svn.python.org/projects/python/trunk/Misc/README.valgrind
142{
143   python_clever_allocator
144   Memcheck:Addr4
145   fun:PyObject_Free
146}
147
148{
149   python_clever_allocator
150   Memcheck:Addr8
151   fun:PyObject_Free
152}
153
154{
155   python_clever_allocator
156   Memcheck:Value4
157   fun:PyObject_Free
158}
159
160{
161   python_clever_allocator
162   Memcheck:Value8
163   fun:PyObject_Free
164}
165
166{
167   python_clever_allocator
168   Memcheck:Cond
169   fun:PyObject_Free
170}
171
172{
173   python_clever_allocator
174   Memcheck:Addr4
175   fun:PyObject_Realloc
176}
177
178{
179   python_clever_allocator
180   Memcheck:Addr8
181   fun:PyObject_Realloc
182}
183
184{
185   python_clever_allocator
186   Memcheck:Value4
187   fun:PyObject_Realloc
188}
189
190{
191   python_clever_allocator
192   Memcheck:Value8
193   fun:PyObject_Realloc
194}
195
196{
197   python_clever_allocator
198   Memcheck:Cond
199   fun:PyObject_Realloc
200}
201