]> granicus.if.org Git - postgresql/blob - src/tools/valgrind.supp
MSVC: Exclude 'brin' contrib module
[postgresql] / src / tools / valgrind.supp
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 # gcc on ppc64 can generate a four-byte read to fetch the final "char" fields
98 # of a FormData_pg_cast.  This is valid compiler behavior, because a proper
99 # FormData_pg_cast has trailing padding.  Tuples we treat as structures omit
100 # that padding, so Valgrind reports an invalid read.  Practical trouble would
101 # entail the missing pad bytes falling in a different memory page.  So long as
102 # the structure is aligned, that will not happen.
103 {
104         overread_tuplestruct_pg_cast
105         Memcheck:Addr4
106
107         fun:IsBinaryCoercible
108 }
109
110 # Atomic writes to 64bit atomic vars uses compare/exchange to
111 # guarantee atomic writes of 64bit variables. pg_atomic_write is used
112 # during initialization of the atomic variable, hat leads to an
113 # initial read of the old, undefined, memory value. But that's just to
114 # make sure the swap works correctly.
115 {
116         uninitialized_atomic_init_u64
117         Memcheck:Cond
118         fun:pg_atomic_exchange_u64_impl
119         fun:pg_atomic_write_u64_impl
120         fun:pg_atomic_init_u64_impl
121 }