ITADN

Failed to execute make shared_lib on main

#14762Openrichardwesthaver 创建于 2026-05-20
same behavior as https://github.com/facebook/rocksdb/issues/10940 gcc 16.1.1 on Arch Linux 7.0.3-arch1-2 built from source with `make shared_lib DISABLE_JEMALLOC=1`: ``` $DEBUG_LEVEL is 0, $LIB_MODE is shared CC db/blob/blob_file_reader.o In file included from ./env/file_system_tracer.h:8, from ./file/random_access_file_reader.h:15, from ./db/blob/blob_file_reader.h:12, from db/blob/blob_file_reader.cc:6: In constructor ‘rocksdb::FSReadRequest::FSReadRequest(rocksdb::FSReadRequest&&)’, inlined from ‘constexpr _Tp* std::construct_at(_Tp*, _Args&& ...) [with _Tp = rocksdb::FSReadRequest; _Args = {rocksdb::FSReadRequest}]’ at /usr/include/c++/16.1.1/bits/stl_construct.h:110:9, inlined from ‘static constexpr void std::allocator_traits<std::allocator<_Up> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = rocksdb::FSReadRequest; _Args = {rocksdb::FSReadRequest}; _Tp = rocksdb::FSReadRequest]’ at /usr/include/c++/16.1.1/bits/alloc_traits.h:716:21, inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {rocksdb::FSReadRequest}; _Tp = rocksdb::FSReadRequest; _Alloc = std::allocator<rocksdb::FSReadRequest>]’ at /usr/include/c++/16.1.1/bits/vector.tcc:121:30, inlined from ‘void rocksdb::BlobFileReader::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MemoryAllocator*, rocksdb::autovector<std::pair<rocksdb::BlobReadRequest*, std::unique_ptr<rocksdb::BlobContents> > >&, uint64_t*) const’ at db/blob/blob_file_reader.cc:467:27: ./include/rocksdb/file_system.h:872:8: error: ‘read_req.rocksdb::FSReadRequest::scratch’ may be used uninitialized [-Werror=maybe-uninitialized] 872 | struct FSReadRequest { | ^~~~~~~~~~~~~ db/blob/blob_file_reader.cc: In member function ‘void rocksdb::BlobFileReader::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MemoryAllocator*, rocksdb::autovector<std::pair<rocksdb::BlobReadRequest*, std::unique_ptr<rocksdb::BlobContents> > >&, uint64_t*) const’: db/blob/blob_file_reader.cc:463:19: note: ‘read_req’ declared here 463 | FSReadRequest read_req; | ^~~~~~~~ In constructor ‘rocksdb::FSReadRequest::FSReadRequest(rocksdb::FSReadRequest&&)’, inlined from ‘constexpr _Tp* std::construct_at(_Tp*, _Args&& ...) [with _Tp = rocksdb::FSReadRequest; _Args = {rocksdb::FSReadRequest}]’ at /usr/include/c++/16.1.1/bits/stl_construct.h:110:9, inlined from ‘static constexpr void std::allocator_traits<std::allocator<_Up> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = rocksdb::FSReadRequest; _Args = {rocksdb::FSReadRequest}; _Tp = rocksdb::FSReadRequest]’ at /usr/include/c++/16.1.1/bits/alloc_traits.h:716:21, inlined from ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {rocksdb::FSReadRequest}; _Tp = rocksdb::FSReadRequest; _Alloc = std::allocator<rocksdb::FSReadRequest>]’ at /usr/include/c++/16.1.1/bits/vector.tcc:594:26, inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {rocksdb::FSReadRequest}; _Tp = rocksdb::FSReadRequest; _Alloc = std::allocator<rocksdb::FSReadRequest>]’ at /usr/include/c++/16.1.1/bits/vector.tcc:127:21, inlined from ‘void rocksdb::BlobFileReader::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MemoryAllocator*, rocksdb::autovector<std::pair<rocksdb::BlobReadRequest*, std::unique_ptr<rocksdb::BlobContents> > >&, uint64_t*) const’ at db/blob/blob_file_reader.cc:467:27: ./include/rocksdb/file_system.h:872:8: error: ‘read_req.rocksdb::FSReadRequest::scratch’ may be used uninitialized [-Werror=maybe-uninitialized] 872 | struct FSReadRequest { | ^~~~~~~~~~~~~ db/blob/blob_file_reader.cc: In member function ‘void rocksdb::BlobFileReader::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MemoryAllocator*, rocksdb::autovector<std::pair<rocksdb::BlobReadRequest*, std::unique_ptr<rocksdb::BlobContents> > >&, uint64_t*) const’: db/blob/blob_file_reader.cc:463:19: note: ‘read_req’ declared here 463 | FSReadRequest read_req; | ^~~~~~~~ cc1plus: all warnings being treated as errors make: *** [Makefile:2662: db/blob/blob_file_reader.o] Error 1 ``` patching the `FSReadRequest` struct (`char* scratch = nullptr;` on L887) returns a new error on build: ``` $DEBUG_LEVEL is 0, $LIB_MODE is shared CC cache/compressed_secondary_cache.o CC db/arena_wrapped_db_iter.o CC db/blob/blob_fetcher.o CC db/blob/blob_file_builder.o CC db/blob/blob_file_cache.o CC db/blob/blob_file_partition_manager.o CC db/blob/blob_file_reader.o CC db/blob/blob_garbage_meter.o CC db/blob/blob_log_format.o CC db/blob/blob_log_sequential_reader.o CC db/blob/blob_log_writer.o CC db/blob/blob_source.o CC db/blob/blob_write_batch_transformer.o CC db/blob/prefetch_buffer_collection.o CC db/builder.o CC db/c.o CC db/coalescing_iterator.o CC db/column_family.o CC db/compaction/compaction.o CC db/compaction/compaction_iterator.o CC db/compaction/compaction_job.o CC db/compaction/compaction_picker.o CC db/compaction/compaction_picker_fifo.o CC db/compaction/compaction_picker_level.o In member function ‘void rocksdb::{anonymous}::LevelCompactionBuilder::SetupInitialFiles()’, inlined from ‘rocksdb::Compaction* rocksdb::{anonymous}::LevelCompactionBuilder::PickCompaction()’ at db/compaction/compaction_picker_level.cc:534:20, inlined from ‘virtual rocksdb::Compaction* rocksdb::LevelCompactionPicker::PickCompaction(const std::string&, const rocksdb::MutableCFOptions&, const rocksdb::MutableDBOptions&, const std::vector<long unsigned int>&, const rocksdb::SnapshotChecker*, rocksdb::VersionStorageInfo*, rocksdb::LogBuffer*, const std::string&, bool)’ at db/compaction/compaction_picker_level.cc:1007:32: db/compaction/compaction_picker_level.cc:292:42: error: ‘*(std::value_type*)((char*)&expired_files + offsetof(rocksdb::autovector<std::pair<int, rocksdb::FileMetaData*>, 8>,rocksdb::autovector<std::pair<int, rocksdb::FileMetaData*>, 8>::buf_[0])).std::pair<int, rocksdb::FileMetaData*>::first’ may be used uninitialized [-Werror=maybe-uninitialized] 292 | start_level_ = expired_files.front().first; | ~~~~~~~~~~~~~~~~~~~~~~^~~~~ db/compaction/compaction_picker_level.cc: In member function ‘virtual rocksdb::Compaction* rocksdb::LevelCompactionPicker::PickCompaction(const std::string&, const rocksdb::MutableCFOptions&, const rocksdb::MutableDBOptions&, const std::vector<long unsigned int>&, const rocksdb::SnapshotChecker*, rocksdb::VersionStorageInfo*, rocksdb::LogBuffer*, const std::string&, bool)’: db/compaction/compaction_picker_level.cc:290:10: note: ‘expired_files’ declared here 290 | auto expired_files = vstorage_->ExpiredTtlFiles(); | ^~~~~~~~~~~~~ cc1plus: all warnings being treated as errors make: *** [Makefile:2662: db/compaction/compaction_picker_level.o] Error 1 ``` I'll see if I can reproduce with clang
0 条评论