<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fooling Around &#187; debugger</title>
	<atom:link href="http://alax.info/blog/tag/debugger/feed" rel="self" type="application/rss+xml" />
	<link>http://alax.info/blog</link>
	<description>// Software Production Line</description>
	<lastBuildDate>Fri, 03 Feb 2012 22:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>LogProcessExceptions: Minidumps on User Request</title>
		<link>http://alax.info/blog/1248</link>
		<comments>http://alax.info/blog/1248#comments</comments>
		<pubDate>Tue, 19 Jul 2011 14:20:57 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Seriously]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[.DMP]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[minidump]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1248</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1248" title="LogProcessExceptions: Minidumps on User Request"></a>An updated version of LogProcessExceptions utility is given an additional option to create minidump .DMP files for debugged process on user request. This is in particular useful in conjunction with flag choices (on the previous page of the wizard). Partial &#8230;<p class="read-more"><a href="http://alax.info/blog/1248">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1248" title="LogProcessExceptions: Minidumps on User Request"></a><p>An updated version of <a href="http://alax.info/blog/1211">LogProcessExceptions</a> utility is given an additional option to create <a href="http://msdn.microsoft.com/en-us/library/d5zhxt22.aspx">minidump .DMP files</a> for debugged process on user request. This is in particular useful in conjunction with flag choices (on the previous page of the wizard).</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/07/Image0032.png"><img class="alignnone size-full wp-image-1249" title="Minidump Creation Link" src="http://alax.info/blog/wp-content/uploads/2011/07/Image0032.png" alt="" width="513" height="400" /></a></p>
<p>Partial Visual C++ .NET 2010 source code is <a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/LogProcessExceptions">available from SVN</a>, release binary included (<a href="http://www.assembla.com/code/roatl-utilities/subversion/nodes/trunk/LogProcessExceptions/_Bin/Win32/Release/LogProcessExceptions.exe?format=raw">Win32</a>, <a href="http://www.assembla.com/code/roatl-utilities/subversion/nodes/trunk/LogProcessExceptions/_Bin/x64/Release/LogProcessExceptions.exe?format=raw">x64</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1248/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LogProcessExceptions: Automatically Create Minidump Files on C++ Exception in Monitored Process</title>
		<link>http://alax.info/blog/1211</link>
		<comments>http://alax.info/blog/1211#comments</comments>
		<pubDate>Wed, 18 May 2011 16:47:41 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Seriously]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[.DMP]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[minidump]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1211</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1211" title="LogProcessExceptions: Automatically Create Minidump Files on C++ Exception in Monitored Process"></a>LogProcessExceptions utility implements a very basic debugger which attaches (see DebugActiveProcess on MSDN) to a running process and monitors its exceptions. Once exception takes place the utility creates a minidump file for the process (see MiniDumpWriteDump on MSDN) so that &#8230;<p class="read-more"><a href="http://alax.info/blog/1211">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1211" title="LogProcessExceptions: Automatically Create Minidump Files on C++ Exception in Monitored Process"></a><p>LogProcessExceptions utility implements a very basic debugger which attaches (see <a href="http://msdn.microsoft.com/en-us/library/ms679295%28VS.85%29.aspx">DebugActiveProcess</a> on MSDN) to a running process and monitors its exceptions. Once exception takes place the utility creates a minidump file for the process (see <a href="http://msdn.microsoft.com/en-us/library/ms680360%28VS.85%29.aspx">MiniDumpWriteDump</a> on MSDN) so that exception condition could be investigated off-site using debugger.</p>
<p>If you throw C++ exceptions in your C++ code in exceptional cases which indicate necessity to log the condition and possibly check it later, the utility will get the vital information for the application running at production location in environment without fully featured debugger (note that the utility is a simple download-and-run &#8220;wizard&#8221; style application, with no installation required), or will simply track the error letting the application continue execution without pretty much of an interruption.</p>
<p>The tool will prompt for debuggee process, and follow with minidump type choices and the debugging operation.</p>
<p><img class="alignnone size-full wp-image-1212" title="Log Process Exceptions - Processes" src="http://alax.info/blog/wp-content/uploads/2011/05/Image001.png" alt="" width="513" height="400" /></p>
<p><span id="more-1211"></span></p>
<p><img class="alignnone size-full wp-image-1213" title="Log Process Exceptions - Minidupm Type" src="http://alax.info/blog/wp-content/uploads/2011/05/Image0031.png" alt="" width="513" height="400" /> <img class="alignnone size-full wp-image-1214" title="Log Process Exceptions - Operation" src="http://alax.info/blog/wp-content/uploads/2011/05/Image0041.png" alt="" width="513" height="400" /></p>
<p>Minidump files are created automatically with the name file including:</p>
<ul>
<li>Excecutable Name</li>
<li>Process Identifier</li>
<li>Ordinal Number</li>
<li>Exception Code</li>
<li>C++/ATL Exception HRESULT Code (esp. for <a href="http://msdn.microsoft.com/en-us/library/9b1a94tx%28VS.80%29.aspx">CAtlException</a> exceptions)</li>
</ul>
<p>The utility is expected to work with Windows XP operating system and more recent.</p>
<p>Partial Visual C++ .NET 2010 source code is <a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/LogProcessExceptions">available  from SVN</a>, release binary included (<a href="http://www.assembla.com/code/roatl-utilities/subversion/nodes/trunk/LogProcessExceptions/_Bin/Win32/Release/LogProcessExceptions.exe?format=raw">Win32</a>,  <a href="http://www.assembla.com/code/roatl-utilities/subversion/nodes/trunk/LogProcessExceptions/_Bin/x64/Release/LogProcessExceptions.exe?format=raw">x64</a>).</p>
<p>Artwork credits: <a href="http://cristoildiablo.deviantart.com/">http://cristoildiablo.deviantart.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1211/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ahead Nero&#8217;s NeResize DirectShow Filter</title>
		<link>http://alax.info/blog/967</link>
		<comments>http://alax.info/blog/967#comments</comments>
		<pubDate>Mon, 29 Jun 2009 22:34:26 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Seriously]]></category>
		<category><![CDATA[access violation]]></category>
		<category><![CDATA[ahead]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[crap]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[NeResize]]></category>
		<category><![CDATA[nero]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=967</guid>
		<description><![CDATA[<a href="http://alax.info/blog/967" title="Ahead Nero&#039;s NeResize DirectShow Filter"></a>Another example of a negligence with a cost of incompatibility and enormous amount of support time. Ahead Nero installs a number of DirectShow filters into $(Program Files)\Common Files\Ahead\DSFilter directory. One of the files is NeResize.ax and it hosts a Nero &#8230;<p class="read-more"><a href="http://alax.info/blog/967">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/967" title="Ahead Nero&#039;s NeResize DirectShow Filter"></a><p>Another example of a negligence with a cost of incompatibility and enormous amount of support time. Ahead Nero installs a number of DirectShow filters into <em>$(Program Files)\Common Files\Ahead\DSFilter</em> directory. One of the files is <em>NeResize.ax</em> and it hosts a <em>Nero Resize</em> filter. Let us take a closer look:</p>
<p>CLSID: <strong>{30002E0C-C574-481E-A5DE-90AE54A79E10}</strong> (note that Nero 8 ships the same buggy stuff with new CLSID of <strong>{3D0A27C9-B4D6-487B-AFE4-E3CABD4B81F9}</strong><em> &#8211; 11.05.2010</em>)<br />
Merit: <strong>0&#215;00400000</strong> (<a href="http://msdn.microsoft.com/en-us/library/dd388793(VS.85).aspx">MERIT_UNLIKELY</a>)<br />
Input Pin&#8217;s Media Type: major type GUID_NULL, subtype GUID_NULL<br />
Output Pin&#8217;s Media Type: major type GUID_NULL, subtype GUID_NULL</p>
<p>The filter is clearly a video filter:</p>
<p><img class="alignnone size-full wp-image-969" title="Ahead Nero Resize Filter's Property Page" src="http://alax.info/blog/wp-content/uploads/2009/06/29-image001.png" alt="Ahead Nero Resize Filter's Property Page" width="376" height="292" /></p>
<p>So the filter register itself under a merit that allows taking it during <a href="http://msdn.microsoft.com/en-us/library/dd390342(VS.85).aspx">Intelligent Connect</a>, it registers using media type wildcard which is clearly widely than the filter can affectively operate with and the most interesting part is: with certain video media types the filter crashes (memory access violation) during pin connection negotiation process. That is, inaccurate filter <span style="text-decoration: underline;">may be crashing third party software it has nothing to deal with at all</span>.</p>
<pre>*** Unhandled Exception
Process: 0x000001d4, Thread: 0x00000ce4, Date: 6/29/2009, Time: 11:20:56 AM, Application: C:\Program Files\...
Module: C:\..., Product Version: 1.7.1.1, File Version: 1.7.1.20014, File Time: 23.06.2009, 19:02
Code: 0xc0000005, Flags: 0x00000000, Address: 0x05fc6c65
Parameters: 0x00000001, 0x15be9030

** Call Stack
NeResize!05fc6c65 DllUnregisterServer +21909 @05fc0000
NeResize!05fc7888 DllUnregisterServer +25016 @05fc0000
NeResize!05fc7204 DllUnregisterServer +23348 @05fc0000</pre>
<p>Additionally to that the filter does not allow its insertion in debugging environment, and it seems even with Visual Studio running without a debugging session active. Which means that developer may be unaware of issues until incompatibility comes up at a later stage such as testing, or at production site.</p>
<p>It is not the first Nero filter which is bringing real problems. Basically any user who want to keep his system far from issues while still having Nero installed, needs to do find <em>$(Program Files)\Common Files\Ahead\DSFilter</em> directory and immediately rename it to some <em>~DSFilter</em> in order to invalidate all Nero filters registration.</p>
<p>A few quotes from <a href="http://msdn.microsoft.com/en-us/library/dd388793(VS.85).aspx">Guidelines for Registering Filters</a>:</p>
<p style="padding-left: 30px;">Avoid specifying MEDIATYPE_None, MEDIASUBTYPE_None, or GUID_NULL in the <a id="ctl00_MTContentSelector1_mainContentContainer_ctl04" onclick="javascript:Track('ctl00_MTContentSelector1_mainContentContainer_ctl00|ctl00_MTContentSelector1_mainContentContainer_ctl04',this);" href="http://msdn.microsoft.com/en-us/library/dd373438%28VS.85%29.aspx"><strong>AMOVIESETUP_MEDIATYPE</strong></a> information for a pin. <strong>IFilterMapper2</strong> treats these as wildcards, which can slow the graph-building process.</p>
<p>Nero Resize does specify and obviously slows the system down.</p>
<p style="padding-left: 30px;">Choose the lowest merit value possible. Here are some guidelines:<br />
&#8230;<br />
Special purpose filter; any filter that is created directly by the application: MERIT_DO_NOT_USE</p>
<p>Nero Resize uses higher value and thus affects proper applications.</p>
<p>Software developers will be safer to prevent from <a href="http://msdn.microsoft.com/en-us/library/dd373399(VS.85).aspx">DirectShow Filter Graph Manager</a> considering the buggy filter to be used during <a href="http://msdn.microsoft.com/en-us/library/dd390342(VS.85).aspx">Intelligent Connect</a> by implementing <a href="http://msdn.microsoft.com/en-us/library/dd389376(VS.85).aspx">IAMGraphBuilderCallback</a> interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/967/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft Visual Studio has encountered an internal error.</title>
		<link>http://alax.info/blog/730</link>
		<comments>http://alax.info/blog/730#comments</comments>
		<pubDate>Thu, 04 Dec 2008 22:43:37 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Seriously]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=730</guid>
		<description><![CDATA[<a href="http://alax.info/blog/730" title="Microsoft Visual Studio has encountered an internal error."></a>A picture for relaxation: It is probably a fresh bug there as it seems to be happening far more frequently with version 2008 (with ot without SP1) as compared to 2005. Luckily it has no effect to code being written, &#8230;<p class="read-more"><a href="http://alax.info/blog/730">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/730" title="Microsoft Visual Studio has encountered an internal error."></a><p>A picture for relaxation:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2008/12/04-image001.png"><img class="alignnone size-full wp-image-729" title="Visual Studio .NET Crash" src="http://alax.info/blog/wp-content/uploads/2008/12/04-image001.png" alt="" width="500" height="288" /></a></p>
<p>It is probably a fresh bug there as it seems to be happening far more frequently with version 2008 (with ot without SP1) as compared to 2005. Luckily it has no effect to code being written, the problem clearly relates to debugger. At some point there is a crash, though which the IDE perfectly survives but longer can start a new debugging session until IDE is entirely restarted.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/730/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

