<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: ThreadNinja: Finding Rogue POSIX Threads</title>
	<atom:link href="http://tdistler.com/2010/07/08/threadninja-finding-rogue-posix-threads/feed" rel="self" type="application/rss+xml" />
	<link>http://tdistler.com/2010/07/08/threadninja-finding-rogue-posix-threads</link>
	<description>&#34;To err is human, but to really foul things up you need a computer.”</description>
	<lastBuildDate>Wed, 30 Nov 2011 07:44:27 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Tom</title>
		<link>http://tdistler.com/2010/07/08/threadninja-finding-rogue-posix-threads/comment-page-1#comment-16101</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Wed, 13 Apr 2011 16:33:08 +0000</pubDate>
		<guid isPermaLink="false">http://tdistler.com/?p=277#comment-16101</guid>
		<description>Thanks Jeff! I&#039;ll take a look.</description>
		<content:encoded><![CDATA[<p>Thanks Jeff! I&#8217;ll take a look.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Frontz</title>
		<link>http://tdistler.com/2010/07/08/threadninja-finding-rogue-posix-threads/comment-page-1#comment-16100</link>
		<dc:creator>Jeff Frontz</dc:creator>
		<pubDate>Tue, 12 Apr 2011 19:23:50 +0000</pubDate>
		<guid isPermaLink="false">http://tdistler.com/?p=277#comment-16100</guid>
		<description>Not sure which kernel (or thread implementation) this was written for, but under Linux 2.6.23, the pthread_t ID value can be reused.  For processes that create/destroy a lot of threads, this makes the first assert() in DataCollection::AddThread() fail pretty quickly.

Adding

       _threadInfoMap.erase(threadId);

at the end of DataCollection::CloseThread() seems to help, except when there is truly a rogue thread and then the assert() fails.</description>
		<content:encoded><![CDATA[<p>Not sure which kernel (or thread implementation) this was written for, but under Linux 2.6.23, the pthread_t ID value can be reused.  For processes that create/destroy a lot of threads, this makes the first assert() in DataCollection::AddThread() fail pretty quickly.</p>
<p>Adding</p>
<p>       _threadInfoMap.erase(threadId);</p>
<p>at the end of DataCollection::CloseThread() seems to help, except when there is truly a rogue thread and then the assert() fails.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

