-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
Description
I am using C API (libfdb_c.so) in my C++ application:
- I created an Singleton method for the
FDBCppBinding
.
static std::shared_ptr<FDBCppBinding> GetInstance(FDBConfig config) {
static std::shared_ptr<FDBCppBinding> instance(new FDBCppBinding(std::move(config)));
TLOG(INFO, "FDBCppBinding instance returned");
return instance;
}
- Here's how I init the
FDBCppBinding
:
fdb_error_t error = fdb_select_api_version(FDB_API_VERSION);
if (error != 0) {
TLOG(ERROR, "Failed to select FDB API version {}: {}", FDB_API_VERSION, error);
return FDBError::kUnknownError;
}
TLOG(INFO, "Selected FDB API version: {}", FDB_API_VERSION);
setNetworkOptions();
error = fdb_setup_network();
if (error != 0) {
TLOG(ERROR, "FDB Network setup failed: {}", error);
return FDBError::kNetworkError;
}
LOG_INFO("FDB Network setup completed");
startNetworkThread();
- Inside the
startNetworkThread
network_future_ = std::async(std::launch::async, [this]() {
network_running_ = true;
TLOG(INFO, "Starting global FDB network thread");
auto error = fdb_run_network();
network_running_.store(false);
TLOG(INFO, "FDB network thread exited with error: {}", error);
});
The problem is, when I exit the UT of the application, there's an segment error:
Missing separate debuginfos, use: dnf debuginfo-install foundationdb-clients-7.1.38-1.x86_64 glibc-2.38-29.tl4.x86_64 libgcc-12.3.1.5-2.tl4.x86_64 libstdc++-12.3.1.5-2.tl4.x86_64 numactl-devel-2.0.16-5.tl4.x86_64
(gdb) bt
#0 0x00000000047bb6c0 in ?? ()
#1 0x00007ffff69d576d in Transaction::createTrLogInfoProbabilistically(Database const&) () from /lib64/libfdb_c.so
#2 0x00007ffff69fbe86 in Transaction::Transaction(Database const&, Optional<Standalone<StringRef> > const&) ()
from /lib64/libfdb_c.so
#3 0x00007ffff6d8772c in ReadYourWritesTransaction::ReadYourWritesTransaction(Database const&, Optional<Standalone<StringRef> >) () from /lib64/libfdb_c.so
#4 0x00007ffff6fcdd78 in internal_thread_helper::DoOnMainThreadVoidActorState<ThreadSafeTransaction::ThreadSafeTransaction(DatabaseContext*, ISingleThreadTransaction::Type, Optional<Standalone<StringRef> >)::{lambda()#1}, internal_thread_helper::DoOnMainThreadVoidActor<ThreadSafeTransaction::ThreadSafeTransaction(DatabaseContext*, ISingleThreadTransaction::Type, Optional<Standalone<StringRef> >)::{lambda()#1}> >::a_body1cont1(Void const&, int) [clone .constprop.0] [clone .isra.0] () from /lib64/libfdb_c.so
#5 0x00007ffff6fcde68 in ActorCallback<internal_thread_helper::DoOnMainThreadVoidActor<ThreadSafeTransaction::ThreadSafeTransaction(DatabaseContext*, ISingleThreadTransaction::Type, Optional<Standalone<StringRef> >)::{lambda()#1}>, 0, Void>::fire(Void const&) () from /lib64/libfdb_c.so
#6 0x00007ffff715c3f8 in N2::Net2::run() () from /lib64/libfdb_c.so
#7 0x00007ffff69a12c2 in runNetwork() () from /lib64/libfdb_c.so
#8 0x00007ffff6fce1bf in ThreadSafeApi::runNetwork() () from /lib64/libfdb_c.so
#9 0x00007ffff6948f91 in MultiVersionApi::runNetwork() () from /lib64/libfdb_c.so
#10 0x00007ffff691e9fa in fdb_run_network () from /lib64/libfdb_c.so
#11 0x0000000001fccef0 in operator() (__closure=0x47a4a68)
at /data00/kuankuan/tcqa-table/src/ms/fdb/fdb_cpp_binding.cc:569
#12 std::__invoke_impl<void, tcqa::table::fdb::FDBCppBinding::startNetworkThread()::<lambda()> > (__f=...)
at /usr/include/c++/12/bits/invoke.h:61
#13 std::__invoke<tcqa::table::fdb::FDBCppBinding::startNetworkThread()::<lambda()> > (__fn=...)
FDB version: 7.1.38 (And I've tried 7.3.59)
Metadata
Metadata
Assignees
Labels
No labels