Fix a memory leak in __disagg_pick_up_checkpoint

XMLWordPrintableJSON

    • Storage Engines, Storage Engines - Persistence
    • None
    • None

      We have a memory leak found by ASAN:

      [2025/09/04 13:35:08.140] ==210894==ERROR: LeakSanitizer: detected memory leaks
      [2025/09/04 13:35:08.140] Direct leak of 1397 byte(s) in 1 object(s) allocated from:
      [2025/09/04 13:35:08.141]     #0 0x560eccb33b0f in malloc /data/mci/444c1191ff66ec5bade6c97089429fd0/toolchain-builder/tmp/build-llvm-v5.sh-Dae/llvm-project-llvmorg/compiler-rt/lib/asan/asan_malloc_linux.cpp:68:3
      [2025/09/04 13:35:08.141]     #1 0x7f0a651e5abb in __wt_malloc /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/os_common/os_alloc.c:99:14
      [2025/09/04 13:35:08.141]     #2 0x7f0a651e6815 in __wt_strndup /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/os_common/os_alloc.c:235:5
      [2025/09/04 13:35:08.141]     #3 0x7f0a64f684af in __wt_config_collapse /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/config/config_collapse.c:62:11
      [2025/09/04 13:35:08.141]     #4 0x7f0a64fbd479 in __disagg_pick_up_checkpoint /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/conn/conn_layered.c:388:5
      [2025/09/04 13:35:08.141]     #5 0x7f0a64fb3f7b in __disagg_pick_up_checkpoint_meta /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/conn/conn_layered.c:543:13
      [2025/09/04 13:35:08.141]     #6 0x7f0a64fb3f7b in __wti_disagg_conn_config /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/conn/conn_layered.c:1031:17
      [2025/09/04 13:35:08.141]     #7 0x7f0a64fcbb8f in __wti_conn_reconfig /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/conn/conn_reconfig.c:450:13
      [2025/09/04 13:35:08.141]     #8 0x7f0a64f7850e in __conn_reconfigure /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/src/conn/conn_api.c:1354:11
      [2025/09/04 13:35:08.141]     #9 0x7f0a6582d5f0 in model::kv_workload_runner_wt::wiredtiger_open_nolock() /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/src/driver/kv_workload_runner_wt.cpp:702:19
      [2025/09/04 13:35:08.141]     #10 0x7f0a6583333e in model::kv_workload_runner_wt::do_operation(model::operation::restart const&) /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/src/driver/kv_workload_runner_wt.cpp:543:5
      [2025/09/04 13:35:08.141]     #11 0x7f0a6583333e in auto model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&)::'lambda'(auto&&)::operator()<model::operation::restart const&>(auto&&) const /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/src/include/model/driver/kv_workload_runner_wt.h:223:51
      [2025/09/04 13:35:08.141]     #12 0x7f0a6583333e in auto std::__invoke_impl<void, model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&)::'lambda'(auto&&), model::operation::restart const&>(std::__invoke_other, model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&)::'lambda'(auto&&)&&, model::operation::restart const&) /opt/mongodbtoolchain/revisions/8695910c32ef0ee5eecaae4c9ca515b4b6436a40/stow/gcc-v5.bbK/lib/gcc/x86_64-mongodb-linux/14.2.0/../../../../include/c++/14.2.0/bits/invoke.h:61:14
      [2025/09/04 13:35:08.141]     #13 0x7f0a65826ee0 in decltype(auto) std::__do_visit<std::__detail::__variant::__deduce_visit_result<void>, model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&)::'lambda'(auto&&), std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&>(model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&)::'lambda'(auto&&)&&, std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&) /opt/mongodbtoolchain/revisions/8695910c32ef0ee5eecaae4c9ca515b4b6436a40/stow/gcc-v5.bbK/lib/gcc/x86_64-mongodb-linux/14.2.0/../../../../include/c++/14.2.0/variant:1783:15
      [2025/09/04 13:35:08.141]     #14 0x7f0a65826ee0 in std::invoke_result<auto, std::__conditional<is_lvalue_reference_v<std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&>>::type<std::variant_alternative<0ul, std::remove_reference<decltype(__variant::__as(std::declval<std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&>()))>::type>::type&, std::variant_alternative<0ul, std::remove_reference<decltype(__variant::__as(std::declval<std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&>()))>::type>::type&&>>::type std::visit<model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&)::'lambda'(auto&&), std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&>(auto&&, std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&) /opt/mongodbtoolchain/revisions/8695910c32ef0ee5eecaae4c9ca515b4b6436a40/stow/gcc-v5.bbK/lib/gcc/x86_64-mongodb-linux/14.2.0/../../../../include/c++/14.2.0/variant:1879:13
      [2025/09/04 13:35:08.141]     #15 0x7f0a65826ee0 in model::kv_workload_runner_wt::run_operation(std::variant<model::operation::begin_transaction, model::operation::breakpoint, model::operation::checkpoint, model::operation::checkpoint_crash, model::operation::commit_transaction, model::operation::config, model::operation::crash, model::operation::create_table, model::operation::evict, model::operation::get, model::operation::insert, model::operation::nop, model::operation::prepare_transaction, model::operation::remove, model::operation::restart, model::operation::rollback_to_stable, model::operation::rollback_transaction, model::operation::set_commit_timestamp, model::operation::set_oldest_timestamp, model::operation::set_stable_timestamp, model::operation::truncate, model::operation::wt_config> const&) /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/src/include/model/driver/kv_workload_runner_wt.h:223:9
      [2025/09/04 13:35:08.141]     #16 0x7f0a65826ee0 in model::kv_workload_runner_wt::run(model::kv_workload const&) /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/src/driver/kv_workload_runner_wt.cpp:173:47
      [2025/09/04 13:35:08.141]     #17 0x7f0a657e5970 in model::kv_workload::run_in_wiredtiger(char const*, char const*, char const*) const /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/src/driver/kv_workload.cpp:437:19
      [2025/09/04 13:35:08.141]     #18 0x560eccb802fa in run_and_verify(std::shared_ptr<model::kv_workload>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/tools/model_test/main.cpp:143:28
      [2025/09/04 13:35:08.141]     #19 0x560eccb7b870 in main /data/mci/76f60be946f32613c2ae8969d8a23038/wiredtiger/test/model/tools/model_test/main.cpp:932:17
      [2025/09/04 13:35:08.141]     #20 0x7f0a64a0c082 in __libc_start_main /build/glibc-FcRMwW/glibc-2.31/csu/../csu/libc-start.c:308:16
      

      It comes from here:

          /* Allocate/create a new config we're going to insert */
          metadata_value_cfg_len = len;
          WT_ERR(__wt_calloc_def(session, metadata_value_cfg_len, &metadata_value_cfg));
          WT_ERR(__wt_snprintf(metadata_value_cfg, len, "checkpoint=%s", metadata_value));
          cfg[0] = current_value;
          cfg[1] = metadata_value_cfg;
          cfg[2] = NULL;
          WT_ERR(__wt_config_collapse(session, cfg, &cfg_ret)); <------------
      

            Assignee:
            Peter Macko
            Reporter:
            Peter Macko
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: