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 ) 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 ; 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: From: Gavin Andresen To: Bitcoin Dev 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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