summaryrefslogtreecommitdiff
path: root/6f/1a586ba57b3cd4632ae6a5a04b79bd6e38fe39
blob: 33a7d4d9341afc025b539948155ceb7cb10b16b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192]
	helo=mx.sourceforge.net)
	by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <gavinandresen@gmail.com>) id 1QthV7-0005zk-M6
	for bitcoin-development@lists.sourceforge.net;
	Wed, 17 Aug 2011 14:53:49 +0000
Received-SPF: pass (sog-mx-2.v43.ch3.sourceforge.com: domain of gmail.com
	designates 209.85.216.182 as permitted sender)
	client-ip=209.85.216.182; envelope-from=gavinandresen@gmail.com;
	helo=mail-qy0-f182.google.com; 
Received: from mail-qy0-f182.google.com ([209.85.216.182])
	by sog-mx-2.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1QthV7-0000Sh-0g
	for bitcoin-development@lists.sourceforge.net;
	Wed, 17 Aug 2011 14:53:49 +0000
Received: by qyk9 with SMTP id 9so813384qyk.13
	for <bitcoin-development@lists.sourceforge.net>;
	Wed, 17 Aug 2011 07:53:43 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.142.49.2 with SMTP id w2mr550631wfw.50.1313592823332; Wed, 17
	Aug 2011 07:53:43 -0700 (PDT)
Received: by 10.142.133.12 with HTTP; Wed, 17 Aug 2011 07:53:43 -0700 (PDT)
Date: Wed, 17 Aug 2011 10:53:43 -0400
Message-ID: <CABsx9T0nZcAnM29R8H9Diw3B3Ak2UXzE4u6zCpfCL0T8cF60mg@mail.gmail.com>
From: Gavin Andresen <gavinandresen@gmail.com>
To: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Content-Type: text/plain; charset=ISO-8859-1
X-Spam-Score: -1.1 (-)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(gavinandresen[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
	author's domain
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
	0.5 AWL AWL: From: address is in the auto white-list
X-Headers-End: 1QthV7-0000Sh-0g
Subject: [Bitcoin-development] DEBUG_LOCKORDER : early detection of
	potential deadlocks
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Wed, 17 Aug 2011 14:53:49 -0000

Commit 865ed8a adds a new compile-time #ifdef : DEBUG_LOCKORDER

Compile with -DDEBUG_LOCKORDER and every time a lock is acquired by a
CCriticalSection a check is made to record the order of locks and
complain if they are being acquired in an inconsistent order.  Here's
what you get in debug.log when potential deadlocks are detected:

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
 pwallet->cs_mapWallet  db.cpp:686
 pwallet->cs_KeyStore  db.cpp:687
 cs_KeyStore  keystore.cpp:74
 cs_vMasterKey  keystore.cpp:75
 cs_KeyStore  keystore.cpp:31
Current lock order is:
 pwallet->cs_mapWallet  db.cpp:686
 pwallet->cs_KeyStore  db.cpp:687
 cs_KeyStore  keystore.cpp:74
 cs_vMasterKey  keystore.cpp:75

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
 pnode->cs_vRecv  net.cpp:1525
 cs_main  main.cpp:2372
 cs_vSend  net.h:681
Current lock order is:
 pnode->cs_vSend  net.cpp:1531
 cs_main  main.cpp:2411

I'll be working on figuring out how to eliminate these, and will be
working on some RPC stress-tests that try to exercise all the code
paths to early-detect other potential problems.

-- 
--
Gavin Andresen