From c83a39e10d01767268a1511c287cb851ed139efc Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Fri, 23 Sep 2016 13:13:58 +0200 Subject: [PATCH] src: fix deadlock in CardReader Move the `uv_mutex_unlock` before the `uv_thread_join` as it could perfectly lock with `CardReader::HandlerFunction` `uv_mutex_unlock`. --- src/cardreader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cardreader.cpp b/src/cardreader.cpp index 85e2ca7..56c3c6a 100644 --- a/src/cardreader.cpp +++ b/src/cardreader.cpp @@ -316,9 +316,9 @@ NAN_METHOD(CardReader::Close) { } while ((ret != 0) && (++ times < 5)); } + uv_mutex_unlock(&obj->m_mutex); assert(uv_thread_join(&obj->m_status_thread) == 0); obj->m_status_thread = 0; - uv_mutex_unlock(&obj->m_mutex); } info.GetReturnValue().Set(Nan::New(result));