Skip to content

[sanitizer] ASan + UBSan weekly run failure #3740

Description

@github-actions

Run: https://github.com/aethersdr/AetherSDR/actions/runs/27954173034
Commit: 756353b
Date: 2026-06-22
Fingerprint: 1f1232b9d3fc

Sanitizer report (first SUMMARY block)
      Start 21: vita_tile_frequency_test
21/47 Test #21: vita_tile_frequency_test ...........   Passed    0.01 sec
      Start 22: frequency_entry_parser_test
22/47 Test #22: frequency_entry_parser_test ........   Passed    0.01 sec
      Start 23: radio_status_ownership_test
23/47 Test #23: radio_status_ownership_test ........   Passed    0.01 sec
      Start 24: profile_load_command_test
24/47 Test #24: profile_load_command_test ..........   Passed    0.01 sec
      Start 25: slice_recreate_policy_test
25/47 Test #25: slice_recreate_policy_test .........   Passed    0.01 sec
      Start 26: shortcut_manager_test
26/47 Test #26: shortcut_manager_test ..............   Passed    0.03 sec
      Start 27: antenna_alias_test
27/47 Test #27: antenna_alias_test .................   Passed    0.02 sec
      Start 28: mqtt_antenna_alias_test
28/47 Test #28: mqtt_antenna_alias_test ............   Passed    0.01 sec
      Start 29: mqtt_settings_test
29/47 Test #29: mqtt_settings_test .................   Passed    0.02 sec
      Start 30: atu_pretune_centers_test
30/47 Test #30: atu_pretune_centers_test ...........   Passed    0.01 sec
      Start 31: cwx_local_keyer_drift_test
31/47 Test #31: cwx_local_keyer_drift_test .........***Failed    0.04 sec
=================================================================
==7480==ERROR: AddressSanitizer: heap-use-after-free on address 0x50200000023c at pc 0x56099e767ab4 bp 0x7ffdcc292bf0 sp 0x7ffdcc292be0
WRITE of size 4 at 0x50200000023c thread T0
    #0 0x56099e767ab3 in decltype (::new ((void*)(0)) int((declval<int>)())) std::construct_at<int, int>(int*, int&&) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xaaab3) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #1 0x56099e76374b in int& std::vector<int, std::allocator<int> >::emplace_back<int>(int&&) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa674b) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #2 0x56099e75f695 in std::vector<int, std::allocator<int> >::push_back(int&&) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa2695) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #3 0x56099e74a27f in operator() /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:98
    #4 0x56099e756321 in __invoke_impl<void, (anonymous namespace)::Fixture::Fixture()::<lambda(bool)>&, bool> /usr/include/c++/13/bits/invoke.h:61
    #5 0x56099e755f32 in __invoke_r<void, (anonymous namespace)::Fixture::Fixture()::<lambda(bool)>&, bool> /usr/include/c++/13/bits/invoke.h:111
    #6 0x56099e755bdc in _M_invoke /usr/include/c++/13/bits/std_function.h:290
    #7 0x56099e77f951 in std::function<void (bool)>::operator()(bool) const /usr/include/c++/13/bits/std_function.h:591
    #8 0x56099e774fc8 in AetherSDR::CwxLocalKeyer::emitKeyDown(bool) /__w/AetherSDR/AetherSDR/src/core/CwxLocalKeyer.cpp:229
    #9 0x56099e775231 in AetherSDR::CwxLocalKeyer::keyUpIfDown() /__w/AetherSDR/AetherSDR/src/core/CwxLocalKeyer.cpp:235
    #10 0x56099e76e946 in AetherSDR::CwxLocalKeyer::~CwxLocalKeyer() /__w/AetherSDR/AetherSDR/src/core/CwxLocalKeyer.cpp:48
    #11 0x56099e74a03e in ~TestKeyer /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:61
    #12 0x56099e74aa5b in ~Fixture /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:91
    #13 0x56099e74df4e in testLateTicksShortenNextWait /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:160
    #14 0x56099e75527f in main /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:279
    #15 0x7f03a40b41c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 8e9fd827446c24067541ac5390e6f527fb5947bb)
    #16 0x7f03a40b428a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 8e9fd827446c24067541ac5390e6f527fb5947bb)
    #17 0x56099e747bc4 in _start (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0x8abc4) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)

0x50200000023c is located 12 bytes inside of 16-byte region [0x502000000230,0x502000000240)
freed by thread T0 here:
    #0 0x7f03a52545e8 in operator delete(void*, unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:164
    #1 0x56099e768534 in std::__new_allocator<int>::deallocate(int*, unsigned long) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xab534) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #2 0x56099e761e17 in std::_Vector_base<int, std::allocator<int> >::_M_deallocate(int*, unsigned long) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa4e17) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #3 0x56099e75eba3 in std::_Vector_base<int, std::allocator<int> >::~_Vector_base() (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa1ba3) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #4 0x56099e75edc7 in std::vector<int, std::allocator<int> >::~vector() (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa1dc7) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #5 0x56099e74a938 in ~Fixture /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:91
    #6 0x56099e74df4e in testLateTicksShortenNextWait /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:160
    #7 0x56099e75527f in main /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:279
    #8 0x7f03a40b41c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 8e9fd827446c24067541ac5390e6f527fb5947bb)
    #9 0x7f03a40b428a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 8e9fd827446c24067541ac5390e6f527fb5947bb)
    #10 0x56099e747bc4 in _start (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0x8abc4) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)

previously allocated by thread T0 here:
    #0 0x7f03a5253548 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x56099e768ffa in std::__new_allocator<int>::allocate(unsigned long, void const*) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xabffa) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #2 0x56099e7654fd in std::_Vector_base<int, std::allocator<int> >::_M_allocate(unsigned long) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa84fd) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #3 0x56099e7658da in void std::vector<int, std::allocator<int> >::_M_realloc_insert<int>(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int&&) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa88da) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #4 0x56099e7638e9 in int& std::vector<int, std::allocator<int> >::emplace_back<int>(int&&) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa68e9) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #5 0x56099e75f695 in std::vector<int, std::allocator<int> >::push_back(int&&) (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xa2695) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)
    #6 0x56099e74a27f in operator() /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:98
    #7 0x56099e756321 in __invoke_impl<void, (anonymous namespace)::Fixture::Fixture()::<lambda(bool)>&, bool> /usr/include/c++/13/bits/invoke.h:61
    #8 0x56099e755f32 in __invoke_r<void, (anonymous namespace)::Fixture::Fixture()::<lambda(bool)>&, bool> /usr/include/c++/13/bits/invoke.h:111
    #9 0x56099e755bdc in _M_invoke /usr/include/c++/13/bits/std_function.h:290
    #10 0x56099e77f951 in std::function<void (bool)>::operator()(bool) const /usr/include/c++/13/bits/std_function.h:591
    #11 0x56099e774fc8 in AetherSDR::CwxLocalKeyer::emitKeyDown(bool) /__w/AetherSDR/AetherSDR/src/core/CwxLocalKeyer.cpp:229
    #12 0x56099e772fbd in AetherSDR::CwxLocalKeyer::scheduleNext() /__w/AetherSDR/AetherSDR/src/core/CwxLocalKeyer.cpp:177
    #13 0x56099e773d57 in AetherSDR::CwxLocalKeyer::onTick() /__w/AetherSDR/AetherSDR/src/core/CwxLocalKeyer.cpp:192
    #14 0x56099e74940b in tick /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:68
    #15 0x56099e74dc0f in testLateTicksShortenNextWait /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:153
    #16 0x56099e75527f in main /__w/AetherSDR/AetherSDR/tests/cwx_local_keyer_drift_test.cpp:279
    #17 0x7f03a40b41c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 8e9fd827446c24067541ac5390e6f527fb5947bb)
    #18 0x7f03a40b428a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 8e9fd827446c24067541ac5390e6f527fb5947bb)
    #19 0x56099e747bc4 in _start (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0x8abc4) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209)

SUMMARY: AddressSanitizer: heap-use-after-free (/__w/AetherSDR/AetherSDR/build/cwx_local_keyer_drift_test+0xaaab3) (BuildId: 48bd8b255f8b647aa7a60058e8c0ef3413b39209) in decltype (::new ((void*)(0)) int((declval<int>)())) std::construct_at<int, int>(int*, int&&)

Full sanitizer.log attached to the workflow run artifacts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions