Files
arrow/cpp/valgrind.supp
Antoine Pitrou 2e90823710 GH-47742: [C++][CI] Silence Valgrind leak on protobuf initialization (#47743)
### Rationale for this change

Valgrind would report memory leaks induced by protobuf initialization on library load, for example:
```
==14628== 414 bytes in 16 blocks are possibly lost in loss record 22 of 26
==14628==    at 0x4914EFF: operator new(unsigned long) (vg_replace_malloc.c:487)
==14628==    by 0x8D0B6CA: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) [clone .isra.0] (in /opt/conda/envs/arrow/lib/libprotobuf.so.25.3.0)
==14628==    by 0x8D33E62: google::protobuf::DescriptorPool::Tables::Tables() (in /opt/conda/envs/arrow/lib/libprotobuf.so.25.3.0)
==14628==    by 0x8D340E2: google::protobuf::DescriptorPool::DescriptorPool(google::protobuf::DescriptorDatabase*, google::protobuf::DescriptorPool::ErrorCollector*) (in /opt/conda/envs/arrow/lib/libprotobuf.so.25.3.0)
==14628==    by 0x8D341A2: google::protobuf::DescriptorPool::internal_generated_pool() (in /opt/conda/envs/arrow/lib/libprotobuf.so.25.3.0)
==14628==    by 0x8D34277: google::protobuf::DescriptorPool::InternalAddGeneratedFile(void const*, int) (in /opt/conda/envs/arrow/lib/libprotobuf.so.25.3.0)
==14628==    by 0x8D9C56F: google::protobuf::internal::AddDescriptorsRunner::AddDescriptorsRunner(google::protobuf::internal::DescriptorTable const*) (in /opt/conda/envs/arrow/lib/libprotobuf.so.25.3.0)
==14628==    by 0x40D147D: call_init.part.0 (dl-init.c:70)
==14628==    by 0x40D1567: call_init (dl-init.c:33)
==14628==    by 0x40D1567: _dl_init (dl-init.c:117)
==14628==    by 0x40EB2C9: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
```

This was triggered by the `libprotobuf` upgrade on conda-forge from 3.21.12 to 4.25.3.

### What changes are included in this PR?

Add a Valgrind suppression for these leak reports, as there is probably not much we can do about them.

### Are these changes tested?

Yes, by existing CI test.

### Are there any user-facing changes?

No.

* GitHub Issue: #47742

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2025-10-07 22:18:01 +02:00

97 lines
2.4 KiB
Plaintext

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
{
# Casting to/from boolean might read uninitialized data as the null bitmap isn't considered
<boolean_cast>
Memcheck:Cond
fun:*CastFunctor*BooleanType*
}
{
<llvm>:Conditional jump or move depends on uninitialised value(s)
Memcheck:Cond
...
fun:*llvm*PassManager*
}
{
<re2>:Conditional jump or move depends on uninitialised value(s)
Memcheck:Cond
...
fun:*re2*RE2*
}
{
<re2>:Use of uninitialised value of size 8
Memcheck:Value8
...
fun:*re2*RE2*
}
{
<re2>:Conditional jump or move depends on uninitialised value(s)
Memcheck:Cond
...
fun:*re2*Prog*
}
{
<re2>:Use of uninitialised value of size 8
Memcheck:Value8
...
fun:*re2*Prog*
}
{
<OpenTelemetry>:Thread locals don't appear to be freed
Memcheck:Leak
...
fun:*opentelemetry*ThreadLocalContextStorage*GetStack*
}
{
<OpenTelemetry>:Thread locals don't appear to be freed
Memcheck:Leak
...
fun:*opentelemetry*ThreadLocalContextStorage*Stack*Resize*
}
{
<OpenTelemetry>:Thread locals don't appear to be freed
Memcheck:Leak
...
fun:_dl_allocate_tls
}
{
<OpenSSL>:Conditional jump or move depends on uninitialised value(s)
Memcheck:Cond
...
fun:*gcm_cipher*
}
{
<Azure>:curl shared handle deallocation fails (GH-47485)
Memcheck:Leak
fun:calloc
fun:curl_share_init
fun:*Azure*CurlConnection*
}
{
<protobuf>:leak on library initialization
Memcheck:Leak
...
fun:*google*protobuf*AddDescriptorsRunner*
}
{
<protobuf>:leak on library initialization
Memcheck:Leak
...
fun:*google*protobuf*InternalRegisterGeneratedFile*
}