PragmaTwice commented on PR #3201:
URL: https://github.com/apache/kvrocks/pull/3201#issuecomment-3342833450
```
WARNING: ThreadSanitizer: data race (pid=109110)
Write of size 8 at 0x7b080001a9c0 by main thread (mutexes: write M0):
#0 operator delete(void*) <null> (kvrocks+0x4f32fe) (BuildId:
706833242cde249f)
#1 rocksdb::ColumnFamilyHandleImpl::~ColumnFamilyHandleImpl()
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/column_family.cc:54:51
(kvrocks+0x663671) (BuildId: 706833242cde249f)
#2 rocksdb::DB::DestroyColumnFamilyHandle(rocksdb::ColumnFamilyHandle*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl.cc:5230:3
(kvrocks+0x755f1d) (BuildId: 706833242cde249f)
#3 engine::Storage::CloseDB()
/home/runner/work/kvrocks/kvrocks/src/storage/storage.cc:106:40
(kvrocks+0x16693ee) (BuildId: 706833242cde249f)
#4 engine::Storage::~Storage()
/home/runner/work/kvrocks/kvrocks/src/storage/storage.cc:90:3
(kvrocks+0x1668e2e) (BuildId: 706833242cde249f)
#5 main /home/runner/work/kvrocks/kvrocks/src/cli/main.cc:215:1
(kvrocks+0x4f680a) (BuildId: 706833242cde249f)
Previous read of size 8 at 0x7b080001a9c0 by thread T1:
#0 rocksdb::DBImpl::FailIfCfHasTs(rocksdb::ColumnFamilyHandle const*)
const
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl.h:3266:49
(kvrocks+0x76ed01) (BuildId: 706833242cde249f)
#1 rocksdb::DBImpl::GetImpl(rocksdb::ReadOptions const&, rocksdb::Slice
const&, rocksdb::DBImpl::GetImplOptions&)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl.cc:2342:22
(kvrocks+0x73e5bc) (BuildId: 706833242cde249f)
#2 rocksdb::DBImpl::GetImpl(rocksdb::ReadOptions const&,
rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&, rocksdb::PinnableSlice*,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl.cc:2198:14
(kvrocks+0x739e4c) (BuildId: 706833242cde249f)
#3 rocksdb::DBImpl::Get(rocksdb::ReadOptions const&,
rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&, rocksdb::PinnableSlice*,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl.cc:2186:14
(kvrocks+0x739e4c)
#4 rocksdb::DB::Get(rocksdb::ReadOptions const&,
rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&, rocksdb::PinnableSlice*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/include/rocksdb/db.h:691:12
(kvrocks+0x16025e9) (BuildId: 706833242cde249f)
#5 rocksdb::DB::Get(rocksdb::ReadOptions const&,
rocksdb::ColumnFamilyHandle*, rocksdb::Slice const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/include/rocksdb/db.h:702:14
(kvrocks+0x16025e9)
#6 engine::SubKeyFilter::GetMetadata(InternalKey const&, Metadata*)
const /home/runner/work/kvrocks/kvrocks/src/storage/compact_filter.cc:62:13
(kvrocks+0x16018c2) (BuildId: 706833242cde249f)
#7 engine::SubKeyFilter::Filter(int, rocksdb::Slice const&,
rocksdb::Slice const&, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const
/home/runner/work/kvrocks/kvrocks/src/storage/compact_filter.cc:126:14
(kvrocks+0x1602cf6) (BuildId: 706833242cde249f)
#8 rocksdb::CompactionFilter::FilterV2(int, rocksdb::Slice const&,
rocksdb::CompactionFilter::ValueType, rocksdb::Slice const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>*, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*) const
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/include/rocksdb/compaction_filter.h:240:19
(kvrocks+0x16049e3) (BuildId: 706833242cde249f)
#9 rocksdb::CompactionFilter::FilterV3(int, rocksdb::Slice const&,
rocksdb::CompactionFilter::ValueType, rocksdb::Slice const*,
std::vector<rocksdb::WideColumn, std::allocator<rocksdb::WideColumn> > const*,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>*, std::vector<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
>, std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
> > >*, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*) const
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/include/rocksdb/compaction_filter.h:299:12
(kvrocks+0x1604ab2) (BuildId: 706833242cde249f)
#10 rocksdb::CompactionIterator::InvokeFilterIfNeeded(bool*,
rocksdb::Slice*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/compaction/compaction_iterator.cc:335:38
(kvrocks+0x6bdacb) (BuildId: 706833242cde249f)
#11 rocksdb::CompactionIterator::NextFromInput()
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/compaction/compaction_iterator.cc:565:12
(kvrocks+0x6ba716) (BuildId: 706833242cde249f)
#12 rocksdb::CompactionIterator::Next()
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/compaction/compaction_iterator.cc:209:5
(kvrocks+0x6bd22b) (BuildId: 706833242cde249f)
#13
rocksdb::CompactionJob::ProcessKeyValueCompaction(rocksdb::SubcompactionState*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/compaction/compaction_job.cc:1463:13
(kvrocks+0x6251fc) (BuildId: 706833242cde249f)
#14 rocksdb::CompactionJob::Run()
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/compaction/compaction_job.cc:693:3
(kvrocks+0x61f429) (BuildId: 706833242cde249f)
#15 rocksdb::DBImpl::BackgroundCompaction(bool*, rocksdb::JobContext*,
rocksdb::LogBuffer*, rocksdb::DBImpl::PrepickedCompaction*,
rocksdb::Env::Priority)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_compaction_flush.cc:4240:20
(kvrocks+0x7e6678) (BuildId: 706833242cde249f)
#16
rocksdb::DBImpl::BackgroundCallCompaction(rocksdb::DBImpl::PrepickedCompaction*,
rocksdb::Env::Priority)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_compaction_flush.cc:3426:16
(kvrocks+0x7e2157) (BuildId: 706833242cde249f)
#17 rocksdb::DBImpl::BGWorkCompaction(void*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_compaction_flush.cc:3095:42
(kvrocks+0x7dd7ac) (BuildId: 706833242cde249f)
#18 void std::__invoke_impl<void, void (*&)(void*),
void*&>(std::__invoke_other, void (*&)(void*), void*&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
(kvrocks+0xe00e1e) (BuildId: 706833242cde249f)
#19 std::__invoke_result<void (*&)(void*), void*&>::type
std::__invoke<void (*&)(void*), void*&>(void (*&)(void*), void*&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14
(kvrocks+0xe00e1e)
#20 void std::_Bind<void (* (void*))(void*)>::__call<void,
0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/functional:495:11
(kvrocks+0xe00e1e)
#21 void std::_Bind<void (* (void*))(void*)>::operator()<void>()
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/functional:580:17
(kvrocks+0xe00e1e)
#22 void std::__invoke_impl<void, std::_Bind<void (*
(void*))(void*)>&>(std::__invoke_other, std::_Bind<void (* (void*))(void*)>&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
(kvrocks+0xe00e1e)
#23 std::enable_if<is_invocable_r_v<void, std::_Bind<void (*
(void*))(void*)>&>, void>::type std::__invoke_r<void, std::_Bind<void (*
(void*))(void*)>&>(std::_Bind<void (* (void*))(void*)>&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
(kvrocks+0xe00e1e)
#24 std::_Function_handler<void (), std::_Bind<void (* (void*))(void*)>
>::_M_invoke(std::_Any_data const&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
(kvrocks+0xe00e1e)
#25 std::function<void ()>::operator()() const
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9
(kvrocks+0xdf974a) (BuildId: 706833242cde249f)
#26 rocksdb::ThreadPoolImpl::Impl::BGThread(unsigned long)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/util/threadpool_imp.cc:311:5
(kvrocks+0xdf974a)
#27 rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/util/threadpool_imp.cc:352:7
(kvrocks+0xdf994b) (BuildId: 706833242cde249f)
#28 void std::__invoke_impl<void, void (*)(void*),
rocksdb::BGThreadMetadata*>(std::__invoke_other, void (*&&)(void*),
rocksdb::BGThreadMetadata*&&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
(kvrocks+0xdfd8f5) (BuildId: 706833242cde249f)
#29 std::__invoke_result<void (*)(void*),
rocksdb::BGThreadMetadata*>::type std::__invoke<void (*)(void*),
rocksdb::BGThreadMetadata*>(void (*&&)(void*), rocksdb::BGThreadMetadata*&&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14
(kvrocks+0xdfd8f5)
#30 void std::thread::_Invoker<std::tuple<void (*)(void*),
rocksdb::BGThreadMetadata*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:279:13
(kvrocks+0xdfd8f5)
#31 std::thread::_Invoker<std::tuple<void (*)(void*),
rocksdb::BGThreadMetadata*> >::operator()()
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:286:11
(kvrocks+0xdfd8f5)
#32 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void
(*)(void*), rocksdb::BGThreadMetadata*> > >::_M_run()
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:231:13
(kvrocks+0xdfd8f5)
#33 execute_native_thread_routine fpconv.c (kvrocks+0x10fc0f2) (BuildId:
706833242cde249f)
Mutex M0 (0x7ffc66f9a970) created at:
#0 pthread_rwlock_wrlock <null> (kvrocks+0x47569a) (BuildId:
706833242cde249f)
#1 std::__glibcxx_rwlock_wrlock(pthread_rwlock_t*)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/shared_mutex:80:3
(kvrocks+0x166a9a7) (BuildId: 706833242cde249f)
#2 std::__shared_mutex_pthread::lock()
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/shared_mutex:193:19
(kvrocks+0x166a9a7)
#3 std::shared_mutex::lock()
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/shared_mutex:420:27
(kvrocks+0x166a9a7)
#4 std::unique_lock<std::shared_mutex>::lock()
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_lock.h:139:17
(kvrocks+0x166a9a7)
#5 std::unique_lock<std::shared_mutex>::unique_lock(std::shared_mutex&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_lock.h:69:2
(kvrocks+0x166a9a7)
#6 engine::Storage::WriteLockGuard()
/home/runner/work/kvrocks/kvrocks/src/storage/storage.cc:1108:72
(kvrocks+0x166a9a7)
#7 engine::Storage::Open(DBOpenMode)
/home/runner/work/kvrocks/kvrocks/src/storage/storage.cc:284:16
(kvrocks+0x166a9a7)
#8 main /home/runner/work/kvrocks/kvrocks/src/cli/main.cc:200:15
(kvrocks+0x4f61e6) (BuildId: 706833242cde249f)
Thread T1 'rocksdb:low' (tid=109112, running) created by main thread at:
#0 pthread_create <null> (kvrocks+0x472cad) (BuildId: 706833242cde249f)
#1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) <null>
(kvrocks+0x10fc1c8) (BuildId: 706833242cde249f)
#2 rocksdb::ThreadPoolImpl::Impl::SetBackgroundThreadsInternal(int,
bool)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/util/threadpool_imp.cc:369:5
(kvrocks+0xdf99f8) (BuildId: 706833242cde249f)
#3 rocksdb::ThreadPoolImpl::IncBackgroundThreadsIfNeeded(int)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/util/threadpool_imp.cc:494:10
(kvrocks+0xdfae2c) (BuildId: 706833242cde249f)
#4 rocksdb::(anonymous
namespace)::PosixEnv::IncBackgroundThreadsIfNeeded(int, rocksdb::Env::Priority)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/env/env_posix.cc:377:24
(kvrocks+0xe984ed) (BuildId: 706833242cde249f)
#5 rocksdb::SanitizeOptions(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, rocksdb::DBOptions
const&, bool, rocksdb::Status*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_open.cc:80:15
(kvrocks+0x80e302) (BuildId: 706833242cde249f)
#6 rocksdb::DBImpl::DBImpl(rocksdb::DBOptions const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, bool, bool, bool)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl.cc:173:27
(kvrocks+0x72582b) (BuildId: 706833242cde249f)
#7 std::__detail::_MakeUniq<rocksdb::DBImpl>::__single_object
std::make_unique<rocksdb::DBImpl, rocksdb::DBOptions const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, bool const&, bool const&>(rocksdb::DBOptions const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, bool const&, bool const&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:1065:34
(kvrocks+0x824094) (BuildId: 706833242cde249f)
#8 rocksdb::DBImpl::Open(rocksdb::DBOptions const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, std::vector<rocksdb::ColumnFamilyDescriptor,
std::allocator<rocksdb::ColumnFamilyDescriptor> > const&,
std::vector<rocksdb::ColumnFamilyHandle*,
std::allocator<rocksdb::ColumnFamilyHandle*> >*, std::unique_ptr<rocksdb::DB,
std::default_delete<rocksdb::DB> >*, bool, bool, bool, bool*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_open.cc:2411:15
(kvrocks+0x824094)
#9 rocksdb::DB::Open(rocksdb::DBOptions const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, std::vector<rocksdb::ColumnFamilyDescriptor,
std::allocator<rocksdb::ColumnFamilyDescriptor> > const&,
std::vector<rocksdb::ColumnFamilyHandle*,
std::allocator<rocksdb::ColumnFamilyHandle*> >*, std::unique_ptr<rocksdb::DB,
std::default_delete<rocksdb::DB> >*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_open.cc:2240:9
(kvrocks+0x823a61) (BuildId: 706833242cde249f)
#10 rocksdb::DB::Open(rocksdb::Options const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, std::unique_ptr<rocksdb::DB, std::default_delete<rocksdb::DB> >*)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/db/db_impl/db_impl_open.cc:2212:14
(kvrocks+0x8237fc) (BuildId: 706833242cde249f)
#11 rocksdb::DB::Open(rocksdb::Options const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, rocksdb::DB**)
/home/runner/work/kvrocks/kvrocks/build/_deps/rocksdb-src/include/rocksdb/db.h:152:16
(kvrocks+0x166c058) (BuildId: 706833242cde249f)
#12 StatusOr<std::unique_ptr<rocksdb::DB,
std::default_delete<rocksdb::DB> > >
util::details::WrapOutPtrToUnique<rocksdb::DB,
&(rocksdb::DB::Open(rocksdb::Options const&, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, rocksdb::DB**)),
(Status::Code)5, rocksdb::Options const&, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&>(rocksdb::Options const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&) /home/runner/work/kvrocks/kvrocks/src/common/db_util.h:50:12
(kvrocks+0x166c058)
#13 util::DBOpen(rocksdb::Options const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&) /home/runner/work/kvrocks/kvrocks/src/common/db_util.h:76:10
(kvrocks+0x166c058)
#14 engine::Storage::CreateColumnFamilies(rocksdb::Options const&)
/home/runner/work/kvrocks/kvrocks/src/storage/storage.cc:252:14
(kvrocks+0x166c058)
#15 engine::Storage::Open(DBOpenMode)
/home/runner/work/kvrocks/kvrocks/src/storage/storage.cc:297:18
(kvrocks+0x166c058)
#16 main /home/runner/work/kvrocks/kvrocks/src/cli/main.cc:200:15
(kvrocks+0x4f61e6) (BuildId: 706833242cde249f)
#17 main /home/runner/work/kvrocks/kvrocks/src/cli/main.cc:200:15
(kvrocks+0x4f61e6) (BuildId: 706833242cde249f)
#18 main /home/runner/work/kvrocks/kvrocks/src/cli/main.cc:200:15
(kvrocks+0x4f61e6) (BuildId: 706833242cde249f)
SUMMARY: ThreadSanitizer: data race
(/home/runner/work/kvrocks/kvrocks/build/kvrocks+0x4f32fe) (BuildId:
706833242cde249f) in operator delete(void*)
```
For record. I'll rerun.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]