apache / apache/arrow

[C++] Fix new warnings when building with GCC 15

Open
#44,995 0 comments 0 reactions 0 assignees View on GitHub
Component: C++ Type: bug
Dominant language
C++
Stars
17.1k
Forks
4.3k
Avg merge
3d 13h
Merged PRs (30d)
88

Description

### Describe the bug, including details regarding any error messages, version, and platform.

CRAN builds libarrow with gcc 15 already and there are new deprecated warnings, primarily in thrift_ep:
```
-- stderr output is:
...skipping to end...
sr/local/gcc15/include/c++/15.0.0/bits/stl_iterator_base_types.h:129:34: note: declared here
129 | struct _GLIBCXX17_DEPRECATED iterator
| ^~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp: In constructor 'apache::thrift::transport::SSLContext::SSLContext(const apache::thrift::transport::SSLProtocol&)':
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:185:36: warning: 'const SSL_METHOD* TLSv1_method()' is deprecated: Since OpenSSL 1.1.0 [-Wdeprecated-declarations]
185 | ctx_ = SSL_CTX_new(TLSv1_method());
| ~~~~~~~~~~~~^~
In file included from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:53:
/usr/include/openssl/ssl.h:2020:50: note: declared here
2020 | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
| ^~~~~~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:187:38: warning: 'const SSL_METHOD* TLSv1_1_method()' is deprecated: Since OpenSSL 1.1.0 [-Wdeprecated-declarations]
187 | ctx_ = SSL_CTX_new(TLSv1_1_method());
| ~~~~~~~~~~~~~~^~
/usr/include/openssl/ssl.h:2028:50: note: declared here
2028 | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */
| ^~~~~~~~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:189:38: warning: 'const SSL_METHOD* TLSv1_2_method()' is deprecated: Since OpenSSL 1.1.0 [-Wdeprecated-declarations]
189 | ctx_ = SSL_CTX_new(TLSv1_2_method());
| ~~~~~~~~~~~~~~^~
/usr/include/openssl/ssl.h:2036:50: note: declared here
2036 | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */
| ^~~~~~~~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp: In member function 'virtual void apache::thrift::transport::TSSLSocket::authorize()':
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:758:43: warning: 'unsigned char* ASN1_STRING_data(ASN1_STRING*)' is deprecated: Since OpenSSL 1.1.0 [-Wdeprecated-declarations]
758 | char* data = (char*)ASN1_STRING_data(name->d.ia5);
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
In file included from /usr/include/openssl/objects.h:21,
from /usr/include/openssl/evp.h:43,
from /usr/include/openssl/rand.h:23,
from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:52:
/usr/include/openssl/asn1.h:680:40: note: declared here
680 | OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x);
| ^~~~~~~~~~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp: At global scope:
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:111:13: warning: 'void apache::thrift::transport::dyn_destroy(CRYPTO_dynlock_value*, const char*, int)' defined but not used [-Wunused-function]
111 | static void dyn_destroy(struct CRYPTO_dynlock_value* lock, const char*, int) {
| ^~~~~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:101:13: warning: 'void apache::thrift::transport::dyn_lock(int, CRYPTO_dynlock_value*, const char*, int)' defined but not used [-Wunused-function]
101 | static void dyn_lock(int mode, struct CRYPTO_dynlock_value* lock, const char*, int) {
| ^~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:97:30: warning: 'CRYPTO_dynlock_value* apache::thrift::transport::dyn_create(const char*, int)' defined but not used [-Wunused-function]
97 | static CRYPTO_dynlock_value* dyn_create(const char*, int) {
| ^~~~~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:76:13: warning: 'void apache::thrift::transport::callbackLocking(int, int, const char*, int)' defined but not used [-Wunused-function]
76 | static void callbackLocking(int mode, int n, const char*, int) {
| ^~~~~~~~~~~~~~~
In file included from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerSocket.h:25,
from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLServerSocket.h:23,
from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLServerSocket.cpp:21:
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:47:26: error: 'int64_t' has not been declared
47 | virtual bool timedlock(int64_t milliseconds) const;
| ^~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:25:1: note: 'int64_t' is defined in header ''; this is probably fixable by adding '#include '
24 | #include
+++ |+#include
25 |
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:60:29: error: 'int64_t' has not been declared
60 | Guard(const Mutex& value, int64_t timeout = 0) : mutex_(&value) {
| ^~~~~~~
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:60:29: note: 'int64_t' is defined in header ''; this is probably fixable by adding '#include '
In file included from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TTransport.h:23,
from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerTransport.h:23,
from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerSocket.h:27:
/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/Thrift.h:54:19: warning: 'template struct std::iterator' is deprecated [-Wdeprecated-declarations]
54 | : public std::iterator > {
| ^~~~~~~~
In file included from /usr/local/gcc15/include/c++/15.0.0/bits/stl_algobase.h:65,
from /usr/local/gcc15/include/c++/15.0.0/bits/hashtable_policy.h:36,
from /usr/local/gcc15/include/c++/15.0.0/bits/hashtable.h:37,
from /usr/local/gcc15/include/c++/15.0.0/bits/unordered_map.h:33,
from /usr/local/gcc15/include/c++/15.0.0/unordered_map:43,
from /usr/local/gcc15/include/c++/15.0.0/functional:65,
from /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerSocket.h:23:
/usr/local/gcc15/include/c++/15.0.0/bits/stl_iterator_base_types.h:129:34: note: declared here
129 | struct _GLIBCXX17_DEPRECATED iterator
| ^~~~~~~~
make[7]: *** [lib/cpp/CMakeFiles/thrift.dir/build.make:580: lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o] Error 1
make[6]: *** [CMakeFiles/Makefile2:152: lib/cpp/CMakeFiles/thrift.dir/all] Error 2
make[5]: *** [Makefile:156: all] Error 2
```
I haven't reproduced locally to check what else pops up.

### Component(s)

C++

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.