From b6b32f4a4931b2d5a83420821963e5ac671b9033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Ludwig?= Date: Wed, 14 Mar 2018 21:58:48 +0100 Subject: [PATCH] Fix leaked eventfd in PosixEventDriverCore. The leak occurred once per thread, which showed up in conjunction with DNS lookups in particular, as a thread is currently created for each lookup. --- source/eventcore/drivers/posix/driver.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/eventcore/drivers/posix/driver.d b/source/eventcore/drivers/posix/driver.d index 5dd4f0a..629db99 100644 --- a/source/eventcore/drivers/posix/driver.d +++ b/source/eventcore/drivers/posix/driver.d @@ -92,6 +92,7 @@ final class PosixEventDriver(Loop : PosixEventLoop) : EventDriver { if (!m_loop) return; m_files.dispose(); m_dns.dispose(); + m_core.dispose(); m_loop.dispose(); m_loop = null; } @@ -120,6 +121,12 @@ final class PosixEventDriverCore(Loop : PosixEventLoop, Timers : EventDriverTime m_wakeupEvent = events.createInternal(); } + protected final void dispose() + { + m_events.releaseRef(m_wakeupEvent); + m_wakeupEvent = EventID.invalid; + } + @property size_t waiterCount() const { return m_loop.m_waiterCount + m_timers.pendingCount; } final override ExitReason processEvents(Duration timeout)