From d64b1fdd6ae0b0f12e5f0acbc695db0d23f75df7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Botond=20D=C3=A9nes?= Date: Wed, 17 Mar 2021 15:18:54 +0200 Subject: [PATCH] reader_permit: signal leaked resources When destroying a permit with leaked resources we call `on_internal_error_noexcept()` in the destructor. This method logs an error or asserts depending on the configuration. When not asserting, we need to return the leaked units to the semaphore, otherwise they will be leaked for good. We can do this because we know exactly how many resources the user of the permit leaked (never signalled). --- reader_concurrency_semaphore.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/reader_concurrency_semaphore.cc b/reader_concurrency_semaphore.cc index 6c7e9406d3..552db51e24 100644 --- a/reader_concurrency_semaphore.cc +++ b/reader_concurrency_semaphore.cc @@ -101,6 +101,7 @@ public: _op_name_view, _resources.count, _resources.memory)); + signal(_resources); } }