tarpc make crash when c++ Destructor execute
work-chausat opened this issue · 0 comments
work-chausat commented
when c++ Destructor execute:
OpKernelRegistry::~OpKernelRegistry()
{
const std::lock_guard<std::mutex> lk(mu_);
for (auto &kernelsOfOp : kernels_) {
ACL_LOG_DEBUG("To unregister kernel of op: %s", kernelsOfOp.first.c_str());
for (auto &it : kernelsOfOp.second) {
ACL_LOG_DEBUG("To unregister bin by handle: %p, kernelId = %s", it.second->binHandle, it.first.c_str());
(void)rtDevBinaryUnRegister(it.second->binHandle);
}
}
}
thread '<unnamed>' panicked at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/local.rs:262:26:
cannot access a Thread Local Storage value during or after destruction: AccessError
stack backtrace:
0: rust_begin_unwind
1: core::panicking::panic_fmt
2: core::result::unwrap_failed
3: thread_local::thread_id::get_slow
4: <tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::current_span
5: <tracing_subscriber::fmt::Subscriber<N,E,F,W> as tracing_core::subscriber::Subscriber>::current_span
6: tracing_core::dispatcher::get_default
7: tracing::span::Span::current
8: tarpc::context::Context::current
9: tarpc::context::current
10: rtDevBinaryUnRegister
11: _ZN2ge12KernelHolderD1Ev
12: _ZNSt8_Rb_treeISsSt4pairIKSsSt10unique_ptrIN2ge12KernelHolderESt14default_deleteIS4_EEESt10_Select1stIS8_ESt4lessISsESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E
13: __run_exit_handlers
at /usr/src/debug/glibc-2.28/stdlib/exit.c:108:8
14: __GI_exit
at /usr/src/debug/glibc-2.28/stdlib/exit.c:139:3
15: __libc_start_main
at /usr/src/debug/glibc-2.28/csu/../csu/libc-start.c:348:3
16: _start
tarpc paniced, other rpc framework has no this problem, how to solve it?