From 885cfdd2179a2aae733d0690f5a2ef23d181768e Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 2 Feb 2017 13:51:57 -0500 Subject: [PATCH] Fix super-unlikely race introduced in 236618061a445d2cb11e72 Once the CNode has been added to vNodes, it is possible that it is disconnected+deleted in the socket handler thread. However, after that we now call InitializeNode, which accesses the pnode. helgrind managed to tickle this case (somehow), but I suspect it requires in immensely braindead scheduler. --- src/net.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net.cpp b/src/net.cpp index df88b12c7..35d3348ad 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1833,11 +1833,11 @@ bool CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai if (fAddnode) pnode->fAddnode = true; + GetNodeSignals().InitializeNode(pnode, *this); { LOCK(cs_vNodes); vNodes.push_back(pnode); } - GetNodeSignals().InitializeNode(pnode, *this); return true; }