From afbf8759e11acc1a224e42f92557f5697e4691f0 Mon Sep 17 00:00:00 2001 From: Sebastian Ullrich Date: Wed, 20 Mar 2024 13:47:52 +0100 Subject: [PATCH] fix: deadlock in `IO.Promise.resolve` (#3693) --- src/runtime/object.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/runtime/object.cpp b/src/runtime/object.cpp index fab5b3aa32..95dd2758da 100644 --- a/src/runtime/object.cpp +++ b/src/runtime/object.cpp @@ -788,6 +788,7 @@ public: void resolve(lean_task_object * t, object * v) { unique_lock lock(m_mutex); if (t->m_value) { + lock.unlock(); // `dec(v)` could lead to `deactivate_task` trying to take the lock dec(v); return; }