single_process_external_client_fdbcli_tests fails with UBSAN due to ICodeProbe registration issue
envgap__apple__foundationdb-7957
01 / FAILURE SIGNATURE
As reported upstream
18: /mnt/ephemeral/mdvorsky/foundationdb/flow/CodeProbe.cpp:107:23: runtime error: member call on address 0x7f9cae7f28e8 which does not point to an object of type 'probe::ICodeProbe'
Not a benchmark task.
- In a clean container the reported failure did not reproduce, or the known fix did not make the project run.
02 / ENVIRONMENT RECIPE
- Base commit
b361bd8e7a9a82a16ec656d84616c91705697748- Manifest
fdbcli/CMakeLists.txt- Reproduce
Awaiting issue-specific recipe- Run under trace
Awaiting a meaningful runtime command
03 / ORIGINAL ISSUE TEXT
apple/foundationdb #7957 · read the original issue
Running `single_process_external_client_fdbcli_tests` compiled with USE_UBSAN=ON produces the following warning:
```
Start 18: single_process_external_client_fdbcli_tests
18: Test command: /opt/rh/rh-python38/root/usr/bin/python3.8 "/mnt/ephemeral/mdvorsky/foundationdb/tests/TestRunner/tmp_cluster.py" "--build-dir" "/mnt/ephemeral/mdvorsky/build/foundationdb.linux.clang.ubsan.x86_64" "--" "/mnt/ephemeral/mdvorsky/foundationdb/bindings/python/tests/fdbcli_tests.py" "/mnt/ephemeral/mdvorsky/build/foundationdb.linux.clang.ubsan.x86_64" "@CLUSTER_FILE@" "--external-client-library" "/mnt/ephemeral/mdvorsky/build/foundationdb.linux.clang.ubsan.x86_64/bindings/c/libfdb_c_external.so"
18: Environment variables:
18: UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1
18: TSAN_OPTIONS=suppressions=/mnt/ephemeral/mdvorsky/foundationdb/contrib/tsan.suppressions
18: Test timeout computed to be: 300
18: Database created
18: /mnt/ephemeral/mdvorsky/foundationdb/flow/CodeProbe.cpp:107:23: runtime error: member call on address 0x7f9cae7f28e8 which does not point to an object of type 'probe::ICodeProbe'
18: 0x7f9cae7f28e8: note: object is of type 'probe::CodeProbeImpl<FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::FileType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CondType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CommentType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CompilationUnitType1428, 1428u, probe::CodeProbeAnnotations<> >'
18: 00 00 00 00 30 b0 c8 ad 9c 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
18: ^~~~~~~~~~~~~~~~~~~~~~~
18: vptr for 'probe::CodeProbeImpl<FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::FileType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CondType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CommentType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CompilationUnitType1428, 1428u, probe::CodeProbeAnnotations<> >'
18: #0 0x7f9cad821c5f in probe::(anonymous namespace)::CodeProbes::add(probe::ICodeProbe const*) /mnt/ephemeral/mdvorsky/foundationdb/flow/CodeProbe.cpp:107:23
18: #1 0x7f9cad821c5f in probe::registerProbe(probe::ICodeProbe const&) /mnt/ephemeral/mdvorsky/foundationdb/flow/CodeProbe.cpp:251:25
18: #2 0x7f9cac3b65a9 in probe::CodeProbeImpl<FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::FileType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CondType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CommentType1428, FlowLock::TakeActorActorState<FlowLock::TakeActorActor>::a_body1cont1Catch1(Error const&, int)::CompilationUnitType1428, 1428u, probe::CodeProbeAnnotations<> >::CodeProbeImpl() /mnt/ephemeral/mdvorsky/foundationdb/flow/include/flow/CodeProbe.h:248:20
18: #3 0x7f9cac3b65a9 in __cxx_global_var_init.71 /mnt/ephemeral/mdvorsky/foundationdb/flow/include/flow/CodeProbe.h:249:30
18: #4 0x7f9cafa339c2 in _dl_init (/lib64/ld-linux-x86-64.so.2+0xf9c2)
18: #5 0x7f9cafa3859d in dl_open_worker dl-open.c
18: #6 0x7f9cafa337d3 in _dl_catch_error (/lib64/ld-linux-x86-64.so.2+0xf7d3)
18: #7 0x7f9cafa37b8a in _dl_open (/lib64/ld-linux-x86-64.so.2+0x13b8a)
18: #8 0x7f9caf402faa in dlopen_doit dlopen.c
18: #9 0x7f9cafa337d3 in _dl_catch_error (/lib64/ld-linux-x86-64.so.2+0xf7d3)
18: #10 0x7f9caf4035ac in _dlerror_run (/lib64/libdl.so.2+0x15ac)
18: #11 0x7f9caf403040 in dlopen@@GLIBC_2.2.5 (/lib64/libdl.so.2+0x1040)
18: #12 0x2513251 in loadLibrary(char const*) /mnt/ephemeral/mdvorsky/foundationdb/flow/Platform.actor.cpp:3467:10
18: #13 0x153f0ed in DLApi::init() /mnt/ephemeral/mdvorsky/foundationdb/fdbclient/MultiVersionTransaction.actor.cpp:680:14
18: #14 0x15471a3 in DLApi::selectApiVersion(int) /mnt/ephemeral/mdvorsky/foundationdb/fdbclient/MultiVersionTransaction.actor.cpp:854:2
18: #15 0x15a0095 in MultiVersionApi::setupNetwork()::$_47::operator()(Reference<ClientInfo>) const /mnt/ephemeral/mdvorsky/foundationdb/fdbclient/MultiVersionTransaction.actor.cpp:2418:17
18: #16 0x15a0095 in decltype(static_cast<MultiVersionApi::setupNetwork()::$_47&>(fp)(static_cast<Reference<ClientInfo>>(fp0))) std::__1::__invoke<MultiVersionApi::setupNetwork()::$_47&, Reference<ClientInfo> >(MultiVersionApi::setupNetwork()::$_47&, Reference<ClientInfo>&&) /usr/local/bin/../include/c++/v1/type_traits:3918:1
18: #17 0x15a0095 in void std::__1::__invoke_void_return_wrapper<void, true>::__call<MultiVersionApi::setupNetwork()::$_47&, Reference<ClientInfo> >(MultiVersionApi::setupNetwork()::$_47&, Reference<ClientInfo>&&) /usr/local/bin/../include/c++/v1/__functional/invoke.h:61:9
18: #18 0x15a0095 in std::__1::__function::__alloc_func<MultiVersionApi::setupNetwork()::$_47, std::__1::allocator<MultiVersionApi::setupNetwork()::$_47>, void (Reference<ClientInfo>)>::operator()(Reference<ClientInfo>&&) /usr/local/bin/../include/c++/v1/__functional/function.h:171:16
18: #19 0x15a0095 in std::__1::__function::__func<MultiVersionApi::setupNetwork()::$_47, std::__1::allocator<MultiVersionApi::setupNetwork()::$_47>, void (Reference<ClientInfo>)>::operator()(Reference<ClientInfo>&&) /usr/local/bin/../include/c++/v1/__functional/function.h:345:12
18: #20 0x1552b92 in std::__1::function<void (Reference<ClientInfo>)>::operator()(Reference<ClientInfo>) const /usr/local/bin/../include/c++/v1/__functional/function.h:1175:12
18: #21 0x1552b92 in MultiVersionApi::runOnExternalClients(int, std::__1::function<void (Reference<ClientInfo>)>, bool) /mnt/ephemeral/mdvorsky/foundationdb/fdbclient/MultiVersionTransaction.actor.cpp:2044:5
18: #22 0x15531ef in MultiVersionApi::runOnExternalClientsAllThreads(std::__1::function<void (Reference<ClientInfo>)>, bool) /mnt/ephemeral/mdvorsky/foundationdb/fdbclient/MultiVersionTransaction.actor.cpp:2029:3
18: #23 0x156023d in MultiVersionApi::setupNetwork() /mnt/ephemeral/mdvorsky/foundationdb/fdbclient/MultiVersionTransaction.actor.cpp:2416:3
18: #24 0x12d4e1c in main /mnt/ephemeral/mdvorsky/foundationdb/fdbcli/fdbcli.actor.cpp:2185:8
18: #25 0x7f9caeb38554 in __libc_start_main (/lib64/libc.so.6+0x22554)
18: #26 0xc58028 in _start (/mnt/ephemeral/mdvorsky/build/foundationdb.linux.clang.ubsan.x86_64/bin/fdbcli+0xc58028)
```
This is happening only in the following two tests:
- `single_process_external_client_fdbcli_tests`
- `multi_process_external_client_fdbcli_tests`
04 / LABELS
Labels from the report text only; not yet run
No supported category has been assigned.
Label rules and the text that matched
[]