<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Comment Feed for Channel 9 - Sebastian Burckhardt - Data Race Detection with CHESS</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS/RSS"></atom:link>
	<image>
		<url>http://ecn.channel9.msdn.com/o9/previewImages/100/473112_100x75.jpg</url>
		<title>Channel 9 - Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<link></link>
	</image>
	<description>Sebastian Burckhardt&amp;nbsp;gives a short tutorial of some of the&amp;nbsp;new
 features of 
CHESS: data race detection and ChessBoard. CHESS is a concurrency testing tool takes a concurrent unit&amp;nbsp;test and executes it with different thread&amp;nbsp;schedules. Sebastian explains us how CHESS can detect data races, a very subtle kind of concurrency
 bug. You&#39;ll also learn how to drill into concurrency issues using the ChessBoard, a little application designed to drill and investigate concurrent tests.


CHESS home page: 
http://research.microsoft.com/en-us/projects/chess/ CHESS forums: 
http://social.msdn.microsoft.com/Forums/en-us/chess/threads/ 
The&amp;nbsp;Research in Software Engineering team (RiSE) coordinates Microsoft&#39;s research in Software Engineering in Redmond, USA.
</description>
	<link></link>
	<language>en</language>
	<pubDate>Wed, 19 Jun 2013 18:20:30 GMT</pubDate>
	<lastBuildDate>Wed, 19 Jun 2013 18:20:30 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<item>
		<title>Re: Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<description>
			<![CDATA[
<p>cool stuff <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>but im a little bit confused.. why didnt the old chess find this bug? if it ran with all the combinations of context switches, wouldnt the assert&nbsp;be false?</p>
<p>posted by aL_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633806529400000000</link>
		<pubDate>Mon, 15 Jun 2009 08:55:40 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633806529400000000</guid>
		<dc:creator>aL_</dc:creator>
	</item>
	<item>
		<title>Re: Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<description>
			<![CDATA[
<p>CHESS only places&nbsp;schedule points&nbsp;at synchronization points (calls to System.Threading API, volatiles, interlocked increments). So you need data race detection to uncover more bugs. CHESS now has an option /preemptaccesses that places schedule points before
 every read/write. However, as currently implemented, this has high overhead.</p>
<p>-- Tom</p>
<p>posted by Tom ball</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633806663870000000</link>
		<pubDate>Mon, 15 Jun 2009 12:39:47 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633806663870000000</guid>
		<dc:creator>Tom ball</dc:creator>
	</item>
	<item>
		<title>Re: Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<description>
			<![CDATA[
<div id="ctl00_MainPlaceHolder_EntryList_ctl04_EntryTemplate_BodyLabel">
<p>I spent a couple of time to build a good, working solution for .NET&nbsp;2.0 / 3.5,&nbsp;so you do not need to wait and install .NET 4.0</p>
<p>Can you test it using CHESS?</p>
<p>Abstract:</p>
<pre><div><div><p>&nbsp;&nbsp;&nbsp; public abstract class PluginBaseWorkItem&lt;T&gt;</p><p>&nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; private static object _sync = new object();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; private T _item;</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public T Item { get { return _item; } }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void Run()</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; List&lt;WaitHandle&gt; _waitHandles = new List&lt;WaitHandle&gt;();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; TaskCount; i&#43;&#43;)</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _waitHandles.Add(new AutoResetEvent(false));</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; TaskCount; i&#43;&#43;)</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessHandle), _waitHandles[i]);</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; WaitHandle.WaitAll(_waitHandles.ToArray());</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protected abstract void ProcessItem();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protected void SetValue(T item)</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _item = item;</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protected T GetValue()</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return _item;</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protected virtual int TaskCount { get { return Environment.ProcessorCount; } }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; private void Process()</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ProcessItem();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; private void ProcessHandle(object sync)</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AutoResetEvent waitHandle = (AutoResetEvent)sync;</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Process();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; waitHandle.Set();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; }</p></div></div><pre>&nbsp;</pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; private class WorkItem : PluginBaseWorkItem&lt;Puzzle&gt;</p>
<pre><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protected override void ProcessItem()</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DlxEngine engine = new DlxEngine();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Puzzle value = engine.Generate(20);</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; lock (this)</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Puzzle item = GetValue();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (item == null || value.Rating &gt; item.Rating)</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SetValue(value);</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public static IPuzzle Create()</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; WorkItem workItem = new WorkItem();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; workItem.Run();</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IPuzzle puzzle = workItem.Item;</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return Create(puzzle.Text, puzzle.Seed);</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p></pre>
</pre>
</div>
<p>posted by hack2roothotmai</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633811104980000000</link>
		<pubDate>Sat, 20 Jun 2009 16:01:38 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633811104980000000</guid>
		<dc:creator>hack2roothotmai</dc:creator>
	</item>
	<item>
		<title>Re: Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<description>
			<![CDATA[
<p>Excellent post! Great use of Picture-in-picture technology. Improves user experience a lot</p>
<p>and</p>
<p>seems to be a bug in the comment recording. my comment box showed up blank while the comment showed up under hack2roothotmai??!!</p>
<p>posted by garrettvm</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633811831920000000</link>
		<pubDate>Sun, 21 Jun 2009 12:13:12 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633811831920000000</guid>
		<dc:creator>garrettvm</dc:creator>
	</item>
	<item>
		<title>Re: Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<description>
			<![CDATA[
<p>I tested it, it works !<br>
Many thanks for this excellent post !!!<br>
--</p>
<p>posted by agence</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633824720630000000</link>
		<pubDate>Mon, 06 Jul 2009 10:14:23 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633824720630000000</guid>
		<dc:creator>agence</dc:creator>
	</item>
	<item>
		<title>Re: Sebastian Burckhardt - Data Race Detection with CHESS</title>
		<description>
			<![CDATA[
<p>Good job .<a href="http://www.poker-attitude.com">.</a>. thank you for this help.</p>
<p>posted by michel24</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633909794610000000</link>
		<pubDate>Mon, 12 Oct 2009 21:24:21 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/Peli/Data-Race-Detection-with-CHESS#c633909794610000000</guid>
		<dc:creator>michel24</dc:creator>
	</item>
</channel>
</rss>