<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sat, 26 May 2012 04:11:33 -0700 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/intel-parallel-inspector-kb/type/compatibility/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles Feed</title>
    <link>http://software.intel.com/en-us/articles/intel-parallel-inspector-kb/type/compatibility/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Using the Microsoft* debug heap manager with memory error analysis of Intel® Parallel Inspector</title>
      <description><![CDATA[ <p>The Microsoft C runtime debug heap manager tracks/checks/reports a subset of the memory usage that memory error analysis of Intel Parallel Inspector tracks/checks/reports. </p>
<p>Using both of these technologies at the same time has the following implications...</p>
<ul>
<li>Binaries under analysis of Inspector may be interrupted by dialogue boxes 
<ul>
<li>Press the "ignore" button- execution will continue (recommended action) - note: you may have to press "ignore" multiple times - as by default this dialogue box will appear every so many instances for each unique error detected.</li>
<li>Do not press the "abort" button - as that will exit the application before Intel Parallel Inspector can give you a list of all memory errors, and Intel Parallel Inspector may report false positives as your application exited prematurely.</li>
<li>Do not press the “retry” button in the dialog box, else - the debugger will open and point you to assembly code that was "generated" as a result of running your application under the  Inspector analysis engine rather than the assembly of your application (not recommended)</li>
</ul>
</li>
<li>The same issue may be reported by both technologies.</li>
<li>Performance will suffer as both technologies are tracking and checking memory usage</li>
</ul>
<p>You may want to turn off the Debug Heap Manager provided by the Microsoft C runtime library.</p>
<p >There is only one way to "turn off" the debug heap manager... and that is:</p>
<ul >
<li>  Use the Release/Base version of the Microsoft C runtime library by compiling with either /MD or /MT</li>
</ul>
<p >In the ideal situation, it is recommended that you use /Od with memory error analysis in Intel Parallel Inspector with the /MD or /MT runtime library selections. By default a "debug" configuration in Visual Studio will select /MDd or /MTd settings rather than the /MD or /MT settings. You would need to check these settings for each project in your solution.  Note: It can be difficult to accomplish this on large projects - as it will be difficult to have the same runtime library used in your entire application (all dll(s), lib(s), etc).</p>
<p>Another way, to work around this problem - is to tell the "debug" version of the heap manager to disable heap checking and reporting (tracking still occurs with this method).  This can be done using the _CrtSetDbgFlag api.  An example follows showing a code snippet which turns these features off.</p>
<p >#include &lt;crtdbg.h&gt;</p>
<p >main() {</p>
<p >int oriDbgFlag, newDbgFlag;</p>
<p >oriDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);</p>
<p >newDbgFlag &amp;= ~_CRTDBG_ALLOC_MEM_DF; //Turn this off (by default it is on)</p>
<p >newDbgFlag |= _CRTDBG_CHECK_ALWAYS_DF;  //Turn this on (by default it is off)</p>
<p >newDbgFlag &amp;= ~_CRTDBG_CHECK_CRT_DF;  //Not needed as this is default</p>
<p >newDbgFlag &amp;= ~_CRTDBG_DELAY_FREE_MEM_DF; //Not needed as this is default</p>
<p >newDbgFlag &amp;= ~_CRTDBG_LEAK_CHECK_DF; //Not needed as this is default</p>
<p >newDbgFlag = (newDbgFlag &amp; 0x0000FFFF) | _CRTDBG_CHECK_DEFAULT_DF; //Not needed as this is default</p>
<p >newDbgFlag = _CrtSetDbgFlag(newDbgFlag);</p>
<p >//...</p>
<p >For more information look for _CrtSetDbgFlag at MSDN.</p>
<p>Potential dialogue boxes/messages that the debug heap manager of the Microsoft C runtime library may produce, which can be suppressed using the techniques above (when under analysis of Intel Parallel Inspector):</p>
<p >Client hook allocation failure at file</p>
<p >Client hook allocation failure %hs line</p>
<p >Invalid allocation size:</p>
<p >Error: memory allocation: bad memory block type.</p>
<p >Client hook re-allocation failure at file %hs line.</p>
<p >Client hook re-allocation failure Or Error: memory allocation: bad memory block type.</p>
<p >Error: memory allocation: bad memory block type. The Block at 0x%p was allocated by aligned routines, use _aligned_realloc(). The Block at 0x%p was allocated by aligned routines, use _aligned_free()</p>
<p >Client hook free failure. HEAP CORRUPTION DETECTED: before %hs block (#%d) at 0x%p. CRT detected that the application wrote to memory before start of heap buffer.</p>
<p >HEAP CORRUPTION DETECTED: after %hs block (#%d) at 0x%p.</p>
<p >CRT detected that the application wrote to memory after end of heap buffer.</p>
<p >HEAP CORRUPTION DETECTED: after %hs block (#%d) at 0x%p.</p>
<p >CRT detected that the application wrote to memory after end of heap buffer.</p>
<p >_heapchk fails with _HEAPBADBEGIN.</p>
<p >_heapchk fails with _HEAPBADNODE.</p>
<p >_heapchk fails with _HEAPBADEND.</p>
<p >_heapchk fails with _HEAPBADPTR.</p>
<p >_heapchk fails with unknown return value!</p>
<p >HEAP CORRUPTION DETECTED: before %hs block (#%d) at 0x%p.</p>
<p >CRT detected that the application wrote to memory before start of heap buffer.</p>
<p >HEAP CORRUPTION DETECTED: before %hs block (#%d) at 0x%p.</p>
<p >CRT detected that the application wrote to memory before start of heap buffer.</p>
<p >HEAP CORRUPTION DETECTED: after %hs block (#%d) at 0x%p.</p>
<p >CRT detected that the application wrote to memory after end of heap buffer.</p>
<p >HEAP CORRUPTION DETECTED: after %hs block (#%d) at 0x%p.</p>
<p >CRT detected that the application wrote to memory after end of heap buffer.</p>
<p >HEAP CORRUPTION DETECTED: on top of Free block at 0x%p.</p>
<p >CRT detected that the application wrote to a heap buffer that was freed.</p>
<p >HEAP CORRUPTION DETECTED: on top of Free block at 0x%p.</p>
<p >CRT detected that the application wrote to a heap buffer that was freed.</p>
<p >%hs located at 0x%p is %Iu bytes long.</p>
<p >Bad memory block found at 0x%p.</p>
<p >Detected memory leaks!</p>
<p >Damage before 0x%p which was allocated by aligned routine</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/using-the-microsoft-debug-heap-manager-with-memory-error-analysis-of-intel-parallel-inspector/</link>
      <pubDate>Thu, 06 May 2010 21:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-the-microsoft-debug-heap-manager-with-memory-error-analysis-of-intel-parallel-inspector/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-the-microsoft-debug-heap-manager-with-memory-error-analysis-of-intel-parallel-inspector/</guid>
      <category>Tools</category>
      <category>Intel® Parallel Inspector</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Code &amp; Downloads</category>
    </item>
    <item>
      <title>Intel(R) Parallel Inspector Comparison with Intel(R) Thread Checker</title>
      <description><![CDATA[ <span >
<p>The following table can help you decide which tool to use: <br /> <br /> 
<table id="table1" class="sectionHeadingText" border="1" width="100%">
<tbody>
<tr>
<td></td>
<td align="center" bgcolor="#0099ff"><b> <span >Intel® Parallel Inspector</span></b></td>
<td align="center" bgcolor="#0099ff"><b> <span >Intel® Thread Checker</span></b></td>
</tr>
<tr>
<td align="right"><span >Threading errors - Data races and Deadlocks</span></td>
<td align="center" valign="bottom"><span >√</span></td>
<td align="center" valign="bottom"><span >√</span></td>
</tr>
<tr>
<td align="right"><span >Does not require special build or source code</span></td>
<td align="center" valign="bottom"><span >√</span></td>
<td align="center" valign="bottom"><span >√</span></td>
</tr>
<tr>
<td align="right"><span >Memory errors</span></td>
<td align="center" bgcolor="#99ccff" valign="bottom"><span >√</span></td>
<td align="center" valign="bottom"><br /></td>
</tr>
<tr>
<td align="right"><span >Easier to learn and reuse</span></td>
<td align="center" bgcolor="#99ccff" valign="bottom"><span >√</span></td>
<td align="center" valign="bottom"><br /></td>
</tr>
<tr>
<td align="right"><span >Low overhead analysis</span></td>
<td align="center" bgcolor="#99ccff" valign="bottom"><span >√</span></td>
<td align="center" valign="bottom"><br /></td>
</tr>
<tr>
<td align="right"><span >Improved scalable analysis without serializing the app</span></td>
<td align="center" bgcolor="#99ccff" valign="bottom"><span >√</span></td>
<td align="center" valign="bottom"><br /></td>
</tr>
<tr>
<td align="right"><span >Windows* standalone</span></td>
<td align="center" valign="bottom"><br /></td>
<td align="center" bgcolor="#99ccff" valign="bottom"><span >√</span></td>
</tr>
<tr>
<td align="right"><span >Linux* support</span></td>
<td align="center" valign="bottom"><br /></td>
<td align="center" bgcolor="#99ccff" valign="bottom"><span >√</span></td>
</tr>
<tr>
<td align="right"><span >Licensing</span></td>
<td align="center"><span >Single User</span></td>
<td align="center"><span >Single User &amp; Floating</span></td>
</tr>
<tr>
<td align="right"><span >Support</span></td>
<td align="center"><span >forum support<br /> premier support option</span></td>
<td align="center"><span >unlimited premier support &amp;<br /> 1 year product updates</span></td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<span >
<p>Intel Thread Checker is still the right choice for developers who need:</p>
<ul>
<li>Analysis outside of Visual Studio (standalone version)</li>
<li>Floating licenses</li>
<li>Unlimited, secure, formal support</li>
<li>Ability to check Linux applications</li>
</ul>
</span>
<p> </p>
</span> ]]></description>
      <link>http://software.intel.com/en-us/articles/intelr-parallel-inspector-comparison-with-intelr-thread-checker/</link>
      <pubDate>Thu, 25 Jun 2009 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intelr-parallel-inspector-comparison-with-intelr-thread-checker/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intelr-parallel-inspector-comparison-with-intelr-thread-checker/</guid>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Intel® Thread Checker for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Intel Architecture Platform Terminology for Development Tools</title>
      <description><![CDATA[ <p>Intel® compilers and libraries support three platforms: general combinations of processor architecture and operating system type. This section explains the terms that Intel uses to describe the platforms in its documentation, installation procedures and support site.  <b>Note:</b> not all Intel software development tools support all three platforms.</p>
<p><b>IA-32 Architecture</b> refers to systems based on 32-bit processors generally compatible with the Intel Pentium® II processor, (for example, Intel® Pentium® 4 processor or Intel® Xeon® processor), or processors from other manufacturers supporting the same instruction set, running a 32-bit operating system.</p>
<p><b>Intel® 64 Architecture</b> (formerly Intel® EM64T)refers to systems based on IA-32 architecture processors which have 64-bit architectural extensions, (for example, Intel® Core™2 processor family), running a 64-bit operating system such as Microsoft Windows Vista* x64 or a Linux* "x86_64" variant. If the system is running a 32-bit  operating system, then IA-32 architecture applies instead. Systems based on AMD* processors running a 64-bit operating system are also supported by Intel compilers for Intel® 64 architecture applications.</p>
<p>64-bit computing on Intel architecture requires a computer system with a processor, chipset, BIOS, operating system, device drivers and applications enabled for Intel® 64 architecture. Performance will vary depending on your hardware and software configurations. Consult with your system vendor for more information.</p>
<p><b>IA-64 Architecture</b> refers to systems based on the Intel® Itanium® processor running a 64-bit operating system.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-architecture-platform-terminology/</link>
      <pubDate>Tue, 10 Feb 2009 21:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-architecture-platform-terminology/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-architecture-platform-terminology/</guid>
      <category>Software Products General</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Software Development Tool Suites for Intel® Atom™ Processor Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Intel® Thread Checker for Windows* Knowledge Base</category>
      <category>Intel® Thread Profiler for Windows* Knowledge Base</category>
      <category>Intel® Threading Building Blocks Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Linux* Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Windows* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
  </channel></rss>
