-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Coredump when running global_executor_test #1252
Comments
|
It seems that in IOThreadPool, the thread local variable has been released when accessing it. |
@dangleptr What OS are you running? I run into this similar crash with CentOS74 + devtoolset7. So, I tried the same with a Ubuntu 19.10 Docker and don't see the same crash. |
centos 7.5 + gcc 8.3.0 |
Anecdotally, observing this in |
I have not tried all the versions in between but confirmed the unit test cored with v2019.11.11.00 but does not core in v2019.12.30.00 and latest v2020.01.13.00 |
Woohoo! I can confirm that v2019.12.30.00 also fixes my issue. I too did not try bisecting, but I can say that v2019.12.02.00 still segfaulted for me. |
thread_pool_executor_test SegFault on v2020.4.20 with the similar error.
ThreadPoolExecutorTest.EDFBasic |
…eadPoolExecutor object and the local storage of the threads in this pool will lead to a segv due to a bug in the folly library. Therefore, we keep the FmdConverter object around until the FST daemon is shutdown. Referenced folly bug: facebook/folly#1252 The ASAN trace of such a crash: AddressSanitizer:DEADLYSIGNAL ================================================================= ==8066==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000038 (pc 0x7ff5370a3e11 bp 0x7ff521df0bf0 sp 0x7ff521df0bb0 T60) ==8066==The signal is caused by a READ memory access. ==8066==Hint: address points to the zero page. #0 0x7ff5370a3e10 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::get() const /root/rpmbuild/BUILD/eos-folly /folly-2019.11.11.00/folly/ThreadLocal.h:159 #1 0x7ff53709e9d9 in folly::ThreadLocal<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::get() const /root/rpmbuild/BUILD/eos-folly/fo lly-2019.11.11.00/folly/ThreadLocal.h:68 #2 0x7ff53709e9d9 in folly::ThreadLocal<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::operator*() const /root/rpmbuild/BUILD/eos-fo lly/folly-2019.11.11.00/folly/ThreadLocal.h:77 #3 0x7ff53709c0fe in folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::getWrapper() /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/folly/SingletonThreadL ocal.h:148 #4 0x7ff53709c112 in folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::LocalLifetime::~LocalLifetime() /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/fol ly/SingletonThreadLocal.h:120 #5 0x7ff547b80b18 in run ../../../../libstdc++-v3/libsupc++/atexit_thread.cc:64 #6 0x7ff54803aca1 in __nptl_deallocate_tsd /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:155 #7 0x7ff54803aeb2 in start_thread /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:314 #8 0x7ff54733c8dc in __clone (/lib64/libc.so.6+0xfe8dc) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/folly/ThreadLocal.h:159 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::Reque stContext> >, void>::Wrapper, void, void>::get() const Thread T60 created by T40 here: #0 0x7ff548ea7471 in pthread_create (/usr/lib64/libasan.so.5+0x3a471) #1 0x7ff539339c34 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib64/libEosCommon.so.4+0x8f2c34) #2 0x7ff53e5b1e50 in void AssistedThread::reset<void (eos::fst::ScanDir::*)(ThreadAssistant&) noexcept, eos::fst::ScanDir*>(void (eos::fst::ScanDir::*&&)(ThreadAssistant&) noexcept, eos::fst::ScanDir*&&) (/lib64/libXrdEosFst-4.so+0x41be50) #3 0x7ff53e587b13 in eos::fst::ScanDir::SetConfig(std::string const&, long long) ../fst/ScanDir.cc:136 #4 0x7ff53e72dba2 in eos::fst::FileSystem::ConfigScanner(eos::fst::Load*, std::string const&, long long) ../fst/storage/FileSystem.cc:165 #5 0x7ff53e710721 in eos::fst::Storage::ProcessFsConfigChange(eos::fst::FileSystem*, std::string const&, std::string const&, std::string const&) ../fst/storage/Communicator.cc:321 #6 0x7ff53e711b67 in eos::fst::Storage::ProcessFsConfigChange(std::string const&, std::string const&) ../fst/storage/Communicator.cc:400 #7 0x7ff53e713e13 in eos::fst::Storage::Communicator(ThreadAssistant&) ../fst/storage/Communicator.cc:513 #8 0x7ff53e76f00f in void std::__invoke_impl<void, void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >(std::__invoke_memfun_deref, void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&, std::reference_wrap per<ThreadAssistant>&&) /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/invoke.h:73 #9 0x7ff53e76a4cd in std::__invoke_result<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >::type std::__invoke<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >(void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&, std::reference_wrapper<ThreadAssistant>&&) /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/invoke.h:95 #10 0x7ff53e7786c4 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > >::_M_invoke<0ul, 1ul, 2ul>(std ::_Index_tuple<0ul, 1ul, 2ul>) /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:244 #11 0x7ff53e778663 in std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > >::operator()() /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:253 #12 0x7ff53e778647 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > > >::_M_run() /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:196 #13 0x7ff539339bce in execute_native_thread_routine (/usr/lib64/libEosCommon.so.4+0x8f2bce) Thread T40 created by T0 here: #0 0x7ff548ea7471 in pthread_create (/usr/lib64/libasan.so.5+0x3a471) #1 0x7ff539339c34 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib64/libEosCommon.so.4+0x8f2c34) #2 0x7ff53e766d3c in void AssistedThread::reset<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*>(void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&) ../common/AssistedThread.hh:217 #3 0x7ff53e758042 in eos::fst::Storage::Storage(char const*) ../fst/storage/Storage.cc:184 #4 0x7ff53e7569be in eos::fst::Storage::Create(char const*) ../fst/storage/Storage.cc:56 #5 0x7ff53e5e2f63 in eos::fst::XrdFstOfs::Configure(XrdSysError&, XrdOucEnv*) ../fst/XrdFstOfs.cc:843 #6 0x7ff53e5dc668 in XrdSfsGetFileSystem2 ../fst/XrdFstOfs.cc:128 #7 0x7ff54889633a in XrdXrootdloadFileSystem(XrdSysError*, XrdSfsFileSystem*, char*, int, char const*, XrdOucEnv*) /usr/src/debug/xrootd/xrootd/src/XrdXrootd/XrdXrootdLoadLib.cc:71 ==8066==ABORTING
…eadPoolExecutor object and the local storage of the threads in this pool will lead to a segv due to a bug in the folly library. Therefore, we keep the FmdConverter object around until the FST daemon is shutdown. Referenced folly bug: facebook/folly#1252 The ASAN trace of such a crash: AddressSanitizer:DEADLYSIGNAL ================================================================= ==8066==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000038 (pc 0x7ff5370a3e11 bp 0x7ff521df0bf0 sp 0x7ff521df0bb0 T60) ==8066==The signal is caused by a READ memory access. ==8066==Hint: address points to the zero page. #0 0x7ff5370a3e10 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::get() const /root/rpmbuild/BUILD/eos-folly /folly-2019.11.11.00/folly/ThreadLocal.h:159 #1 0x7ff53709e9d9 in folly::ThreadLocal<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::get() const /root/rpmbuild/BUILD/eos-folly/fo lly-2019.11.11.00/folly/ThreadLocal.h:68 #2 0x7ff53709e9d9 in folly::ThreadLocal<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::operator*() const /root/rpmbuild/BUILD/eos-fo lly/folly-2019.11.11.00/folly/ThreadLocal.h:77 #3 0x7ff53709c0fe in folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::getWrapper() /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/folly/SingletonThreadL ocal.h:148 #4 0x7ff53709c112 in folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::LocalLifetime::~LocalLifetime() /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/fol ly/SingletonThreadLocal.h:120 #5 0x7ff547b80b18 in run ../../../../libstdc++-v3/libsupc++/atexit_thread.cc:64 #6 0x7ff54803aca1 in __nptl_deallocate_tsd /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:155 #7 0x7ff54803aeb2 in start_thread /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:314 #8 0x7ff54733c8dc in __clone (/lib64/libc.so.6+0xfe8dc) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/folly/ThreadLocal.h:159 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::Reque stContext> >, void>::Wrapper, void, void>::get() const Thread T60 created by T40 here: #0 0x7ff548ea7471 in pthread_create (/usr/lib64/libasan.so.5+0x3a471) #1 0x7ff539339c34 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib64/libEosCommon.so.4+0x8f2c34) #2 0x7ff53e5b1e50 in void AssistedThread::reset<void (eos::fst::ScanDir::*)(ThreadAssistant&) noexcept, eos::fst::ScanDir*>(void (eos::fst::ScanDir::*&&)(ThreadAssistant&) noexcept, eos::fst::ScanDir*&&) (/lib64/libXrdEosFst-4.so+0x41be50) #3 0x7ff53e587b13 in eos::fst::ScanDir::SetConfig(std::string const&, long long) ../fst/ScanDir.cc:136 #4 0x7ff53e72dba2 in eos::fst::FileSystem::ConfigScanner(eos::fst::Load*, std::string const&, long long) ../fst/storage/FileSystem.cc:165 #5 0x7ff53e710721 in eos::fst::Storage::ProcessFsConfigChange(eos::fst::FileSystem*, std::string const&, std::string const&, std::string const&) ../fst/storage/Communicator.cc:321 #6 0x7ff53e711b67 in eos::fst::Storage::ProcessFsConfigChange(std::string const&, std::string const&) ../fst/storage/Communicator.cc:400 #7 0x7ff53e713e13 in eos::fst::Storage::Communicator(ThreadAssistant&) ../fst/storage/Communicator.cc:513 #8 0x7ff53e76f00f in void std::__invoke_impl<void, void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >(std::__invoke_memfun_deref, void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&, std::reference_wrap per<ThreadAssistant>&&) /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/invoke.h:73 #9 0x7ff53e76a4cd in std::__invoke_result<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >::type std::__invoke<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >(void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&, std::reference_wrapper<ThreadAssistant>&&) /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/invoke.h:95 #10 0x7ff53e7786c4 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > >::_M_invoke<0ul, 1ul, 2ul>(std ::_Index_tuple<0ul, 1ul, 2ul>) /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:244 #11 0x7ff53e778663 in std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > >::operator()() /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:253 #12 0x7ff53e778647 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > > >::_M_run() /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:196 #13 0x7ff539339bce in execute_native_thread_routine (/usr/lib64/libEosCommon.so.4+0x8f2bce) Thread T40 created by T0 here: #0 0x7ff548ea7471 in pthread_create (/usr/lib64/libasan.so.5+0x3a471) #1 0x7ff539339c34 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib64/libEosCommon.so.4+0x8f2c34) #2 0x7ff53e766d3c in void AssistedThread::reset<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*>(void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&) ../common/AssistedThread.hh:217 #3 0x7ff53e758042 in eos::fst::Storage::Storage(char const*) ../fst/storage/Storage.cc:184 #4 0x7ff53e7569be in eos::fst::Storage::Create(char const*) ../fst/storage/Storage.cc:56 #5 0x7ff53e5e2f63 in eos::fst::XrdFstOfs::Configure(XrdSysError&, XrdOucEnv*) ../fst/XrdFstOfs.cc:843 #6 0x7ff53e5dc668 in XrdSfsGetFileSystem2 ../fst/XrdFstOfs.cc:128 #7 0x7ff54889633a in XrdXrootdloadFileSystem(XrdSysError*, XrdSfsFileSystem*, char*, int, char const*, XrdOucEnv*) /usr/src/debug/xrootd/xrootd/src/XrdXrootd/XrdXrootdLoadLib.cc:71 ==8066==ABORTING
…eadPoolExecutor object and the local storage of the threads in this pool will lead to a segv due to a bug in the folly library. Therefore, we keep the FmdConverter object around until the FST daemon is shutdown. Referenced folly bug: facebook/folly#1252 The ASAN trace of such a crash: AddressSanitizer:DEADLYSIGNAL ================================================================= ==8066==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000038 (pc 0x7ff5370a3e11 bp 0x7ff521df0bf0 sp 0x7ff521df0bb0 T60) ==8066==The signal is caused by a READ memory access. ==8066==Hint: address points to the zero page. #0 0x7ff5370a3e10 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::get() const /root/rpmbuild/BUILD/eos-folly /folly-2019.11.11.00/folly/ThreadLocal.h:159 #1 0x7ff53709e9d9 in folly::ThreadLocal<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::get() const /root/rpmbuild/BUILD/eos-folly/fo lly-2019.11.11.00/folly/ThreadLocal.h:68 #2 0x7ff53709e9d9 in folly::ThreadLocal<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::Wrapper, void, void>::operator*() const /root/rpmbuild/BUILD/eos-fo lly/folly-2019.11.11.00/folly/ThreadLocal.h:77 #3 0x7ff53709c0fe in folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::getWrapper() /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/folly/SingletonThreadL ocal.h:148 #4 0x7ff53709c112 in folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::RequestContext> >, void>::LocalLifetime::~LocalLifetime() /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/fol ly/SingletonThreadLocal.h:120 #5 0x7ff547b80b18 in run ../../../../libstdc++-v3/libsupc++/atexit_thread.cc:64 #6 0x7ff54803aca1 in __nptl_deallocate_tsd /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:155 #7 0x7ff54803aeb2 in start_thread /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:314 #8 0x7ff54733c8dc in __clone (/lib64/libc.so.6+0xfe8dc) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /root/rpmbuild/BUILD/eos-folly/folly-2019.11.11.00/folly/ThreadLocal.h:159 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<std::shared_ptr<folly::RequestContext>, folly::detail::DefaultTag, folly::detail::DefaultMake<std::shared_ptr<folly::Reque stContext> >, void>::Wrapper, void, void>::get() const Thread T60 created by T40 here: #0 0x7ff548ea7471 in pthread_create (/usr/lib64/libasan.so.5+0x3a471) #1 0x7ff539339c34 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib64/libEosCommon.so.4+0x8f2c34) #2 0x7ff53e5b1e50 in void AssistedThread::reset<void (eos::fst::ScanDir::*)(ThreadAssistant&) noexcept, eos::fst::ScanDir*>(void (eos::fst::ScanDir::*&&)(ThreadAssistant&) noexcept, eos::fst::ScanDir*&&) (/lib64/libXrdEosFst-4.so+0x41be50) #3 0x7ff53e587b13 in eos::fst::ScanDir::SetConfig(std::string const&, long long) ../fst/ScanDir.cc:136 #4 0x7ff53e72dba2 in eos::fst::FileSystem::ConfigScanner(eos::fst::Load*, std::string const&, long long) ../fst/storage/FileSystem.cc:165 #5 0x7ff53e710721 in eos::fst::Storage::ProcessFsConfigChange(eos::fst::FileSystem*, std::string const&, std::string const&, std::string const&) ../fst/storage/Communicator.cc:321 #6 0x7ff53e711b67 in eos::fst::Storage::ProcessFsConfigChange(std::string const&, std::string const&) ../fst/storage/Communicator.cc:400 #7 0x7ff53e713e13 in eos::fst::Storage::Communicator(ThreadAssistant&) ../fst/storage/Communicator.cc:513 #8 0x7ff53e76f00f in void std::__invoke_impl<void, void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >(std::__invoke_memfun_deref, void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&, std::reference_wrap per<ThreadAssistant>&&) /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/invoke.h:73 #9 0x7ff53e76a4cd in std::__invoke_result<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >::type std::__invoke<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> >(void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&, std::reference_wrapper<ThreadAssistant>&&) /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/invoke.h:95 #10 0x7ff53e7786c4 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > >::_M_invoke<0ul, 1ul, 2ul>(std ::_Index_tuple<0ul, 1ul, 2ul>) /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:244 #11 0x7ff53e778663 in std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > >::operator()() /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:253 #12 0x7ff53e778647 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*, std::reference_wrapper<ThreadAssistant> > > >::_M_run() /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:196 #13 0x7ff539339bce in execute_native_thread_routine (/usr/lib64/libEosCommon.so.4+0x8f2bce) Thread T40 created by T0 here: #0 0x7ff548ea7471 in pthread_create (/usr/lib64/libasan.so.5+0x3a471) #1 0x7ff539339c34 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib64/libEosCommon.so.4+0x8f2c34) #2 0x7ff53e766d3c in void AssistedThread::reset<void (eos::fst::Storage::*)(ThreadAssistant&), eos::fst::Storage*>(void (eos::fst::Storage::*&&)(ThreadAssistant&), eos::fst::Storage*&&) ../common/AssistedThread.hh:217 #3 0x7ff53e758042 in eos::fst::Storage::Storage(char const*) ../fst/storage/Storage.cc:184 #4 0x7ff53e7569be in eos::fst::Storage::Create(char const*) ../fst/storage/Storage.cc:56 #5 0x7ff53e5e2f63 in eos::fst::XrdFstOfs::Configure(XrdSysError&, XrdOucEnv*) ../fst/XrdFstOfs.cc:843 #6 0x7ff53e5dc668 in XrdSfsGetFileSystem2 ../fst/XrdFstOfs.cc:128 #7 0x7ff54889633a in XrdXrootdloadFileSystem(XrdSysError*, XrdSfsFileSystem*, char*, int, char const*, XrdOucEnv*) /usr/src/debug/xrootd/xrootd/src/XrdXrootd/XrdXrootdLoadLib.cc:71 ==8066==ABORTING
Currently with centos7 we're having faults with thread_local when folly executors are created and destroyed with facebook/folly#1252 & possibly facebook/folly#1135, these issues don't seem to be reproducible in newer gcc's shipped with centos8+. Since in the EOS Code we create the executors and keep them around until shutdown, use a similar pattern instead of creating and destroying multiple folly threadpools Signed-off-by: Abhishek Lekshmanan <[email protected]>
folly-v2023.02.20.00 unit test
|
CentOS 7.4 using glibc2.17,which has no Unfortunately glibc TSD delete callbacks are not invoked in reverse order in which they were added. So this make |
…rash issue with glibc < 2.18. Details see facebook#1252
…rash issue with glibc < 2.18 (#1948) Summary: Invoking thread_local dtor register early to fix folly::ThreadLocal crash issue with glibc < 2.18 Details see #1252 Signed-off-by: lrita [email protected] Pull Request resolved: #1948 Reviewed By: Gownta Differential Revision: D43881397 Pulled By: Orvid fbshipit-source-id: 782a1557241b0ddc0a731b5c02fa0b6b8ddb32ec
…rash issue with glibc < 2.18 Summary: Invoking thread_local dtor register early to fix folly::ThreadLocal crash issue with glibc < 2.18 Details see facebook/folly#1252 Signed-off-by: lrita [email protected] X-link: facebook/folly#1948 Reviewed By: Gownta Differential Revision: D43881397 Pulled By: Orvid fbshipit-source-id: 782a1557241b0ddc0a731b5c02fa0b6b8ddb32ec
Seems this bug still exists. I ran into the same coredump when using the folly-2024.04.01. My environment is AliOS-7 (based on centos I believe) with libc 2.32 :
And the stacktrace is
@lrita do you have any idea how to fix this? Thanks a lot. |
Following the instructions in README.md, I tried to compile and run all the test cases of folly on my dev machine, and it appears that a large amount of testcases failed because of segfault.
And the error msgs are basicly like "signal 11 (SIGSEGV) (0x7fa7220d8e18) received by PID 3988029 (pthread TID 0x I don't know what's wrong and how to fix this... |
I tried to modify the above patch facebook/hhvm@2469b03 to make it turned on for glibc-2.32, and seems many test cases have passed. The failure list shrinks to
|
UPDATE: The latest main branch of folly has enabled the patch for all GLIBC cases, so the problem should be solved. The patch is f141935#diff-be0ee3867901cddc207db866334f0820d4d77e333c583471f55ba517866c84cc |
version: v2019.10.14.00
The text was updated successfully, but these errors were encountered: