diff --git a/src/runtime/object.cpp b/src/runtime/object.cpp index 636d7a1440..82e427abc6 100644 --- a/src/runtime/object.cpp +++ b/src/runtime/object.cpp @@ -842,6 +842,10 @@ public: } void resolve(lean_task_object * t, object * v) { + if (t->m_value) { + dec(v); + return; + } unique_lock lock(m_mutex); if (t->m_value) { lock.unlock(); // `dec(v)` could lead to `deactivate_task` trying to take the lock