<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sun, 08 Nov 2009 01:50:27 -0800 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/intel-fortran-compiler-for-mac-os-x-kb/type/errors-diagnostics/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles feed</title>
    <link>http://software.intel.com/en-us/articles/intel-fortran-compiler-for-mac-os-x-kb/errors-diagnostics/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Fortran READ returns iostat=98 error</title>
      <description><![CDATA[ When the Fortran READ statement returns iostat=98 the error message is, "cannot allocate memory for the file buffer - out of memory". This error is caused by the runtime library attempting to create a buffer large enough to hold the output of the read. This will happen for unformatted files opened for sequential access. This error can be seen, for example, on a Windows XP, 32-bit system when attempting to read from virtual memory if the pagefile is set too small. This error can affect any operating system, though 32-bit platforms are more likely to hit it.<br /><br />There are several ways to work around this error. One option is making more virtual memory available by increasing the pagefile size on the system where you are running the application. If you have control over the file creation, and don’t require a record structure to the file, adding ACCESS=’STREAM’ to the OPEN for both the file creation and use will usually avoid this problem.  For more details on stream access, see the compiler documentation topic ‘File Access and File Structure’. ]]></description>
      <link>http://software.intel.com/en-us/articles/fortran-read-returns-iostat-eq-98-error</link>
      <pubDate>Fri, 30 Oct 2009 13:24:23 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/fortran-read-returns-iostat-eq-98-error#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/fortran-read-returns-iostat-eq-98-error</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Error 6405 with interface checking and EXTERNAL declaration in module</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Reference Number : </b>DPD200139304<br /><br /><br /><b>Version : </b>11.1<br /><br /><br /><b>Operating System : </b>All<br /><br /><br /><b>Problem Description : </b>The compiler will incorrectly issue diagnostic 6405: The same named entity from different modules and/or program units cannot be referenced, in the following situation:<br /><br /><ol>
<li>A procedure (subroutine or function) is declared with an implicit interface (just a type and/or EXTERNAL) in a module.</li>
<li>A program unit USEs the module and calls the procedure twice or more.</li>
<li>The application is compiled with the generated interface checking feature enabled. (From the command line, the option /warn:interface (Windows) or -warn interface (Linux and Mac OS X); in the Visual Studio development environment, property Fortran &gt; Diagnostics &gt; Check Routine Interfaces is set to Yes.)</li>
</ol>Example:<br /><br />
<pre name="code" class="plain">module MYMOD<br />logical, external :: func<br />end module MYMOD<br /><br />program MAIN<br />use MYMOD<br />print *, FUNC(0)<br />print *, FUNC(1)<br />end program MAIN</pre>
<br /><b>Resolution Status : </b>This error will be corrected in a future product version. The simplest workaround is to recode the declaration in the module as an INTERFACE block.  For example:<br /><br />
<pre name="code" class="plain">module MYMOD<br />interface<br />logical function FUNC (ARG)<br />integer, intent(IN) :: ARG<br />end function FUNC<br />end interface<br />end module MYMOD</pre>
If the procedure is written in Fortran, a preferable alternative is to place it in the module as a module procedure. This avoids the need to write a separate declaration of the procedure, but does require that any caller USE the module.<br /><br />For information on other causes of this error, see <a target="_blank" href="http://software.intel.com/en-us/articles/fdiag6405/">Diagnostic 6405: The same named entity from different modules and/or program units cannot be referenced.</a><br /><br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers.  Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site.  ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose.  Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/error-6405-with-interface-checking-and-external-declaration-in-module</link>
      <pubDate>Mon, 31 Aug 2009 13:36:12 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/error-6405-with-interface-checking-and-external-declaration-in-module#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/error-6405-with-interface-checking-and-external-declaration-in-module</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Intel® Fortran and C++ compilers – Invalid option -i turns on incremental linking on Linux</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><span class="sectionHeadingText">Reference Number :</span> DPD200138822<br /><br /><br /><span class="sectionHeadingText">Version :</span> 10.1, 11.0, 11.1<br /><br /><br /><span class="sectionHeadingText">Operating System :</span> Linux*, Mac OS X* / IA-32, Intel® 64, IA-64<br /><br /><br /><span class="sectionHeading"><b>Problem Description : </b><br /></span><br />Both the Intel Fortran and C++ compilers for Mac OS and Linux quietly ignore the invalid option <strong>-i</strong> and pass it to the linker.<br /><br />The effect is harmless on Mac OS because the linker (ld) does not support the <strong>-i</strong> option.<br /><br />For example:<br /><br />
<blockquote>$ ifort -V -i sample.f90<br />Intel(R) Fortran Intel(R) 64 Compiler Professional for applications running on Intel(R) 64, Version 11.1 Build 20090511 Package ID: m_cprof_p_11.1.046<br />Copyright (C) 1985-2009 Intel Corporation. All rights reserved.<br /><strong>ld: unknown option: -i</strong></blockquote>
<br />The effect is not harmless on Linux where both compiler driver's (icc, ifort) quietly passing the option to the linker (ld) turns on incremental linking. Incremental linking produces a non-executable <strong>LSB relocatable</strong> file and not a <strong>LSB executable</strong> file. <br /><br />Because the incremental linking is done quietly it leads to user confusion when trying to execute the non-executable <strong>LSB relocatable</strong> file. The attempt to execute the resulting file results in a "Permission denied" error.<br /><br />The demonstration below shows how the invalid -i option leads to this confusing situation and error.<br /><br />
<blockquote>$ <strong>ifort</strong> sample.f90 -o sample<br /><br />$ file sample<br />sample: ELF 64-bit <strong>LSB executable</strong>, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped<br /><br />$ <strong>ifort</strong> -i sample.f90 -o sample<br /><br />$ file sample<br />sample: ELF 64-bit <strong>LSB relocatable</strong>, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, not stripped<br /><br />$ ./sample<br />-bash: ./sample: Permission denied<br /><br /><br />$ <strong>icc</strong> sample.c -o sample<br /><br />$ file sample<br />sample: ELF 64-bit <strong>LSB executable</strong>, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped<br /><br />$ <strong>icc</strong> -i sample.c -o sample<br /><br />$ file sample<br />sample: ELF 64-bit <strong>LSB relocatable</strong>, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, not stripped<br /><br />$ ./sample<br />-bash: ./sample: Permission denied</blockquote>
<br /><br /><strong class="sectionHeadingText">Resolution Status :</strong> This is a known issue that will be fixed in a future release. Since <strong>-i</strong> is not a valid Intel compiler option, correcting or removing the option will resolve the issue.<br /><br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/invalid-option-i-turns-on-incremental-linking-on-linux</link>
      <pubDate>Thu, 13 Aug 2009 08:44:07 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/invalid-option-i-turns-on-incremental-linking-on-linux#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/invalid-option-i-turns-on-incremental-linking-on-linux</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
    </item>
    <item>
      <title>Intel® Fortran compiler – Option -extend-source not ignored for .F90 source files</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong class="sectionHeadingText">Reference Number :</strong> DPD200138566<br /><br /><br /><strong class="sectionHeadingText">Version :</strong> 11.0, 11.1<br /><br /><br /><strong class="sectionHeadingText">Operating System :</strong> Linux*, Mac OS X* / IA-32, Intel® 64, IA-64<br /><br /><br /><b class="sectionHeading">Problem Description : </b><br /><br />Beginning with the 11.x release, the Intel Fortran compiler does not correctly ignore the <strong>-extend-source</strong> (and other variants) for free-form source files named with the .F90 extension. The option is correctly ignored for source files named with the lower-case .f90 extension.<br /><br />The mishandling of the option will cause erroneous syntax errors for any Fortran source statement that extends beyond the designated statement field length specified with the <strong>-extend-source</strong> option.<br /><br />The example below demonstrates the extraneous errors issued when using <strong>-extend-source 132</strong> with the sample program containing an OPEN statement extending beyond 132 characters.<br /><br />Given the following sample.F90 source:<br /><br />
<pre name="code" class="plain">program sample

open(unit=10,file='/hardware/temporary/model/simulation/version/9.999/xray/store/detection/reflection/fulltrace/resolution/images7654.txt',status='replace',iostat=ios_100)

if(ios_100/=0) then
   print *,"File open failed"
endif

end</pre>
<br /><br />
<blockquote>$ ifort -V -c -extend-source 132 sample.F90<br />Intel(R) Fortran Intel(R) 64 Compiler Professional for applications running on Intel(R) 64, Version 11.1 Build 20090630 Package ID: l_cprof_p_11.1.046<br />Copyright (C) 1985-2009 Intel Corporation. All rights reserved.<br /><br />Intel(R) Fortran 11.1-2536<br />sample.F90(3): error #5120: Unterminated character constant<br />open(unit=10,file='/hardware/temporary/model/simulation/version/9.999/xray/store/detection/reflection/fulltrace/resolution/images76&amp;<br />------------------^<br />sample.F90(4): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: ) ,<br />&amp;5<br />--^<br />compilation aborted for sample.F90 (code 1)</blockquote>
<br /><br /><span class="sectionHeadingText"><strong>Resolution Status :</strong> </span>This is a known issue that will be fixed in a future release. Since <strong>-extend-source</strong> is not intended to apply to free-form source files, to work around this current defect simply avoid usage with any .F90 source files.<br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/extend-source-not-ignored-for-f90-source-file</link>
      <pubDate>Tue, 04 Aug 2009 11:04:04 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/extend-source-not-ignored-for-f90-source-file#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/extend-source-not-ignored-for-f90-source-file</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
    </item>
    <item>
      <title>Error while copying license file - Intel(R) Compilers for Mac OS X</title>
      <description><![CDATA[ <br />
<div><strong>Problem : <br /><br /></strong>During installation, an error message of "Error while copying license file. Please make sure you have write permission to the license folder" will result if the user does not have write permission to the directory /Users/Shared/Library/Application\ Support/Intel/Licenses. <br /><br /><strong></strong></div>
<div><strong>Environment : <br /><br /></strong>Mac OS X, Intel Compiler 11.1</div>
<div>A related article pertaining to Mac OS X, Intel Compiler 9.1, 10.1, 11.0 can be found <a href="http://software.intel.com/en-us/articles/invalid-serial-number-intelr-compilers-for-mac-os-x/">here</a>.<br /><br /><br /><strong>Root Cause : <br /><br /></strong>The error "Error while copying license file. Please make sure you have write permissions to the license folder." will appear if the user does not have write permission to the directory /Users/Shared/Library/Application\ Support/Intel/Licenses.<strong> <br /><br /></strong>This directory by default has write permission enabled, however, installation of other third party products such as Adobe products might change the permission for this directory. This change in permission will result in an error during installation of Intel(R) Compiler Products because the installer can not create a license file in this directory.<br /><br />Even if the user provide their own license file instead of a serial number, the error will still occur if the installer can not copy the license to the directory /Users/Shared/Library/Application\ Support/Intel/Licenses.<br /><br /><br /><br /><strong>Resolution : <br /><br /></strong>Assuming that you have a valid serial number or product license, the solution is to enable write permission for the directory Users/Shared/Library/Application\ Support/Intel/Licenses.<br /><br /><br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/error-while-copying-license-file-intelr-compilers-for-mac-os-x</link>
      <pubDate>Mon, 03 Aug 2009 11:27:03 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/error-while-copying-license-file-intelr-compilers-for-mac-os-x#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/error-while-copying-license-file-intelr-compilers-for-mac-os-x</guid>
      <category>Tools</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
    </item>
    <item>
      <title>Internal Compiler Error</title>
      <description><![CDATA[ <!--page break--> 
<hr />
<div class="sectionHeading">Problem Description</div>
<p>A compilation fails with a message similar to one of the following:</p>
<blockquote>example.c(22): internal error: <br /><br />Please visit 'http://www.intel.com/software/products/support' for assistance.<br /><br />[ Aborting due to internal error. ]<br /><br />compilation aborted for example.c (code 1) <br /></blockquote>
<p> </p>
<p>or</p>
<blockquote>catastrophic error: **Internal compiler error: internal abort** <br /><br />Please report this error along with the circumstances in which it occurred in a Software Problem Report. <br /><br />Note: File and line given may not be explicit cause of this error.<br /><br />compilation aborted for example.f90 (code 3)<br /></blockquote>
<p> </p>
<!--page break--> 
<hr />
<div class="sectionHeading">Explanation</div>
<p>This message usually indicates a compiler defect.</p>
<p>Please report the problem to Intel through the <a href="http://software.intel.com/en-us/forums/">Intel® Software Network Forums</a> or <a href="https://premier.intel.com/">Intel® Premier Support</a> (support license and registration required). You will need to supply a test case along with a list of the compile options used and the exact compiler version that shows the problem. If you are not using a current compiler version, try the most recent version available to you as the error may have already been corrected.</p>
<p>Please note that this message is generic in nature and does not have a single cause nor solution. Providing a test case that reproduces the error is the only way to get a precise analysis of the problem.</p>
<p>In some, but not all, cases, you can work around the error by reducing the optimization level. You may find it helpful to try compiling with fewer switches to see if you can find one that, when removed, eliminates the error. It is also helpful to remove or comment out portions of the source file to see if you can isolate the line or lines that trigger the problem. The smaller the test case, the easier it will be for Intel to resolve the problem.</p>
<p> </p>
<p> </p>
<p> </p>
<p><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></p>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/internal-compiler-error</link>
      <pubDate>Thu, 02 Jul 2009 10:24:50 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/internal-compiler-error#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/internal-compiler-error</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Determining Root Cause of SIGSEGV or SIGBUS errors</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b>When I run my code compiled with the Intel Fortran Compiler I get 'sigsegv' on linux (or sigbus on Mac OS X).  This code has run fine for years on &lt;insert your previous compiler/platform&gt;.  Is this a bug with the Intel Compiler?<br /><br /><br /><b>Environment : </b>linux or Mac OS* X<br /><br /><br /><b>Root Cause : </b>There are many possible causes.  A segmention fault (bus error Mac OS X) is a general fault that can have multiple causes.  We outline these potential causes below and give suggestions for avoiding the segmentation fault<br /><br /><br /><b>Possible Cause #1 Fortran Specific Stackspace Exhaustion: Solution, -heap-arrays compiler option. </b><b><br /><br /></b>The Intel Fortran Compiler use stack space to allocate a number of temporary or intermediate copies of array data.  <br /><br /><b>NON-OpenMP and NON-Auto-parallelized Applications:</b> IF your program is not using OpenMP or Auto-parallelization (-parallel compiler switch) and your compiler is newer than Linux v9.1.037 (or all Mac OS* compilers), try the -heap-arrays compiler option.  OpenMP or Auto-parallelization users and users with Linux compilers older than v9.1.037 please read ahead to <b>Possible Cause #2</b> for tips on unlimiting the stack size.<br /><br />-heap-arrays<br /><br />If this removes the sigsegv or bus error, you may STOP at this point.  You may wish to read the attached PDF presentation (link at bottom of page) to learn about when and where array temporaries are created.  With a few code changes you may be able to avoid some array temporaries, and hence reduce your application's need for temporary copies (improves performance).  Also, the -heap-arrays compiler option can take an optional argument [size] to specify the threshold size in Kbytes at which arrays larger than [size] are allocated on heap, all others on stack.  For example:<br /><br />-heap-arrays 10<br /><br />puts all automatic and temporary arrays larger than 10Kbytes on heap<br /><br /><br /><b>Cause #2 Stackspace Exhaustion.   Solution: Unlimiting Stacksize for OpenMP Applications or any Application</b>:<br />The first step is to try to increase your shell stack limit on Linux and Mac OS* X.  However, this option can have unwanted effects on data sharing with OpenMP or auto-parallelized code.  Because of this, OpenMP and auto-parallelization users are advised to not use -heap-arrays and insted try to unlimit their shell stack size limit.<br /><br />Linux, bash:    ulimit -s unlimited<br />Linux, csh/tcsh:   unlimit stacksize<br /><br />You may check your stack size limit with:<br />bash:  ulimit -a<br />csh:    limit<br />and look for 'stack size' limit for your shell environment<br /><br />Notes:  If you run your program under the control of a batch subsystem you may need to add the command above to your user startup files ( ~/.bashrc  ~/.profile  or ~/.cshrc )<br /><br />For Mac OS* X, there is a hard upper limit on the shell stacksize.  For most systems, this is:<br /><br />bash:  ulimit -s 65532<br /><br />which sets the limit to 64Mbytes.<br /><br />An alternative is to use a linker option to increase the executable's default shell stacksize, as documented here:  <a href="http://software.intel.com/en-us/articles/intel-fortran-compiler-increased-stack-usage-of-80-or-higher-compilers-causes-segmentation-fault/">http://software.intel.com/en-us/articles/intel-fortran-compiler-increased-stack-usage-of-80-or-higher-compilers-causes-segmentation-fault/</a><br /><br />Re-run your application, if this fixes the issue you may stop.  If your application still generates sigsegv or bus error, continue reading.<br /><br /><br /><b>Possible Cause #3, Stack Corruption Due to User Coding Error.</b> There are a number of user coding errors that can cause stack corruption and lead to a sigsegv or bus error at run time.  These errors are particularly hard to find since the segmentation fault may occur later in the program in a section unrelated to where the stack was initially corrupted.<br /><br />The first step is to try to isolate where in the code the fault occurs.  This is done by generating an execution 'traceback'.  Compile and link using the ifort driver and these options:<br /><br />-g -traceback<br /><br />When the code faults, you will often get a report showing the call stack when the fault occurs.  If you do not get a stack traceback, insure that you have used -g for both compilation and link and make sure that -traceback was used on the compilation.  There are cases where the seg fault occurs while the program is in kernel space and thus no user stack is available for trace back.  We are working to improve this in a future release.<br /><br />This trace back report is read from the bottom of the list upwards.  Find the uppermost subroutine or function from your code along with it's line number to isolate which instruction caused the fault.  Check for user coding errors at this statement.  If no obvious user error, continue below<br /><br /><br /><b>Possible Cause #4, exceeding Array Bound.  Solution, try -check bounds<br /><br /></b>The -check-bounds compiler option provides a run-time check of array accesses and character string expressions to insure that the indices are within the boundaries of the array.  This checking is useful to find cases where the indices go outside of the declared size of the array.  This option has a big impact on performance, the magnitude of which depends on how many array accesses are performed in the application.  Also, -check-bounds array bounds checking is not performed for arrays that are dummy arguments in which the last dimension bound is specified as * or when both upper and lower dimensions are 1.   To enable bounds checking, compile with:<br /><br />-check bounds -g <br /><br />and run your program.  The checking is performed at run time and not at compile time.  If this finds your error STOP.  ELSE keep reading.<br /><b><br /><br />Possible Cause #5</b>, <b>calling a function as a subroutine</b>, or invoking a subroutine as if it were a function.  <br /><br />These are user coding errors where a user does something similar to this:<br /><br />--- main program ---<br />...<br />call ThisIsIllegal( some_arguments )<br />...<br />--- end main program ---<br /><br />--- ThisIsIllegal ---<br />integer function ThisIsIllegal( some_arguments )<br />...<br />--- end ThisIsIllegal ---<br /><br />In the example above, the main program calls ThisIsIllegal as if it were a subroutine, however ThisIsIllegal is declared as a function.  This can cause stack corruption.  To test for these conditions, try using compiler option<br /><br />-fp-stack-check -g -traceback<br /><br />compile with these options and run.   If the stack is corrupted by something similar to the above, your code will exit and give a stack trace.<br /><br />You can check the interfaces of your procedures with a compile time check:<br /><br />-gen-interfaces -warn interfaces<br /><br />This compile time check will generate INTERFACE blocks for your procedures.  The -warn interfaces will then use these compiler-generated interfaces and check the calls to your procedures to make sure arguments and interfaces match between caller and callee.   Note that this check occurs only for Fortran source files.  This will not check interfaces in mixed language program.<br /><br /><br /><b>Possible Cause #6</b>, <b>large array temporaries caused by passing non-contiguous array sections.</b> Solution, detect with -check arg_temp_created and fix with coding change to include explicit interface and assumed shaped arrays.<br /><br />Consider this 'before' example:<br /><br />--- main program ---<br />real(8) :: f(1800,3600,1)<br />external sub<br />...<br />call sub( f(1:900,:,:) )<br />...<br />--- end main program ---<br /><br />and the "sub" subroutine is in a separately compiled source file:<br />--- external subroutine "sub" ---<br />subroutine sub( f )<br />real(8) :: f(900,3600,1)<br />...<br />--- end subroutine "sub" ---<br /><br />In this case, "sub" is expecting a contiguous array of size 900x3600x1.  However, the call is passing an array that is not contiguous in memory.  In situations such as this, the compiler will make an array temporary at the call to copy the elements of the array "f" from non-contiguous chucks into a contiguous array such as what "sub" is expecting.  This temporary is allocated on stack unless -heap-arrays is specified.  <br /><br />To check if this is occuring in your code, compile with<br />-check arg_temp_created<br /><br />and run the program.  Messages will be written when argument temporaries are created.  To work around the issue, creating a explicit interface and using an assumed shaped array in "sub" will remove the need for an array temporary:<br /><br />--- main ---<br />real(8) :: f(1800,3600,1)<br />interface<br />subroutine sub(f)<br />real(8) :: f(:,:,:)<br />end subroutine sub<br />end interface<br />...<br />call sub( f(1:900,:,:) )<br />...<br />--- end main program ---<br /><br />--- "sub" ---<br />subroutine sub( f )<br />real(8) :: f(:,:,:)<br />...<br />end subroutine sub<br /><br />Keep in mind, that although this avoids the array temporary, within "sub" the compiler is now aware that the array "f" may be non-contiguous.  Thus, some optimizations on statements using "f" may be disabled and thus affect performance.<br /><br /><br /><b>Case NONE OF THE ABOVE:  Solution, more in-depth analysis is needed</b>.  <br /><br />99% of the sigsegv or bus error cases tend to fall into the categories above.  However, there are other cases where segmentation faults can occur.  <br /><br />If your application is linking in external libraries, make sure that the library is compatible with your compiler.  Was the external library compiled with the Intel Compiler?  If so, were the major versions the same - that is, was the library compiled with Intel Fortran v9.1 but your application built with Intel Fortran v10.x or v11.x?  Intel only guarantees compatibility within major versions ( 9, 10, 11 are examples of major versions).  <br /><br />If the external library is from a software vendor or tool:  does this vendor explicitly name the Intel Compiler as compatible, and if so, with which version(s) have they verified their library?  You should only use the version(s) of the Intel Compiler certified by your vendor.  If you need an older version of the Intel Compiler, please see <a href="http://software.intel.com/en-us/articles/older-version-product/">How do I get an older version of an Intel(R) Software Development Product.</a><br /><br /><br /><b>When all else fails ....</b><br /><br />Post a note to the User Forum <a href="http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/">HERE</a>.   Please include the name of your application if it a commonly available code, post a stack trace (if you can get one), compiler options used, and ideally a tarball of the entire application, input files and instructions on how to run the program.<br /><br />If you have support for your product, you can open an issue at <a href="http://premier.intel.com">http://premier.intel.com</a>.<br /><br />For more background information, try the excellent Dr. Fortran Article <a href="http://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/41911/reply/12580/">"Don't Blow Your Stack!"</a><br /><br />And read the PDF presentation attached to this article Fortran Compiler Use of Temporaries: <a onclick="ndownload('http://software.intel.com/file/20415')" href="javascript:void(0)">Stack+usage.pdf</a><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors</link>
      <pubDate>Wed, 24 Jun 2009 10:57:40 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
    </item>
    <item>
      <title>Invalid Serial Number - Intel(R) Compilers for Mac OS X</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Problem : </strong><br /><br />During installation, an error message of "Invalid Serial Number" will result if the user does not have write permission to the /tmp directory or the  /Users/Shared/Library/Application\ Support/Intel/Licenses. <br /><br /><strong>Environment : </strong><br /><br />Mac OS X, Intel Compiler 9.1, 10.1, 11.0<br />A related article pertaining to Mac OS X, Intel Compiler 11.1 can be found <a href="http://software.intel.com/en-us/articles/error-while-copying-license-file-intelr-compilers-for-mac-os-x/">here</a>.<br /><br /><strong>Root Cause : </strong><br /><br />The error "Invalid Serial Number" will appear if the user does not have write permission to the directories /Users/Shared/Library/Application\ Support/Intel/Licenses or /tmp.<br /><br />These directories by default has write permission enabled, however, installation of other third party products such as Adobe products might change the permission for this directory. This change in permission will result in an error during installation of Intel(R) Compiler Products because the installer can not create a license file in this directory.<br /><br />Even if the user provide their own license file instead of a serial number, the error will still occur if the installer can not copy the license to the directory /Users/Shared/Library/Application\ Support/Intel/Licenses.<br /><br /><strong>Resolution : </strong><br /><br />A more appropriate error message will be issue in version 11.1 of the Intel Compiler Products.  Assuming that you have a valid serial number or product license, the solution is to enable write permission for the directories Users/Shared/Library/Application\ Support/Intel/Licenses and /tmp.<br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/invalid-serial-number-intelr-compilers-for-mac-os-x</link>
      <pubDate>Fri, 05 Jun 2009 09:31:01 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/invalid-serial-number-intelr-compilers-for-mac-os-x#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/invalid-serial-number-intelr-compilers-for-mac-os-x</guid>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
    </item>
    <item>
      <title>Syntax error for array constructor with datatype keyword value</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Reference Number : </strong>DPD200111543<br /><br /><br /><strong>Version : </strong>11.0<br /><br /><br /><strong>Operating System : </strong>All<br /><br /><br /><strong>Problem Description : </strong>The compiler gives a syntax error for an array constructor of the form:<br /><br /><code>(/parameter-name/)</code><br /><br />where <em>parameter-name</em> is a PARAMETER constant that has the same name as a datatype keyword (BYTE, INTEGER, REAL, COMPLEX, etc.)  For example:<br /><br />
<pre name="code" class="cpp">INTEGER, PARAMETER :: BYTE = 123<br />INTEGER IA(1)<br />IA = (/BYTE/)<br />END</pre>
When compiled, this gives an error such as:<br /><br />example.f90(3): error #5082: Syntax error, found ')' when expecting one of: ( &lt;IDENTIFIER&gt; &lt;CHAR_CON_KIND_PARAM&gt; &lt;CHAR_NAM_KIND_PARAM&gt; &lt;CHARACTER_CONSTANT&gt; &lt;INTEGER_CONSTANT&gt; ...<br />IA = (/BYTE/)<br />------------^<br /><br /><br /><strong>Resolution Status : </strong>This problem is fixed in the January 2009 product update.  A workaround is to use the Fortran 2003 array constructor syntax:<br /><br /><code>[parameter-name]</code><br /><br />instead.<br /><br /><br /><br /><em>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers.  Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site.  ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose.  Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</em></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/syntax-error-array-constructor-datatype-keyword-value</link>
      <pubDate>Mon, 18 May 2009 11:04:35 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/syntax-error-array-constructor-datatype-keyword-value#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/syntax-error-array-constructor-datatype-keyword-value</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Diagnostic 10149: option &amp;#39;-cxxlib-gcc&amp;#39; not supported with the current installed GCC</title>
      <description><![CDATA[ <b>Cause:</b><br />When compiling with the Intel(R) Compilers on Linux*, the error message: "Diagnostic 10149: option '-cxxlib-gcc' not supported with the current installed GCC" is an indication that some inconsistency exists in g++ installation.<br /><br />The compiler driver performs a series of checks to make sure the compiler will be able to use the installed gcc and if errors are found this error is given. <br /><br /><b>Example:</b><br /><br />There are many causes of this error, all related to improper installation of g++. Here are some based on our experience.<br /><br />1) Your gcc and g++ versions are not in sync. Try gcc --version and g++ --version to compare them.<br />2) The gcc and g++ have different search directories for libraries. Try gcc --print-search-dirs and g++ --print-search-dirs<br />3) Permissions for g++ may not allow access for the compiler user account.<br /><br /><b>Resolution:</b><br />No solution is currently available. (A better diagnostic may be available in future compilers).<br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/cdiag10149</link>
      <pubDate>Tue, 12 May 2009 16:41:09 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/cdiag10149#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/cdiag10149</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
    </item>
  </channel></rss>