https://gcc.gnu.org/g:5b20eefe0c39c352f40bc6ff6fd995bfa0e49636
commit r16-6553-g5b20eefe0c39c352f40bc6ff6fd995bfa0e49636 Author: Jonathan Wakely <[email protected]> Date: Mon Jan 5 17:29:40 2026 +0000 libstdc++: Fix memory leak in std::barrier destructor [PR123378] When I replaced the std::unique_ptr member in r16-997-gef632273a90657 I should have added an explicit delete[] operation to replace the effects of the unique_ptr destructor. libstdc++-v3/ChangeLog: PR libstdc++/123378 * include/std/barrier (~__tree_barrier_base): Define. Reviewed-by: Tomasz KamiĆski <[email protected]> Diff: --- libstdc++-v3/include/std/barrier | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/include/std/barrier b/libstdc++-v3/include/std/barrier index 060285d6bf85..0986ff9dada6 100644 --- a/libstdc++-v3/include/std/barrier +++ b/libstdc++-v3/include/std/barrier @@ -114,6 +114,12 @@ It looks different from literature pseudocode for two main reasons: _M_state.store(_M_alloc_state().release(), memory_order_release); } + ~__tree_barrier_base() + { delete[] _M_state.load(memory_order_relaxed); } + + __tree_barrier_base(const __tree_barrier_base&&) = delete; + __tree_barrier_base& operator=(const __tree_barrier_base&&) = delete; + unique_ptr<__state_t[]> _M_alloc_state() {
