CHESS – Find and Reproduce Concurrency Heisenbugs ForumCHESS is a tool for finding and reproducing Heisenbugs in concurrent programs. It can find assertion violations, deadlocks, livelocks, data-races, and memory-model errors.© 2009 Microsoft Corporation. All rights reserved.Mon, 30 Nov 2009 05:37:41 Z05a70b1b-91a6-4553-b076-b3a46e0acb9dhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/a1934267-0bad-4af4-af69-178209e8bcd9http://social.msdn.microsoft.com/Forums/en-US/chess/thread/a1934267-0bad-4af4-af69-178209e8bcd9_guru_http://social.msdn.microsoft.com/Profile/en-US/?user=_guru_Help in deciphering stack track created by chessFirst of all, thank you for a great tool. I really like Chess! As a future request, support log4net and by that I mean the deprecated ReadWriteLock or at least avoid instrumenting log4net by default (I know I should look at how to avoid instrumenting assemblies, but still, it would be nice)<br/> <br/> Alright, trying to debug a work stealing queue taken from here:<br/> http://www.bluebytesoftware.com/blog/2008/08/12/BuildingACustomThreadPoolSeriesPart2AWorkStealingQueue.aspx<br/> <br/> I've added the changes recommended by this crazy awesome russian:<br/> http://groups.google.com/group/relacy/browse_frm/thread/f91c913c298a20ab<br/> <br/> And now I figured I'd test chess on it.<br/> <br/> Here's the code: http://www.copypastecode.com/16429/ <div style="color:Black;background-color:White"></div> Here's my test case: http://www.copypastecode.com/16433/<br/> <br/> And here's the stack:<br/> <pre>Microsoft.ExtendedReflection.dll!Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break(string message) + 0x78 bytes <br/> Microsoft.ExtendedReflection.dll!Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break() + 0x8 bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.ClrSyncManager.DebugBreak() + 0x1b bytes <br/> Microsoft.ManagedChess.MChess.dll!&lt;Module&gt;.Microsoft.ManagedChess.ShimSyncManager.DebugBreak() + 0x73 bytes <br/> [Native to Managed Transition] <br/> [Managed to Native Transition] <br/> Microsoft.ManagedChess.MChess.dll!Microsoft.ManagedChess.MChessChess.SyncVarAccess(int var = 512, MSyncVarOp op = RWVAR_WRITE) + 0x2c bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.Conversions.SyncVarAccess(int varnum = 512, MSyncVarOp op = RWVAR_WRITE) + 0x16e bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.ClrSyncManager.SyncVarAccess(Microsoft.ExtendedReflection.Monitoring.GCAddress o = {Microsoft.ExtendedReflection.Monitoring.GCAddress}, MSyncVarOp mop = RWVAR_WRITE) + 0x4f bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.ClrSyncManager.raw_access(System.UIntPtr address = 45707496, uint size = 4, bool volatile = true, bool write = true) + 0x19a bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.ClrSyncManager.ObjectAccessThreadMonitor_WriteAccess(System.UIntPtr address = 45707496, uint size = 4, bool volatile = true) + 0x2f bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.CallsOnly.ObjectAccessThreadMonitor.Store(System.UIntPtr interiorPointer = 45707496, uint size = 4, bool volatile = true) + 0x43 bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.CallsOnly.ThreadMonitorFactory.Store(System.UIntPtr location = 45707496, uint size = 4, bool volatile = true) + 0x94 bytes <br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.AllCallbacks.ThreadExecutionMonitorDispatcher.Store(System.UIntPtr location = 45707496, uint size = 4, bool is_volatile = true) + 0x5c bytes <br/> Microsoft.ExtendedReflection.dll!Microsoft.ExtendedReflection.Monitoring.ThreadExecutionMonitorMultiplexer.Microsoft.ExtendedReflection.Monitoring.IThreadExecutionMonitor.Store(System.UIntPtr location = 45707496, uint size = 4, bool volatile = true) + 0x63 bytes <br/> Microsoft.ExtendedReflection.dll!Microsoft.ExtendedReflection.Monitoring._Addresses.StoreVolatile(System.UIntPtr location, uint size) + 0x48 bytes <br/> Core.dll!Core.Threading.WorkStealingQueue&lt;int&gt;.LocalPush(int obj = 3) Line 52 + 0x3b bytes C#<br/> tests.concurrent.dll!Tests.Concurrent.WorkStealingQueueTests.OneProdOneCons.AnonymousMethod() Line 83 + 0x17 bytes C#<br/> Microsoft.ManagedChess.Engine.dll!Microsoft.ManagedChess.EREngine.Helper.WrapThreadStart.AnonymousMethod() + 0x64 bytes <br/> mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) + 0x65 bytes <br/> mscorlib.dll!System.Threading.ExecutionContext.runTryCode(object userData) + 0x52 bytes <br/> [Native to Managed Transition] <br/> [Managed to Native Transition] <br/> mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0xc4 bytes <br/> mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x69 bytes <br/> mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x41 bytes <br/> </pre> The line it breaks on is `_TailIndex = tail + 1;` inside LocalPush(T t).Sun, 29 Nov 2009 20:48:25 Z2009-11-30T05:37:41Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/446a6afd-ec60-4a69-a48d-513ed63ff222http://social.msdn.microsoft.com/Forums/en-US/chess/thread/446a6afd-ec60-4a69-a48d-513ed63ff222PJ7http://social.msdn.microsoft.com/Profile/en-US/?user=PJ7development schedule?Is there any ballpark date for when MCHESS and the Concurrency Explorer may get rolled into the VS.NET IDE?Sun, 29 Nov 2009 20:03:59 Z2009-11-30T05:27:17Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/dcd9b442-1497-4c50-ab99-d52da5369568http://social.msdn.microsoft.com/Forums/en-US/chess/thread/dcd9b442-1497-4c50-ab99-d52da5369568rohits79http://social.msdn.microsoft.com/Profile/en-US/?user=rohits79Can't open Concurrency Explorer from ChessBoardHi, <div><br/></div> <div>I tried the race condition sample, and did &quot;repo result with trace&quot; in ChessBoard, but when I right click on the race results once it's completed, I do not see the &quot;open with concurrency explorer&quot; option. Am I missing something?</div> <div><br/></div> <div>At the same time when i run mchess with &quot;/detectraces /alltraces&quot; and then second time with /ls option as <span style="background-color:#ffffff">&quot;/detectraces /alltraces /ls&quot; I see ConcurrencyExplorer works can read trace file correctly. Not sure though what does /ls command do (was prompted to run with /ls option which is undocumented) and why we need to run mchess twice?</span></div> <div><span style="background-color:#ffffff"><br/></span></div> <div><span style="background-color:#ffffff">Please correct me if i am wrong.</span></div> <div><span style="background-color:#ffffff"><br/></span></div> <div><span style="background-color:#ffffff">Thanks,</span></div> <div><span style="background-color:#ffffff">Rohit</span></div>Wed, 18 Nov 2009 15:18:10 Z2009-11-30T05:27:39Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6d647f3e-f73d-439d-84f8-ac7a4e558b42http://social.msdn.microsoft.com/Forums/en-US/chess/thread/6d647f3e-f73d-439d-84f8-ac7a4e558b42Vadim Mutilinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Vadim%20MutilinBugs with two ore more preemption Hello!<br/> First of all I want to thank CHESS developers and researchers for practical oriented research and for applying the results in industry.<br/> I'm trying to understand the nature of concurrent bugs and classification of bugs by the required number of preemptions seems promising to me. I want to start with analysis of bugs in real industrial apllications, especially bugs with two ore more preemptions. I've read the CHESS papers and found that it was applied to PLINQ, Singularity, Transaction Manager, Dryad, CCR and etc. But there is little information about bugs with more than one preemption. I found only one description of bug in CCR with two context switches in the article &quot;Finding and Reproducing Heisenbugs in Concurrent Programs&quot;. Example with workers A,B. &quot;Worker A registers to process a set of tasks in a port while a worker B cancels all the tasks in the port.&quot; Unfortunately I didn't understand how the code in the implementation should look like to get this bug and why we need at least two preemptions? How the test driver looks like?<br/> Also, if it is possible I would appreciate if you could share bugs with two or more preemptions found in the other programs.<br/> <br/> <br/>Wed, 18 Nov 2009 11:25:55 Z2009-11-23T06:39:28Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/3be2348f-661a-4f3c-97a8-b241019ec9behttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/3be2348f-661a-4f3c-97a8-b241019ec9beSean Songhttp://social.msdn.microsoft.com/Profile/en-US/?user=Sean%20SongCan chess work with Boost API?We are using boost threading and synchronization API in our source code. I think that boost API are just wrapping the win32 API on win32 platforms. <br/> <br/> BTW, where can I find the CHESS &quot;user manual&quot;?<br/> <br/> Thanks a lot!<br/> Sean<br/>Thu, 07 May 2009 16:24:03 Z2009-11-14T00:44:04Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6c2e3504-c824-47a6-8297-215880858d49http://social.msdn.microsoft.com/Forums/en-US/chess/thread/6c2e3504-c824-47a6-8297-215880858d49Neil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JThis test passes in Visual Studio but fails in ChessBoardThis test passes in Visual Studio:<br/> <br/> <img src="http://i36.tinypic.com/zkk7qq.png" alt=""> <br/> <br/> But fails in ChessBoard:<br/> <br/> <img src="http://i36.tinypic.com/mcaddk.png" alt=""> <br/> <br/> It appears that when run with ChessBoard, BaseClass.TestInitialize() is not called. Is this a bug?Thu, 12 Nov 2009 19:41:59 Z2009-11-12T21:59:40Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6a38ceca-e96b-42d3-97f6-65d1e1b3675ehttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6a38ceca-e96b-42d3-97f6-65d1e1b3675eTom Ballhttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20BallShare stories of CHESS wins/lossesAre you using CHESS? Do you have success or horror stories to share? We would love to hear about how CHESS works in the field. Use this thread to share your experiences about CHESS.<br><br>Thanks, the CHESS team. Thu, 15 Jan 2009 20:57:57 Z2009-11-12T08:32:43Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/47b59558-71cb-48c4-8535-c1b433366f97http://social.msdn.microsoft.com/Forums/en-US/chess/thread/47b59558-71cb-48c4-8535-c1b433366f97Daniel DGhttp://social.msdn.microsoft.com/Profile/en-US/?user=Daniel%20%20DGCHESS and .NET 4.0/Parallel ExtensionsHi,<br/><br/>just wonder if you have any plans for CHESS regarding .Net 4.0/Parallel Extensions?  <br/><br/>Thanks <br/>DanielThu, 13 Aug 2009 09:21:34 Z2009-10-26T02:19:42Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/2de856e5-7c16-4d1c-8fd8-cdc26ad18856http://social.msdn.microsoft.com/Forums/en-US/chess/thread/2de856e5-7c16-4d1c-8fd8-cdc26ad18856Carson Joneshttp://social.msdn.microsoft.com/Profile/en-US/?user=Carson%20JonesTroubleshooting the /includeassembly option.A few different times I've run into the situation where I've tried to include assemblies (or namespaces) to mchess, but mchess appears to not be able to actually include the assembly.  Mainly I've suspected this because in deadlock situations mchess says that the execution times out or only one test or schedule is explored in another multithreaded test case.  Unfortunately, mchess doesn't say a word if an assembly name is supplied that it doesn't recognize (e.g., /ia:FakeName), so there's no feedback for troubleshooting beyond that.<br/> <br/> The test project I'm using is in a solution with the assembly I'm trying to include, and everything is building correctly, so I'm assuming all of the project references are setup correctly.  Are there any tips to move on from here?  I've only noticed this a handful of times and by playing around I've been usually able to get it, I'm just looking for a better solution.<br/> <br/> Thanks!Wed, 21 Oct 2009 23:53:58 Z2009-10-23T21:57:03Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/7b75fd28-53c0-43bc-a5e1-260b49f359c2http://social.msdn.microsoft.com/Forums/en-US/chess/thread/7b75fd28-53c0-43bc-a5e1-260b49f359c2Aron Weilerhttp://social.msdn.microsoft.com/Profile/en-US/?user=Aron%20WeilerLivelock... not sure how to solve this.Hi guys.&nbsp; First I want to say how cool Chess is; it's already helped me to refactor a lot of code that had nearly unreproducible concurrency bugs.<br /> <br /> Second, I want to ask about this livelock that Chess is detecting.&nbsp; I don't see how this could generate a livelock, nor do I see how I would solve the problem.&nbsp; Maybe I don't understand enough about livelocks to wrap my brain around this problem, but I thought I'd ask your advice anyway.<br /> <br /> Here is the code that is showing a livelock...&nbsp; It's basically a wrapper for a generic dictionary.&nbsp; Any help would be greatly appreciated.<br /> <br /> <pre lang="x-c#">public bool TryGetValue(K primaryKey, out V val) { // baseDictionaryLock is a ReadWriterLockSlim baseDictionaryLock.EnterReadLock(); try { return baseDictionary.TryGetValue(primaryKey, out val); } finally { // Chess breaks here saying it has detected livelock baseDictionaryLock.ExitReadLock(); } }</pre>Thu, 15 Oct 2009 18:08:10 Z2009-10-15T22:56:27Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/3f0aa35a-3585-4880-9587-d72ffb4e8c31http://social.msdn.microsoft.com/Forums/en-US/chess/thread/3f0aa35a-3585-4880-9587-d72ffb4e8c31raxrajahttp://social.msdn.microsoft.com/Profile/en-US/?user=raxrajaDebug assertion failed - workaroundRegarding: http://social.msdn.microsoft.com/Forums/en-US/chess/thread/56288005-4382-4215-9e56-bcaa99fda117<br /> <br /> I had used CHESS a few months back to test some things in our codebase - had found a few issues in the multithreaded code. While testing - I had also found the above issue.<br /> <br /> I pulled my old tests today and the error mentioned in the thread seems to occur frequently (I have the latest release of CHESS).<br /> <br /> So now I clean and rebuild the solution under test before I run mchess (from commandline or via chessboard) each time and the problem isnt there.<br /> <br /> i.e. If I rebuild the solution each time before running mchess the error goes away.<br /> <br /> Hope this helps anyone if they run into this problem.<br /> <br /> Thanks,<br /> SriramWed, 14 Oct 2009 01:15:37 Z2009-10-14T18:44:46Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/27330b52-cf42-4a2e-a211-066e93663be6http://social.msdn.microsoft.com/Forums/en-US/chess/thread/27330b52-cf42-4a2e-a211-066e93663be6Steven J Walkerhttp://social.msdn.microsoft.com/Profile/en-US/?user=Steven%20J%20WalkerCode with no lock statementsCurrently my code has no lock statements - I want to use CHESS too detect where I need them. <br /> <br /> I modified the Account class in the Bank example and removed all the lock statements. This resulted in the chess test passing every time, compared to stress tests which sometimes (very few) discover the bug. <br /> <br /> So if I don't have lock statements CHESS won't work?<br /> <br /> The following is the code of the account class:<br /> <br /> <pre lang="x-c#">public class Account { private int balance; public Account(int amount) { balance = amount; } public void Withdraw(int amount) { balance = balance - amount; } public int Read() { return balance; } public void Deposit(int amount) { balance = balance + amount; } }</pre> <br /> This is the test code:<br /> <br /> <pre lang="x-c#">[TestMethod] [HostType(&quot;Chess&quot;)] public void WithdrawAndDepositConcurrently() { var account = new Account(10); var child = new Thread( o =&gt; { (o as Account).Withdraw(2); } ); child.Start(account); account.Deposit(1); child.Join(); Assert.AreEqual&lt;int&gt;(9, account.Read()); } [TestMethod] public void WithdrawAndDepositStress10000() { for (int i = 0; i &lt; 10000; i++) WithdrawAndDepositConcurrently(); } [TestMethod] public void WithdrawAndDepositStress100000() { for (int i = 0; i &lt; 100000; i++) WithdrawAndDepositConcurrently(); }</pre> <br /> <br /> Most of the time, only the last test discovers the bug.<br /> <br /> Best Regards,<br /> WalkerWed, 07 Oct 2009 14:12:52 Z2009-10-08T14:25:58Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/0f24009a-d416-4b6d-b3d6-852e7917438ehttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/0f24009a-d416-4b6d-b3d6-852e7917438edavidsnyhttp://social.msdn.microsoft.com/Profile/en-US/?user=davidsnyASP.NET Cache Testing PatternI'd like to use CHESS to test for thread safety amongst my cached objects within my ASP.NET application.  I've constructed a few tests but am struggling with confidence that CHESS is really providing any help.<br/><br/>I'd like to know if anyone has a good pattern for testing this that I might be able to compare my tests against?<br/>Wed, 30 Sep 2009 14:45:26 Z2009-10-01T02:46:05Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/a500ea25-9259-4360-85bd-6e4970ad5fa7http://social.msdn.microsoft.com/Forums/en-US/chess/thread/a500ea25-9259-4360-85bd-6e4970ad5fa7Neil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JIs it possible to write a CHESS test that proves that reads and writes of 64-bit values are not atomic on 32-bit systems?Is it possible to write a CHESS test that proves that reads and writes of 64-bit values are not atomic on 32-bit systems?Fri, 11 Sep 2009 04:55:04 Z2009-09-12T21:56:14Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/5bf497de-3011-4dd8-b655-2aca12e6a321http://social.msdn.microsoft.com/Forums/en-US/chess/thread/5bf497de-3011-4dd8-b655-2aca12e6a321Neil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JWhy does this test pass instead of say "Detected nondeterminism outside the control of CHESS"?Why does this test pass instead of say &quot;Detected nondeterminism outside the control of CHESS&quot;?<br/><br/><img src="http://i30.tinypic.com/jszjtv.png" alt="">Tue, 01 Sep 2009 06:49:24 Z2009-09-03T00:42:06Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6aea5e94-c99b-4bed-bf76-0835c9d5c94dhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6aea5e94-c99b-4bed-bf76-0835c9d5c94dPuneet Maheshwarihttp://social.msdn.microsoft.com/Profile/en-US/?user=Puneet%20MaheshwariError Running mchessI ran my exe with mchess in the following way mchess Controller.exe<br/> <br/> Here is the error:<br/> <br/> ManagedCHESS. Copyright (C) Microsoft Corporation, 2008.<br/> Analyzing Controller.exe  ...<br/> <br/> ***************** CHESS assertion ***********************<br/> Error: could not find class ChessTest<br/>Mon, 31 Aug 2009 21:31:23 Z2009-09-01T00:17:59Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/ef4b2cac-5965-424b-8579-66257037d68ahttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/ef4b2cac-5965-424b-8579-66257037d68aNeil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JWhy does this test with an instance int pass but this test with a static int fail?Why does this test with an instance int pass but this test with a static int fail?<br/><br/><img src="http://i30.tinypic.com/2w32r2u.png/" alt="">Sun, 30 Aug 2009 20:53:40 Z2009-08-31T06:55:26Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/c72ecd79-fba5-43b2-addf-9432c790c952http://social.msdn.microsoft.com/Forums/en-US/chess/thread/c72ecd79-fba5-43b2-addf-9432c790c952iq220http://social.msdn.microsoft.com/Profile/en-US/?user=iq220What is Visual Studio Database Edition?<em><strong>What is the differantial of GDR and 9.0 VSDB edition?</strong></em>Tue, 25 Aug 2009 18:30:03 Z2009-08-26T15:17:27Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/6d5748b4-3de1-4ebb-a4f5-992d9b4a8555http://social.msdn.microsoft.com/Forums/en-US/chess/thread/6d5748b4-3de1-4ebb-a4f5-992d9b4a8555Puneet Maheshwarihttp://social.msdn.microsoft.com/Profile/en-US/?user=Puneet%20MaheshwariIncrease the timeout in chessMy test method takes 2 minutes to execute. Is there a way to increase the timeout to 2 minutes when running with Chess?Tue, 25 Aug 2009 19:54:23 Z2009-08-26T15:13:34Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/45d2df37-48f3-4c5f-b730-9f06fda88532http://social.msdn.microsoft.com/Forums/en-US/chess/thread/45d2df37-48f3-4c5f-b730-9f06fda88532Neil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JHow to fix "(file not found)" in ChessBoard?In ChessBoard when I try to run any test, I receive a &quot;(file not found)&quot; error:<br/><br/><img src="http://i25.tinypic.com/rwjqj5.png/" alt=""> <br/><br/><img src="http://i30.tinypic.com/6hrfw9.png/" alt=""> <br/><br/><img src="http://i32.tinypic.com/2w1zla1.png" alt=""><br/><br/><img src="http://i32.tinypic.com/2vdhahj.png" alt=""><br/><br/><br/>How can this be fixed?Sat, 22 Aug 2009 17:04:48 Z2009-08-23T18:07:19Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/36ed3919-e93b-401f-80b9-41117cbc26b9http://social.msdn.microsoft.com/Forums/en-US/chess/thread/36ed3919-e93b-401f-80b9-41117cbc26b9Neil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JHow do you specify /detectraces+ and /preemptaccesses+ with attributes?<p>How do you specify /detectraces+ and /preemptaccesses+ with attributes?<br/><br/>I found [TestProperty(&quot;ChessMonitorVolatiles&quot;, &quot;true&quot;)] in a forum post for /volatile+ but I haven't found attributes for /detectraces+ and /preemptaccesses+.<br/><br/>Is there a list of all CHESS attributes?</p>Fri, 21 Aug 2009 23:50:48 Z2009-08-22T04:46:44Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/932d9ac4-5360-4161-a7eb-021b3647a728http://social.msdn.microsoft.com/Forums/en-US/chess/thread/932d9ac4-5360-4161-a7eb-021b3647a728Neil_Jhttp://social.msdn.microsoft.com/Profile/en-US/?user=Neil_JWhy does this blank unit test with [HostType("Chess")] fail?<pre>Why does this blank unit test with [HostType(&quot;Chess&quot;)] fail?<br/> <img src="http://i32.tinypic.com/vym2f.png" alt=""> </pre>Wed, 19 Aug 2009 22:46:23 Z2009-08-23T00:37:18Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/f24f7af7-a00d-469d-af38-99167fc25931http://social.msdn.microsoft.com/Forums/en-US/chess/thread/f24f7af7-a00d-469d-af38-99167fc25931Corneliu Phttp://social.msdn.microsoft.com/Profile/en-US/?user=Corneliu%20Pconcurrencyexplorer - no information available<p>Hi,</p> <p>I would like to see the execution trace using concurrency explorer, but the thread pane display displays &quot;no information available&quot;. As far as I can tell, the sourcefile is compiled to produce debugging information:</p> <p>  cl /LDd /nologo /EHsc /Zi /Oi /MDd /Gm- /W4 /Gs  /D_X86_ /Fefig2.fixed.asplos08.dll /Fdfig2.fixed.asplos08.pdb fig2.fixed.asplos08.cpp  /link  /machine:x86 /debug /debugtype:cv,fixup /release /incremental:no /subsystem:console fig2.fixed.asplos08.cpp<br/>  ..\..\bin\wchess.exe /trace fig2.fixed.asplos08.dll<br/>  ..\..\bin\concurrencyexplorer.exe trace</p> <p>Could you please tell me if there is something I'm doing wrong? Btw, how is concurrencyexplorer supposed to know where is the debugging information, the file &quot;trace&quot; created by wchess does not contain any pointer to the c/object input files.</p> <p>Thank you for help! (sorry for the naive question :)<br/> Corneliu</p>Tue, 07 Jul 2009 17:16:43 Z2009-08-05T19:36:38Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/f52b0a4b-4926-4df0-bda6-ef98ccb41f04http://social.msdn.microsoft.com/Forums/en-US/chess/thread/f52b0a4b-4926-4df0-bda6-ef98ccb41f04Chris Salterhttp://social.msdn.microsoft.com/Profile/en-US/?user=Chris%20SalterCHESS detected livelock -- but no informationI installed CHESS today and set up a unit test covering a pretty basic scenario (spins up a couple threads simulating multiple incoming connections that we need to respond to) and configured it to run under CHESS.  When I run it, it reports a failure and the error message is &quot;CHESS detected livelock&quot;.  That's it.  There's no console information, no further info of any sort.  I tried setting the test params as follows:<div><br></div><div><div>[TestMethod]</div><div>[HostType(&quot;Chess&quot;)]</div><div>[TestProperty(&quot;ChessDebug&quot;, &quot;true&quot;)]</div><div>[TestProperty(&quot;ChessBreak&quot;, &quot;livelock&quot;)]</div><div>public void LoginManyClientsAtOnce()<br></div><div>{</div><div>    ...<br></div><div>}</div><div><br></div><div>I try debugging the test or running it, and either way, the result is the same.  In the CHESS console window that comes up, I can see that an error or exception of some sort is popping up but the window closes down before I have a chance to read it.  If I comment out the CHESS-specific properties to just run the test normally, it runs fine and I get my happy green checkmark.  Uncomment those lines and run it through CHESS, and I get that not-so-helpful error...</div><div><br></div><div>Any suggestions? Is there any log being written anywhere I could grab?  It could easily be something silly like a missing dependency, but I have no way of knowing....</div></div>Thu, 05 Mar 2009 19:47:02 Z2009-07-28T19:10:42Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/78715322-f8a6-4cba-81b5-603712c540c4http://social.msdn.microsoft.com/Forums/en-US/chess/thread/78715322-f8a6-4cba-81b5-603712c540c4Niko Schuessler [MSFT]http://social.msdn.microsoft.com/Profile/en-US/?user=Niko%20Schuessler%20%5bMSFT%5dChessMode Repo -- reports failed but does not break (or give information about break)<p>The test passes w/o HostType(&quot;Chess&quot;) attribute.<br/>When running the test with HostType(&quot;Chess&quot;) I get a failure and paste in the additional attributes.<br/>When I rerun, it says &quot;failed&quot;, but does not honor the breaks and I get no additional information.<br/><br/>This test relies on a publicized version of the DLL -- could that be an issue?<br/><br/>Also, the concurrency explorer doesn't come up as it did in the PDC session video / demo.<br/><br/>Suggestions?</p>Sun, 19 Jul 2009 09:10:54 Z2009-07-19T16:54:06Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/a094eba0-4001-4abe-ab86-98d3022b2c14http://social.msdn.microsoft.com/Forums/en-US/chess/thread/a094eba0-4001-4abe-ab86-98d3022b2c14fuulhttp://social.msdn.microsoft.com/Profile/en-US/?user=fuulCannot pass a GCHandle across AppDomains across AppDomains.Parameter name: handle&quot;Cannot pass a GCHandle across AppDomains across AppDomains&quot; &quot;Parameter name: handle&quot;<br/><br/>Anyone ever get this related to CHESS? There are postings from way back in 2006 but those are regarding TFS and WorkItemStore.. I am using VS 2008 Team Suite with SP1, unit testing with CHESS:<br/><br/>I am implementing Dispose pattern with GC.SupressFinalize... otherwise I am not doing any fancy GC stuff:<br/><br/>&quot;   at System.Runtime.InteropServices.GCHandle.InternalCheckDomain(IntPtr handle)\r\n   at System.Runtime.InteropServices.GCHandle.FromIntPtr(IntPtr value)\r\n   at Microsoft.ManagedChess.ShimSyncManager.Exit(ShimSyncManager* , Int32 code)\r\n   at Microsoft.ManagedChess.ShimSyncManager.ChessWaitOrTimerCallback(Void* lpParameter, Byte TimerOrWaitFired)&quot;Wed, 15 Jul 2009 21:46:40 Z2009-07-17T18:07:21Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/35799344-abc5-4111-9ec7-4b2e012721d0http://social.msdn.microsoft.com/Forums/en-US/chess/thread/35799344-abc5-4111-9ec7-4b2e012721d0raxrajahttp://social.msdn.microsoft.com/Profile/en-US/?user=raxrajaConcurrency explorer minor issueHi,<br/> <br/> I am a newbie to CHESS, thought I would test some parts of our codebase for concurrency issues with it.<br/> <br/> I am running it on my Windows XP box using virtual PC 2007 SP1.<br/> <br/> I wrote a test and ran mchess, and it finds a deadlock (thanks!).<br/> <br/> A minor thing I noticed:<br/> <br/> 1. I open chessboard with chessboard results.xml<br/> 2. I repro the test with tracing by right-clicking...<br/> 3. Then I try to open concurrency explorer by right clicking from results R1 Found Datarace at add_Changed<br/> <br/> However the window opens with an error box and the concurrency explorer in the background keeps flickering with purple and green colors:<br/> <br/> (Note in step 3 if I choose E Deadlock, concurrency explorer  open fine).<br/> <br/> The detailed stack trace in the error box (with heading Concurrency Explorer II)  is:<br/> <br/> --- Start Error Message ---<br/> See the end of this message for details on invoking <br/> just-in-time (JIT) debugging instead of this dialog box.<br/> <br/> ************** Exception Text **************<br/> System.ArgumentOutOfRangeException: InvalidArgument=Value of '1' is not valid for 'index'.<br/> Parameter name: index<br/>    at System.Windows.Forms.ListView.ListViewItemCollection.get_Item(Int32 index)<br/>    at Microsoft.ConcurrencyExplorer.MultiThreadView.listView1_ItemChecked(Object sender, ItemCheckedEventArgs e)<br/>    at System.Windows.Forms.ItemCheckedEventHandler.Invoke(Object sender, ItemCheckedEventArgs e)<br/>    at System.Windows.Forms.ListView.OnItemChecked(ItemCheckedEventArgs e)<br/>    at System.Windows.Forms.ListView.WmReflectNotify(Message&amp; m)<br/>    at System.Windows.Forms.ListView.WndProc(Message&amp; m)<br/>    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)<br/>    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)<br/>    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)<br/> <br/> <br/> ************** Loaded Assemblies **************<br/> mscorlib<br/>     Assembly Version: 2.0.0.0<br/>     Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)<br/>     CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll<br/> ----------------------------------------<br/> ChessBoard<br/>     Assembly Version: 1.0.0.0<br/>     Win32 Version: 1.0.0.0<br/>     CodeBase: file:///C:/Program%20Files/Microsoft%20CHESS/bin/chessboard.exe<br/> ----------------------------------------<br/> System.Windows.Forms<br/>     Assembly Version: 2.0.0.0<br/>     Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)<br/>     CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll<br/> ----------------------------------------<br/> System<br/>     Assembly Version: 2.0.0.0<br/>     Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)<br/>     CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll<br/> ----------------------------------------<br/> System.Drawing<br/>     Assembly Version: 2.0.0.0<br/>     Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)<br/>     CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll<br/> ----------------------------------------<br/> System.Xml.Linq<br/>     Assembly Version: 3.5.0.0<br/>     Win32 Version: 3.5.30729.1 built by: SP<br/>     CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml.Linq/3.5.0.0__b77a5c561934e089/System.Xml.Linq.dll<br/> ----------------------------------------<br/> System.Core<br/>     Assembly Version: 3.5.0.0<br/>     Win32 Version: 3.5.30729.1 built by: SP<br/>     CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll<br/> ----------------------------------------<br/> System.Xml<br/>     Assembly Version: 2.0.0.0<br/>     Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)<br/>     CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll<br/> ----------------------------------------<br/> ConcurrencyExplorer<br/>     Assembly Version: 0.1.30610.2<br/>     Win32 Version: 0.1.30610.2<br/>     CodeBase: file:///C:/Program%20Files/Microsoft%20CHESS/bin/ConcurrencyExplorer.EXE<br/> ----------------------------------------<br/> Microsoft.ManagedChess.MChess<br/>     Assembly Version: 0.1.30610.2<br/>     Win32 Version: <br/>     CodeBase: file:///C:/Program%20Files/Microsoft%20CHESS/bin/Microsoft.ManagedChess.MChess.DLL<br/> ----------------------------------------<br/> <br/> ************** JIT Debugging **************<br/> To enable just-in-time (JIT) debugging, the .config file for this<br/> application or computer (machine.config) must have the<br/> jitDebugging value set in the system.windows.forms section.<br/> The application must also be compiled with debugging<br/> enabled.<br/> <br/> For example:<br/> <br/> &lt;configuration&gt;<br/>     &lt;system.windows.forms jitDebugging=&quot;true&quot; /&gt;<br/> &lt;/configuration&gt;<br/> <br/> When JIT debugging is enabled, any unhandled exception<br/> will be sent to the JIT debugger registered on the computer<br/> rather than be handled by this dialog box.<br/> <br/> --- Start Error Message ---<br/> <br/> If I dismiss the error enough times, eventually the app crashes with:<br/> Unhandled Exception: System.ComponentModel.Win32Exception: Error creating window<br/>  handle.<br/>    at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)<br/>    at System.Windows.Forms.Control.CreateHandle()<br/>    at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)<br/>    at System.Windows.Forms.Control.CreateControl()<br/>    at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)<br/>    at System.Windows.Forms.ButtonBase.OnVisibleChanged(EventArgs e)<br/>    at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)<br/>    at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)<br/>    at System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)<br/>    at System.Windows.Forms.Form.OnVisibleChanged(EventArgs e)<br/>    at System.Windows.Forms.Control.SetVisibleCore(Boolean value)<br/>    at System.Windows.Forms.Form.SetVisibleCore(Boolean value)<br/>    at System.Windows.Forms.Control.set_Visible(Boolean value)<br/>    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 r<br/> eason, ApplicationContext context)<br/>    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason<br/> , ApplicationContext context)<br/>    at System.Windows.Forms.Application.RunDialog(Form form)<br/>    at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)<br/>    at System.Windows.Forms.Form.ShowDialog()<br/>    at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception<br/>  t)<br/>    at System.Windows.Forms.Timer.TimerNativeWindow.OnThreadException(Exception e<br/> )<br/>    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr<br/> wparam, IntPtr lparam)<br/>    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp; msg)<br/>    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.Uns<br/> afeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int3<br/> 2 reason, Int32 pvLoopData)<br/>    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 r<br/> eason, ApplicationContext context)<br/>    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason<br/> , ApplicationContext context)<br/>    at System.Windows.Forms.Application.Run(Form mainForm)<br/>    at Microsoft.ConcurrencyExplorer.StandardView.RunGuiThread()<br/>    at System.Threading.ThreadHelper.ThreadStart_Context(Object state)<br/>    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, C<br/> ontextCallback callback, Object state)<br/>    at System.Threading.ThreadHelper.ThreadStart()<br/> <br/> <br/> Thanks,<br/> Sriram<br/> <br/> <br/> <br/> <br/>Tue, 16 Jun 2009 21:48:12 Z2009-07-08T22:23:50Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/20d62aa2-002c-418b-9779-355c46ec1ab9http://social.msdn.microsoft.com/Forums/en-US/chess/thread/20d62aa2-002c-418b-9779-355c46ec1ab9AmitGhttp://social.msdn.microsoft.com/Profile/en-US/?user=AmitGDebugger doesn't launch with /break:s option<p>Hi team<br/>I had a short email trail with you about this earlier but since the problem is still unresolved I figured I'd post it here.<br/><br/>I ran the BankAccount sample using mchess to see the expected result (returns false). Then, following the instructions in the &quot;bankWithMchess.doc&quot; document, I tried this command:<br/><br/>mchess ChessTest.exe /repro /break:c<br/><br/>This doesn't detect that a debugger is not attached nor does it prompt to attach to a debugger. It outputs a few stack traces (shown below)<br/><br/>Thanks<br/>Amit<br/><br/><br/><br/>ManagedCHESS. Copyright (C) Microsoft Corporation, 2008.<br/>Analyzing ChessTest.exe  ...<br/>user breakpoint requested: <br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break(String message)<br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break()<br/>   at Microsoft.ManagedChess.EREngine.ClrSyncManager.DebugBreak()<br/>   at Microsoft.ManagedChess.ShimSyncManager.DebugBreak(ShimSyncManager* )<br/>   at Chess.SyncVarAccess(UInt32 , UInt32 )<br/>   at Microsoft.ManagedChess.MChessChess.SyncVarAccess(Int32 var, MSyncVarOp op)<br/>   at Microsoft.ManagedChess.EREngine.ClrSyncManager.SyncVarAccess(Object o, MSyncVarOp mop)<br/>   at __Substitutions.System.Threading.Monitor.&lt;&gt;c__DisplayClass2.&lt;TryEnterRaw&gt;b__0(ClrSyncManager manager)<br/>   at Microsoft.ManagedChess.EREngine.Helper.SimpleWrap[T](SimpleDelmanager`1 foo, SimpleDel`1 bar)<br/>   at __Substitutions.System.Threading.Monitor.TryEnterRaw(Object lock, Int32 timeOut, MSyncVarOp operation, String name)<br/>   at __Substitutions.System.Threading.Monitor.Enter(Object lock)<br/>   at Bank.Account.Deposit(Int32 amount)<br/>   at TestBank.ChessTest.Run()<br/>   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct&amp; sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)<br/>   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)<br/>   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)<br/>   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)<br/>   at Microsoft.ManagedChess.EREngine.ChessMain..ctor(MChessOptions m, Assembly a, String tc)<br/>   at Microsoft.ManagedChess.Base.Program.Execute()<br/>   at Microsoft.ManagedChess.Base.Program.Main(String[] args)</p> <p>user breakpoint requested: <br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break(String message)<br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break()<br/>   at Microsoft.ManagedChess.EREngine.ClrSyncManager.DebugBreak()<br/>   at Microsoft.ManagedChess.ShimSyncManager.DebugBreak(ShimSyncManager* )<br/>   at Chess.SyncVarAccess(UInt32 , UInt32 )<br/>   at Microsoft.ManagedChess.MChessChess.SyncVarAccess(Int32 var, MSyncVarOp op)<br/>   at Microsoft.ManagedChess.EREngine.ClrSyncManager.SyncVarAccess(Object o, MSyncVarOp mop)<br/>   at __Substitutions.System.Threading.Monitor.&lt;&gt;c__DisplayClass2.&lt;TryEnterRaw&gt;b__0(ClrSyncManager manager)<br/>   at Microsoft.ManagedChess.EREngine.Helper.SimpleWrap[T](SimpleDelmanager`1 foo, SimpleDel`1 bar)<br/>   at __Substitutions.System.Threading.Monitor.TryEnterRaw(Object lock, Int32 timeOut, MSyncVarOp operation, String name)<br/>   at __Substitutions.System.Threading.Monitor.Enter(Object lock)<br/>   at Bank.Account.Withdraw(Int32 amount)<br/>   at TestBank.ChessTest.&lt;Run&gt;b__0(Object o)<br/>   at Microsoft.ManagedChess.EREngine.Helper.&lt;&gt;c__DisplayClass18.&lt;WrapParamThreadStart&gt;b__17(Object o)<br/>   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)<br/>   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)<br/>   at System.Threading.ThreadHelper.ThreadStart(Object obj)</p> <p>user breakpoint requested: <br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break(String message)<br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break()<br/>   at Microsoft.ManagedChess.EREngine.ClrSyncManager.DebugBreak()<br/>   at Microsoft.ManagedChess.ShimSyncManager.DebugBreak(ShimSyncManager* )<br/>   at Chess.LocalBacktrack()<br/>   at Microsoft.ManagedChess.MChessChess.LocalBacktrack()<br/>   at Microsoft.ManagedChess.EREngine.Helper.&lt;&gt;c__DisplayClassa.&lt;WrapAcquire&gt;b__8(ClrSyncManager manager)<br/>   at Microsoft.ManagedChess.EREngine.Helper.SimpleWrap[T](SimpleDelmanager`1 foo, SimpleDel`1 bar)<br/>   at Microsoft.ManagedChess.EREngine.Helper.WrapAcquire(BlockingAcquire b, NonBlockingAcquire nb, Object o, MSyncVarOp mop, String instrMethod)<br/>   at __Substitutions.System.Threading.Thread.Join(Thread thread)<br/>   at TestBank.ChessTest.Run()<br/>   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct&amp; sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)<br/>   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)<br/>   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)<br/>   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)<br/>   at Microsoft.ManagedChess.EREngine.ChessMain..ctor(MChessOptions m, Assembly a, String tc)<br/>   at Microsoft.ManagedChess.Base.Program.Execute()<br/>   at Microsoft.ManagedChess.Base.Program.Main(String[] args)</p> <p>user breakpoint requested: <br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break(String message)<br/>   at Microsoft.ExtendedReflection.Utilities.Safe.Diagnostics.SafeDebugger.Break()<br/>   at Microsoft.ManagedChess.EREngine.ClrSyncManager.DebugBreak()<br/>   at Microsoft.ManagedChess.ShimSyncManager.DebugBreak(ShimSyncManager* )<br/>   at Chess.TaskEnd()<br/>   at Microsoft.ManagedChess.MChessChess.TaskEnd()<br/>   at Microsoft.ManagedChess.EREngine.Helper.&lt;&gt;c__DisplayClass18.&lt;WrapParamThreadStart&gt;b__17(Object o)<br/>   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)<br/>   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)<br/>   at System.Threading.ThreadHelper.ThreadStart(Object obj)</p> <p>ChessTest.Run returned false.<br/><br/></p>Fri, 29 May 2009 10:19:26 Z2009-07-06T14:07:59Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/663cfbd6-df0a-40c0-a080-8f42e303545chttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/663cfbd6-df0a-40c0-a080-8f42e303545cStrilanchttp://social.msdn.microsoft.com/Profile/en-US/?user=StrilancChess finds an issue with my usage of Threading.Interlocked, but I can't figure out how I'm incorrect.So I have a linked list implementation which allows multiple producers but just one consumer, and doesn't use CAS. I wanted to test if it was incorrect, so I downloaded Chess and tried it out. The test failed, and I used the reproducing facilities to figure out where it is failing. But, from what I can tell, this failure is impossible. It's like Interlocked.Exchange is not behaving atomically or isn't placing memory barriers.<br/> <br/> Here is what I am testing:<br/> <br/> <pre lang="x-c#"> [System.Diagnostics.DebuggerDisplay (&quot;{id}&quot;)] private class Node { public Node next; public readonly int id; public Node(int id) { this.id = id; } } private class LinkedList { public readonly Node head; private Node insertionPoint; public LinkedList() { head = insertionPoint = new Node(0); } public void Insert(int id) { Node newNode = new Node(id); //notice that the value exchanged for insertionPoint is *always new* //therefore, after this next line finishes, oldInsertionPoint != insertionPoint Node oldInsertionPoint = Interlocked.Exchange(ref insertionPoint, newNode); //we may be preempted here; but the new nodes will just go after us //so they'll be implicitely added when we finish oldInsertionPoint.next = newNode; } } [TestMethod()] [HostType(&quot;Chess&quot;)] public void Test() { //prep var list = new LinkedList(); var t = new Thread(() =&gt; { list.Insert(-1); }); //run t.Start(); list.Insert(1); list.Insert(2); //finish t.Join(); int count = 0; for (Node n = list.head; n.next != null; n = n.next) count += 1; Assert.AreEqual(count, 3); } </pre> <br/> Here is what Chess produces for reproduction:<br/> <pre lang="x-c#">[TestProperty(&quot;ChessMode&quot;,&quot;Repro&quot;)] [TestProperty(&quot;ChessBreak&quot;,&quot;BeforePreemption,AfterPreemption&quot;)] #region ChessScheduleString (not human readable) [TestProperty(&quot;ChessScheduleString&quot;,@&quot;bpilaiaaaaaaaaaaaeaaonlnahgabmejjgcfcgcpgnmkhlhpekpfeknhoahekbaiiagabdcenijaeabaommbiimnogjcombngjeh cdcjklckibmkgffggffnggbgeammonjnlmphnohloplnphnohloplnphlkdljneochphnpppdpfmgggeabgmpgmoeknkmjjocbia kkmibpdphohmbpdpcchomnfpodnhpidfpappfpfhhpponplpkgpmdelpppbgpkplkpoflfmbopdpkgdppbppfpephpocllfpedhp pkopjkppjlohpppohpaaldcaoojfhfaaaaaa&quot;)] #endregion</pre> Alright. So let's explore what is happening. The testing thread gets into Insert(1), and preempts on the Interlocked.Exchange line. The worker thread starts, exchanges node -1 for node 0, and finishes. The testing thread comes back, and the problems start. After the Exchange line has finished, both oldInsertionPoint and insertionPoint are set to node -1, but we provided node 1 to the exchange call so we should have exchanged node 1 for node -1, and new insertionPoint should now be node 1.<br/> <br/> Am I mistaken in how I believe Interlocked.Exchange works, or is this some other issue?Wed, 01 Jul 2009 11:01:14 Z2009-07-03T18:08:46Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/d5284d4c-1002-4dc9-a0d1-f0b1c6e95a7chttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/d5284d4c-1002-4dc9-a0d1-f0b1c6e95a7cPraveen Orvakantihttp://social.msdn.microsoft.com/Profile/en-US/?user=Praveen%20OrvakantiChess - Visual Studio SupportHi, Does Chess support only Visual Studio 2008 version, or does it work with previous versions as well? I've VS2005 on my PC. MY application is a single thread graphical application written in c++, which i've parellelized to an extent. Can i use Chess in some way to find the concurrency issues with my application?Thu, 25 Jun 2009 06:33:45 Z2009-07-03T18:05:43Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/f8e8f77c-e3b3-4d65-a497-7c68ed9f344dhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/f8e8f77c-e3b3-4d65-a497-7c68ed9f344dbaudouishttp://social.msdn.microsoft.com/Profile/en-US/?user=baudouisCHESS for non-Windows platforms<span style="font-size:x-small;font-family:Lucida Sans">Hi,<br/><br/>i discovered CHESS recently and it seems to me really interesting.<br/>I'm currently working on mobile phone platform and we are integrating complex software onto a SMP platform. Unfortunately the OS used is not Windows. Do you know if anybody already tried to port CHESS on other OSes?<br/><br/>Thanks in advance.</span>Fri, 03 Jul 2009 08:21:01 Z2009-07-03T18:04:33Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/28055160-6abe-494f-b72e-006d78eeda26http://social.msdn.microsoft.com/Forums/en-US/chess/thread/28055160-6abe-494f-b72e-006d78eeda26AmitGhttp://social.msdn.microsoft.com/Profile/en-US/?user=AmitGFeedback on the new version of ChessHi,<br/><br/>I've been collating some notes on the new version of Chess, so here it goes:<br/><br/>Chessboard:<br/><ol> <li>Chessboard very useful - I especially like the cumulative parameters support. On the whole it makes mchess much more usable.</li> <li>Chessboard uses up nearly 50% CPU when idle</li> <li>Chessboard refreshes the stdout and stderr at a regular interval when running a test. However, it would be nice if it refreshed once again, after the test is complete so that it flushes the remaining data into the UI. Not a big deal, since I can just hit the refresh button.</li> <li>It doesn't look like Chessboard supports the /continue option.</li> <li>Once in a while I get this exception from Chessboard: <pre>System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.ThrowHelper.ThrowKeyNotFoundException() at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at ChessBoard.TaskList.model_SelectionUpdateEvt(State t, State s) at ChessBoard.Handler`2.Invoke(T t, S s) at ChessBoard.Model.SelectionUpdateNotify(State previous, State current) at ChessBoard.Selection.Update(Object sender, XElement xelement, Boolean doubleclick) at ChessBoard.Explorer.Explorer_Enter(Object sender, EventArgs e) at System.Windows.Forms.Control.OnEnter(EventArgs e) at System.Windows.Forms.Control.NotifyEnter() at System.Windows.Forms.ContainerControl.UpdateFocusedControl() </pre> </li> <li>Selecting &quot;Repeat test-&gt;With Bounds-&gt;5 seconds&quot; gives the message &quot;Unrecognized argument /timeout:5&quot;. </li> <li>Strictly nice-to-have : MRU list of testlists</li> </ol> <p>mchess:</p> <ol> <li>Does the /logging argument do more than just printing the .NET framework version?</li> <li>The /showprogress argument doesn't really print anything to indicate how many schedules are remaining. Maybe this only works for really long-running tests?</li> <li>The /di argument is very very useful! Can it also print the thread-ids/names that are included in the profiling? Also, when it prints out the list of types, can it be sorted? In some of my tests this list tends to be pretty big.</li> <li>I've also seen mchess trigger the assertion in vector, that someone's already posted about</li> <li>In a future release can you also add support for Thread.Abort() ? It claims that it's not a good practice to use it but nevertheless it's in our code so would be nice to have it supported.</li> <li>Regarding Livelocks - repro+trace goes into an infinite loop (naturally, since its a livelock). It would be nice if mchess can detect and support viewing the trace in Concurrency Explorer. For bonus points it could also print the repeating stack trace (although I can figure this out by looking at the trace file)</li> <li>This may or may not be possible - I have some tests that require long-running background threads and singleton objects that don't sit well with multiple iterations of the Run() method. It would be nice to have an option to run each iteration in a new AppDomain. </li> </ol> <p>Misc:<br/></p> <ol> <li>In the Chessworkflow.doc document the example specifies /ia:d1.dll whereas it should be /ia:d1</li> <li>ConcurrencyExplorer - I think I read somewhere that the &quot;colorbox&quot; style was used only internally during chess development. If you're planning to get rid of it in future versions, please keep it! I often find it useful, especially since it syncs with the source-code view.</li> </ol> <p><br/>Overall, I've found the new version a big improvement, so thanks for your hard work!<br/><br/>--Amit</p>Wed, 17 Jun 2009 08:58:50 Z2009-07-02T23:47:20Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/e19e2f9f-3023-4457-8ca8-57746bd9817bhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/e19e2f9f-3023-4457-8ca8-57746bd9817bJohanw1http://social.msdn.microsoft.com/Profile/en-US/?user=Johanw1CHESS should handle config files correctly.I'm disappointed that the effort wasn't done on fixing the loading of config files correctly. This in my mind is the most important bug that makes the whole app useless.Mon, 15 Jun 2009 18:27:29 Z2009-07-02T23:46:43Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/9ab0445e-7037-4cb1-90b4-8cf8fdd2ba86http://social.msdn.microsoft.com/Forums/en-US/chess/thread/9ab0445e-7037-4cb1-90b4-8cf8fdd2ba86raxrajahttp://social.msdn.microsoft.com/Profile/en-US/?user=raxrajaconcurrency explorerA.<br/> Chess found a possibility of datarace and a deadlock in code:<br/> 1. Found data race at add_Changed:NONE(0)<br/> 2. Deadlock<br/> <br/> I am not interested in the datarace for now and want to concentrate on the deadlock. So when I right click and try to reproduce with trace, it just runs to 1. and does not reproduce the deadlock - which I want to view in concurrency explorer. Guess this might be related to another minor issue I reported for chessboard/concurrency explorer.<br/> <br/> B.<br/> Along with the concurrency explorer, in case a test fails with deadlock, would it be possible to present a simple matrix showing:<br/> XAxis: Threads (with whatever identifier)<br/> YAxis: Resources involved<br/> <br/> In the cell itself, you mark, is the thread waiting on the resource (W) or locked on the resource (L). I guess we are not interested in threads not involved, maybe they can be hidden from this view by default.<br/> <br/> Double clicking on a cells could open up whatever representation of callstack the tool maintains for that thread at the point of time of deadlock.<br/> <br/> I can get all this info by breaking into the debugger and watching the threads/callstacks, but an easy to see diagram may be helpful if it could be generated in the chess tool itself. It is easy to show others the issue too :)Wed, 24 Jun 2009 18:10:27 Z2009-07-02T23:45:53Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/ae4f6fc7-83ea-4c99-83fb-afdc3b48530fhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/ae4f6fc7-83ea-4c99-83fb-afdc3b48530fTom Ballhttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20BallMinor Release v0.1.30626.0, 06/26/2009<p class=MsoNormal style="margin:0in 0in 0pt"><strong><span style="font-family:'Georgia','serif';color:black;font-size:16.5pt">v0.1.30626.0, 06/26/2009<br/></span></strong><span style="color:#1f497d"></span></p> <p class=MsoNormal style="margin:0in 0in 0pt"><span style="font-family:Calibri;font-size:small"><br/>Available at <a href="http://research.microsoft.com/en-us/projects/chess/download.aspx">http://research.microsoft.com/en-us/projects/chess/download.aspx</a><br/> </span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in"><span style="font-family:Symbol"><span style=""><span style="font-size:small">·</span><span style="font:7pt &quot;Times New Roman&quot;">         </span></span></span><span style="font-family:Calibri;font-size:small">Added </span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">1.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">Support for config files (CHESS creates a separate AppDomain to run the CHESS test in when a config file is present)</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">2.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">/maxexecsteps:N option to mchess</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">3.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">/dontpreemptmethod:M option</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">4.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">Dekker example to Samples</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">5.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">SDK material (headers)</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in"><span style="font-family:Symbol"><span style=""><span style="font-size:small">·</span><span style="font:7pt &quot;Times New Roman&quot;">         </span></span></span><span style="font-family:Calibri;font-size:small">Fixed </span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">1.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">Problem with Interlocked.Exchange</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">2.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">Multiple executions in a trace bug</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">3.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">'Race' on script-initiated window-closing in <span style="color:#1f497d">C</span>hess<span style="color:#1f497d">B</span>oard</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">4.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">BankAccount testlist.xml file</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 0.5in"><span style="font-family:Symbol"><span style=""><span style="font-size:small">·</span><span style="font:7pt &quot;Times New Roman&quot;">         </span></span></span><span style="font-family:Calibri;font-size:small">Misc.</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">1.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">Optimized /dontpreemptX implementation</span></p> <p class=MsoListParagraph style="text-indent:-0.25in;margin:0in 0in 0pt 1in;tab-stops:list 1.0in"><span style=""><span style=""><span style="font-family:Calibri;font-size:small">2.</span><span style="font:7pt &quot;Times New Roman&quot;">       </span></span></span><span style="font-family:Calibri;font-size:small">Sort the output of /diagnose</span></p>Thu, 02 Jul 2009 23:42:50 Z2009-07-02T23:43:43Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/9350dad2-f46b-4839-b4bd-2d179ca3ee2dhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/9350dad2-f46b-4839-b4bd-2d179ca3ee2dChandra Bhttp://social.msdn.microsoft.com/Profile/en-US/?user=Chandra%20BCHESS and COMHi,<br/><br/>Does chess work with MTA COM components?Mon, 29 Jun 2009 15:13:23 Z2009-07-01T14:33:06Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/c67291df-7416-4ed3-b4a6-bf3ad8f54e17http://social.msdn.microsoft.com/Forums/en-US/chess/thread/c67291df-7416-4ed3-b4a6-bf3ad8f54e17Rainer Hilmerhttp://social.msdn.microsoft.com/Profile/en-US/?user=Rainer%20HilmerChessboard crashes<p>Hi,<br/>i was just roaming through the docs and found Chessboard. I tried to start it as recommended but it crashes immediately. I use Windows Vista Ultimate 32bit with an admin account. What follows is a copy and paste from the console window:<br/><br/>Setting environment for using Microsoft Visual Studio 2008 x86 tools.</p> <p>c:\Program Files\Microsoft Visual Studio 9.0\VC&gt;cd \</p> <p>c:\&gt;cd I:\Developer\VS2008\Projects\Demos\Microsoft Research\ChessSamples\Sample<br/>s\Managed\BankAccount</p> <p>c:\&gt;chessboard.exe</p> <p>Unbehandelte Ausnahme: System.UnauthorizedAccessException: Der Zugriff auf den P<br/>fad &quot;c:\session.xml&quot; wurde verweigert.<br/>   bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)<br/>   bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access,<br/>Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions<br/>options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)<br/>   bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,<br/> FileShare share)<br/>   bei System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings sett<br/>ings)<br/>   bei System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options)<br/>   bei System.Xml.Linq.XDocument.Save(String fileName)<br/>   bei ChessBoard.Session..ctor(Model model, FileInfo sessionfile)<br/>   bei ChessBoard.Model.StartSession(FileInfo sessionfile, IEnumerable`1 batchco<br/>mmands)<br/>   bei ChessBoard.Program.Main(String[] args)</p> <p>c:\&gt;</p><hr class="sig">Greetings, CyronSun, 28 Jun 2009 11:08:29 Z2009-06-29T18:01:03Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/03068351-d166-48d3-a667-f73b7f9e859dhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/03068351-d166-48d3-a667-f73b7f9e859dAndrew Lowryhttp://social.msdn.microsoft.com/Profile/en-US/?user=Andrew%20LowryCan a get more information than "Test Failed"Hi,<br/><br/>Just moved to the latest version of Chess, and now instead of getting a description of the unit test failure I just get &quot;Test Failed&quot;.<br/><br/>I tried it on this very simple test:<br/><br/><br/>        ///&lt;summary&gt;<br/>        /// A test for Start<br/>        ///&lt;/summary&gt;<br/>        [TestMethod()]<br/>        [Timeout(10000)]<br/>        [HostType(&quot;Chess&quot;)]<br/>        public void ExecuteStandardTest()<br/>        {<br/>            Assert.AreEqual(true, false);<br/>        }<br/><br/>How can I get a little more information than this?<br/><br/>Without using Chess I get: &quot;Assert.AreEqual failed. Expected:&lt;True&gt;. Actual:&lt;False&gt;.&quot;  and a stack trace.<br/><br/>Obviously in this simple example it not much of a problem.  But my real unit test are much more complex.<br/><br/>Thanks<br/><br/>AndyThu, 25 Jun 2009 18:18:59 Z2009-06-25T18:43:54Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/56288005-4382-4215-9e56-bcaa99fda117http://social.msdn.microsoft.com/Forums/en-US/chess/thread/56288005-4382-4215-9e56-bcaa99fda117raxrajahttp://social.msdn.microsoft.com/Profile/en-US/?user=raxrajaDebug assertion failed - mchessCHESS found a deadlock in some code I am looking at.<br/> <br/> So I checked that there is some part of the code where an object which is being locked is locked again within this code (basically a bug), but when I make some changes in the code for this (basically not a fix, I just commented the inner lock on the same object out), Mchess gives this assert when run the test:<br/> <br/> ----<br/> Microsoft Visual C++ Debug Library<br/> <br/> Debug Assertion Failed!<br/> <br/> Program: ...ram File\Microsoft Chess\bin\Microsot.ManagedChess.Base.exe<br/> File: C:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector<br/> Line: 764<br/> <br/> Expression: vector subscript out of range<br/> etc.<br/> ----<br/> <br/> This error itself is not deterministic though - sometimes it runs and find the new deadlock, sometimes it shows this error.<br/> <br/> (Is there an image attach on the forum? Thanks)<br/> <br/> Sriram<br/> <br/> <br/> <br/>Tue, 16 Jun 2009 23:09:22 Z2009-06-20T04:29:47Zhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/693cfbf9-3ed5-44ef-a96a-b71e0f8fcacfhttp://social.msdn.microsoft.com/Forums/en-US/chess/thread/693cfbf9-3ed5-44ef-a96a-b71e0f8fcacfAmitGhttp://social.msdn.microsoft.com/Profile/en-US/?user=AmitGInstrumenting code running in a separate AppDomainHi,<br/>Does Chess recognize and instrument code that is dynamically loaded and run in a separate AppDomain ? In other words, if I create a new AppDomain in the Run() method, execute a method in the new domain that creates threads, will Chess instrument these threads? <br/><br/>Thanks,<br/>-AmitThu, 18 Jun 2009 16:28:09 Z2009-06-19T10:49:25Z