Issue Details
- Number
- 27343
- Title
- -Wmaybe-uninitialized warnings under LTO
- Description
- Building under GCC `14.0.1` with `-flto` (Fedora Rawhide) currently results in a number of `-Wmaybe-uninitialized` warnings. Some of these are things we might not want to "fix", i.e in test code. Some come from leveldb etc. Open this issue to document them, as some exist with current versions of GCC, and GCC 14.0 will be released soon:
```bash
leveldb/db/memtable.cc: In function 'GetLengthPrefixedSlice':
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
In function 'GetLengthPrefixedSlice',
inlined from 'operator()' at leveldb/db/memtable.cc:32:35,
inlined from 'KeyIsAfterNode' at ./leveldb/db/skiplist.h:257:37,
inlined from 'FindGreaterOrEqual' at ./leveldb/db/skiplist.h:268:23:
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc: In member function 'FindGreaterOrEqual':
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
leveldb/db/memtable.cc: In member function 'Get':
leveldb/db/memtable.cc:119:39: warning: 'key_length' may be used uninitialized [-Wmaybe-uninitialized]
119 | Slice(key_ptr, key_length - 8), key.user_key()) == 0) {
| ^
leveldb/db/memtable.cc:116:14: note: 'key_length' was declared here
116 | uint32_t key_length;
| ^
In member function 'operator=',
inlined from '__ct ' at test/prevector_tests.cpp:215:49,
inlined from 'test_method.isra' at test/prevector_tests.cpp:222:34:
random.cpp:749:19: warning: 'D.58376.bitbuf' is used uninitialized [-Wuninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/prevector_tests.cpp: In function 'test_method.isra':
test/prevector_tests.cpp:215:22: note: '<anonymous>' declared here
215 | rand_cache = FastRandomContext(rand_seed);
| ^
leveldb/db/memtable.cc: In function 'GetLengthPrefixedSlice':
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
leveldb/db/memtable.cc: In function 'GetLengthPrefixedSlice':
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
In function 'GetLengthPrefixedSlice',
inlined from 'operator()' at leveldb/db/memtable.cc:32:35,
inlined from 'KeyIsAfterNode' at ./leveldb/db/skiplist.h:257:37,
inlined from 'FindGreaterOrEqual' at ./leveldb/db/skiplist.h:268:23:
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc: In member function 'FindGreaterOrEqual':
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
In function 'GetLengthPrefixedSlice',
inlined from 'operator()' at leveldb/db/memtable.cc:32:35,
inlined from 'KeyIsAfterNode' at ./leveldb/db/skiplist.h:257:37,
inlined from 'FindGreaterOrEqual' at ./leveldb/db/skiplist.h:268:23:
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc: In member function 'FindGreaterOrEqual':
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
leveldb/db/memtable.cc: In member function 'Get':
leveldb/db/memtable.cc:119:39: warning: 'key_length' may be used uninitialized [-Wmaybe-uninitialized]
119 | Slice(key_ptr, key_length - 8), key.user_key()) == 0) {
| ^
leveldb/db/memtable.cc:116:14: note: 'key_length' was declared here
116 | uint32_t key_length;
| ^
In member function 'operator=',
inlined from 'Seed.constprop' at test/util/random.cpp:32:33:
random.cpp:749:19: warning: 'D.69037.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/util/random.cpp: In function 'Seed.constprop':
test/util/random.cpp:32:33: note: '<anonymous>' declared here
32 | ctx = FastRandomContext(seed);
| ^
leveldb/db/memtable.cc: In member function 'Get':
leveldb/db/memtable.cc:119:39: warning: 'key_length' may be used uninitialized [-Wmaybe-uninitialized]
119 | Slice(key_ptr, key_length - 8), key.user_key()) == 0) {
| ^
leveldb/db/memtable.cc:116:14: note: 'key_length' was declared here
116 | uint32_t key_length;
| ^
In member function 'operator=',
inlined from 'Seed' at test/util/random.cpp:32:33,
inlined from 'SeedInsecureRand' at ./test/util/random.h:41:13,
inlined from '__ct_base ' at test/util/setup_common.cpp:184:21:
random.cpp:749:19: warning: 'D.40691.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/util/random.cpp: In member function '__ct_base ':
test/util/random.cpp:32:33: note: '<anonymous>' declared here
32 | ctx = FastRandomContext(seed);
| ^
leveldb/db/memtable.cc: In function 'GetLengthPrefixedSlice':
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
In function 'GetLengthPrefixedSlice',
inlined from 'operator()' at leveldb/db/memtable.cc:32:35,
inlined from 'KeyIsAfterNode' at ./leveldb/db/skiplist.h:257:37,
inlined from 'FindGreaterOrEqual' at ./leveldb/db/skiplist.h:268:23:
leveldb/db/memtable.cc:18:22: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized]
18 | return Slice(p, len);
| ^
leveldb/db/memtable.cc: In member function 'FindGreaterOrEqual':
leveldb/db/memtable.cc:15:12: note: 'len' was declared here
15 | uint32_t len;
| ^
leveldb/db/memtable.cc: In member function 'Get':
leveldb/db/memtable.cc:119:39: warning: 'key_length' may be used uninitialized [-Wmaybe-uninitialized]
119 | Slice(key_ptr, key_length - 8), key.user_key()) == 0) {
| ^
leveldb/db/memtable.cc:116:14: note: 'key_length' was declared here
116 | uint32_t key_length;
| ^
test/fuzz/float.cpp: In function 'float_fuzz_target':
test/fuzz/float.cpp:49:40: warning: 'tmp' may be used uninitialized [-Wmaybe-uninitialized]
49 | uint64_t encoded = EncodeDouble(d);
| ^
test/fuzz/float.cpp:21:20: note: 'tmp' was declared here
21 | double tmp;
| ^
In member function 'operator=',
inlined from 'operator()' at test/fuzz/addrman.cpp:127:9,
inlined from '__ct ' at test/fuzz/addrman.cpp:127:9,
inlined from 'addrman_serdeser_fuzz_target' at test/fuzz/addrman.cpp:295:69:
random.cpp:749:19: warning: 'D.36455.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/fuzz/addrman.cpp: In function 'addrman_serdeser_fuzz_target':
test/fuzz/addrman.cpp:127:9: note: '<anonymous>' declared here
127 | WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
| ^
In member function 'operator=',
inlined from 'operator()' at test/fuzz/addrman.cpp:127:9,
inlined from '__ct ' at test/fuzz/addrman.cpp:127:9,
inlined from 'addrman_serdeser_fuzz_target' at test/fuzz/addrman.cpp:296:69:
random.cpp:749:19: warning: 'D.36632.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/fuzz/addrman.cpp: In function 'addrman_serdeser_fuzz_target':
test/fuzz/addrman.cpp:127:9: note: '<anonymous>' declared here
127 | WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
| ^
In member function 'operator=',
inlined from 'SeedInsecureRand' at ./test/util/random.h:39:72,
inlined from 'SeedInsecureRand' at ./test/util/random.h:36:20,
inlined from 'test_method' at test/cuckoocache_tests.cpp:40:21,
inlined from 'test_cuckoocache_no_fakes_invoker' at test/cuckoocache_tests.cpp:38:1:
random.cpp:749:19: warning: 'D.46810.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
./test/util/random.h: In function 'test_cuckoocache_no_fakes_invoker':
./test/util/random.h:39:72: note: '<anonymous>' declared here
39 | g_insecure_rand_ctx = FastRandomContext(/*fDeterministic=*/true);
| ^
In member function 'operator=',
inlined from 'SeedInsecureRand' at ./test/util/random.h:39:72,
inlined from 'SeedInsecureRand' at ./test/util/random.h:36:20,
inlined from 'test_cache' at test/cuckoocache_tests.cpp:58:21,
inlined from 'test_method' at test/cuckoocache_tests.cpp:117:84,
inlined from 'cuckoocache_hit_rate_ok_invoker' at test/cuckoocache_tests.cpp:109:1:
random.cpp:749:19: warning: 'D.48398.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
./test/util/random.h: In function 'cuckoocache_hit_rate_ok_invoker':
./test/util/random.h:39:72: note: '<anonymous>' declared here
39 | g_insecure_rand_ctx = FastRandomContext(/*fDeterministic=*/true);
| ^
In member function 'operator=',
inlined from 'SeedInsecureRand' at ./test/util/random.h:39:72,
inlined from 'SeedInsecureRand' at ./test/util/random.h:36:20,
inlined from 'test_cache_erase' at test/cuckoocache_tests.cpp:129:21,
inlined from 'test_method' at test/cuckoocache_tests.cpp:185:72,
inlined from 'cuckoocache_erase_ok_invoker' at test/cuckoocache_tests.cpp:182:1:
random.cpp:749:19: warning: 'D.50490.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
./test/util/random.h: In function 'cuckoocache_erase_ok_invoker':
./test/util/random.h:39:72: note: '<anonymous>' declared here
39 | g_insecure_rand_ctx = FastRandomContext(/*fDeterministic=*/true);
| ^
In function '__fill_a1',
inlined from '__fill_a1' at /usr/include/c++/14/bits/stl_algobase.h:981:21,
inlined from '__fill_a' at /usr/include/c++/14/bits/stl_algobase.h:998:21,
inlined from 'fill' at /usr/include/c++/14/bits/stl_algobase.h:1029:20,
inlined from 'PollutePubKey' at wallet/test/wallet_tests.cpp:503:14:
/usr/include/c++/14/bits/stl_algobase.h:952:18: warning: '__builtin_memset' specified bound 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=]
952 | *__first = __tmp;
| ^
In member function 'operator=',
inlined from 'SeedInsecureRand' at ./test/util/random.h:39:0,
inlined from 'test_method' at test/util_tests.cpp:448:21,
inlined from 'util_seed_insecure_rand_invoker' at test/util_tests.cpp:446:1:
random.cpp:749:19: warning: 'D.49511.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
./test/util/random.h: In function 'util_seed_insecure_rand_invoker':
./test/util/random.h:39: note: '<anonymous>' declared here
39 | g_insecure_rand_ctx = FastRandomContext(/*fDeterministic=*/true);
In member function 'operator=',
inlined from 'operator()' at test/fuzz/addrman.cpp:127:9,
inlined from '__ct ' at test/fuzz/addrman.cpp:127:9,
inlined from 'make_unique' at /usr/include/c++/14/bits/unique_ptr.h:1076:30,
inlined from 'addrman_fuzz_target' at test/fuzz/addrman.cpp:228:97:
random.cpp:749:19: warning: 'D.38104.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/fuzz/addrman.cpp: In function 'addrman_fuzz_target':
test/fuzz/addrman.cpp:127:9: note: '<anonymous>' declared here
127 | WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
| ^
In member function 'operator=',
inlined from 'operator()' at test/fuzz/addrman.cpp:127:9,
inlined from '__ct ' at test/fuzz/addrman.cpp:127:9,
inlined from 'make_unique' at /usr/include/c++/14/bits/unique_ptr.h:1076:30,
inlined from 'addrman_fuzz_target' at test/fuzz/addrman.cpp:235:66:
random.cpp:749:19: warning: 'D.41251.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/fuzz/addrman.cpp: In function 'addrman_fuzz_target':
test/fuzz/addrman.cpp:127:9: note: '<anonymous>' declared here
127 | WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
| ^
In member function 'operator=',
inlined from 'Seed' at test/util/random.cpp:32:33,
inlined from 'SeedInsecureRand' at ./test/util/random.h:41:13,
inlined from '__ct_base ' at test/util/setup_common.cpp:184:21:
random.cpp:749:19: warning: 'D.39055.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/util/random.cpp: In member function '__ct_base ':
test/util/random.cpp:32:33: note: '<anonymous>' declared here
32 | ctx = FastRandomContext(seed);
| ^
In member function 'operator=',
inlined from 'test_method' at test/orphanage_tests.cpp:57:56,
inlined from 'DoS_mapOrphans_invoker' at test/orphanage_tests.cpp:49:1:
random.cpp:749:19: warning: 'D.45887.bitbuf' may be used uninitialized [-Wmaybe-uninitialized]
749 | bitbuf = from.bitbuf;
| ^
test/orphanage_tests.cpp: In function 'DoS_mapOrphans_invoker':
test/orphanage_tests.cpp:57:56: note: '<anonymous>' declared here
57 | g_insecure_rand_ctx = FastRandomContext{uint256{33}};
| ^
In member function '__ct ',
inlined from 'construct_at' at /usr/include/c++/14/bits/stl_construct.h:97:14,
inlined from 'construct' at /usr/include/c++/14/bits/alloc_traits.h:536:21,
inlined from '_M_realloc_append' at /usr/include/c++/14/bits/vector.tcc:634:26,
inlined from 'emplace_back' at /usr/include/c++/14/bits/vector.tcc:123:21,
inlined from 'test_method' at test/logging_tests.cpp:166:45,
inlined from 'logging_LogPrintMacros_CategoryName_invoker' at test/logging_tests.cpp:156:1:
/usr/include/c++/14/bits/stl_pair.h:444:11: warning: 'category' may be used uninitialized [-Wmaybe-uninitialized]
444 | : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y))
| ^
test/logging_tests.cpp: In function 'logging_LogPrintMacros_CategoryName_invoker':
test/logging_tests.cpp:163:25: note: 'category' was declared here
163 | BCLog::LogFlags category;
| ^
```
- URL
-
https://github.com/bitcoin/bitcoin/issue/27343
- Closed by
-
Back to List