Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Bugs in C++ Compiler/Linker?

Genie-Soft
Beginner
573 Views
Hi,

Our company recently purchased Intel Composer XE, and we've had a few serious issues migrating our build toolkit from MVC10 to ICC 12.

There are a couple of issues, but the real blocker is that when compiling the last of the 28 projects in our solution, the compilation goes OK but the linker seems to go into an infinite loop. MPCOM.exe is launched, reaching 3GB of memory and 24% of the CPU (on a quad-core, so that's 100%, really), is then restarted automatically, reaches 3.7GB of memory while above the 20% CPU mark, then drops down to 2-3% and just hangs.

I was only able to solve this by disabling Interprocedural Optimizations entirely in *both* the compiler and linker. Disabling only in the linker caused the linking to complete, but with errors about unresolved references (found in libcmt or msvcrt). Disabling both allowed the compilation and linking to complete.

My biggest issue now is that some of the exes (sharing certain dependencies) that were compiled with ICC give this error on running:

---------------------------
GSTimeLineAgent.exe - Application Error
---------------------------
The application was unable to start correctly (0xc000007b). Click OK to close the application. 
---------------------------
OK   
---------------------------

However, running it in the debugger proceeds normally. Somehow only launching via double-click (or from the command line) triggers this error.

Regarding issue 1: How can I work with Intel to debug this problem?

Regarding issue 2: Any known fixes?
0 Kudos
5 Replies
JenniferJ
Moderator
574 Views
It's like an env issue.

When running from a cmd window, did you create the cmd window from [start > all programs > intel ...> build env VS2010 mode]?

try from above cmd to see how it goes.

Jennifer
0 Kudos
Genie-Soft
Beginner
574 Views
I'm not developing from the command line, but from VS2010. It turns out the application error was caused by a libmmd.dll dependency that I cannot seem to get rid of. The mpcom issue has not been resolved.
0 Kudos
JenniferJ
Moderator
574 Views

Ok, looks like the "path" env-var is not setup right.

Try to add following directories to the "path" from "My Computer":
C:\Program Files (x86)\Intel\ComposerXE-2011\redist\ia32\compiler;C:\Program Files (x86)\Intel\ComposerXE-2011\redist\intel64\compiler

Then restart the VS.

Or you can set the path for the project within VS2010, under the "Property Manager". Open the "Property Manager" window from "View", update "Microsoft.Cpp.Win32.user" under "Debug|Win32" and "Release|Win32". Similar for x64.

Jennifer

0 Kudos
JenniferJ
Moderator
574 Views
Quoting Genie-Soft
There are a couple of issues, but the real blocker is that when compiling the last of the 28 projects in our solution, the compilation goes OK but the linker seems to go into an infinite loop. MPCOM.exe is launched, reaching 3GB of memory and 24% of the CPU (on a quad-core, so that's 100%, really), is then restarted automatically, reaches 3.7GB of memory while above the 20% CPU mark, then drops down to 2-3% and just hangs.
I was only able to solve this by disabling Interprocedural Optimizations entirely in *both* the compiler and linker. Disabling only in the linker caused the linking to complete, but with errors about unresolved references (found in libcmt or msvcrt). Disabling both allowed the compilation and linking to complete.

no, we don't have existing issues about this. this would be difficult to duplicate without the source.

could you please submit to the Premier Support - https://premier.intel.com/?

The work-around you found is good, but in order to get more performance, it's better to have the IPO. so maybe try with less projects using IPO.

Thanks,
Jennifer
0 Kudos
TimP
Honored Contributor III
574 Views
The docs installed with the compiler include advice about large IPO projects.
There's no way to guess whether IPO would actually show an advantage on your project; if you know which functions should be candidates for interprocedural optimization, placing them together in the same source file and leaving /Qip turned on may be sufficient.
0 Kudos
Reply