From ba3354fca61fa0ee6c3dc614e7ef1be79a4038ef Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Fri, 1 Jul 2022 13:04:44 +0200 Subject: [PATCH] MDEV-28995 Sporadic Assertion on shutdown in threadpool_winsockets.cc Remove the affected assert. Wait for all AIO_buffer_cache::release_buffer() to finish before AIO_buffer_cache::clear(). --- sql/threadpool_winsockets.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sql/threadpool_winsockets.cc b/sql/threadpool_winsockets.cc index 41167781283..a214cda2a5c 100644 --- a/sql/threadpool_winsockets.cc +++ b/sql/threadpool_winsockets.cc @@ -114,8 +114,17 @@ void AIO_buffer_cache::clear() if (!m_base) return; - /* Check that all items are returned to the cache. */ - DBUG_ASSERT(m_cache.size() == m_elements); + std::unique_lock lk(m_mtx, std::defer_lock); + for(;;) + { + if (lk.try_lock()) + { + if (m_cache.size() == m_elements) + break; + lk.unlock(); + } + Sleep(100); + } VirtualFree(m_base, 0, MEM_RELEASE); m_cache.clear(); m_base= 0;