asio icon indicating copy to clipboard operation
asio copied to clipboard

Memory leak in asio::awaitable move assignment operator when lhs is valid

Open erinacio opened this issue 1 year ago • 0 comments

Example:

// Clang 16, C++20, -fsanitize=address
#include <asio.hpp>

asio::awaitable<void> async_foo() {
  co_return;
}

asio::awaitable<void> async_main() {
  asio::awaitable<void> a{async_foo()};  // allocates here
  a = async_foo();  // leaks here
  co_await std::move(a);
}

int main() {
  asio::io_context io{1};
  asio::co_spawn(io, async_main(), asio::detached);
  io.run();
  return 0;
}

I didn't found any official document indicating such behavior, so I believe that is unintentional and needs a fix.

erinacio avatar Feb 01 '24 11:02 erinacio