Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Genie-Soft
Beginner
94 Views

Bugs in C++ Compiler/Linker?

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
94 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
Genie-Soft
Beginner
94 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.
JenniferJ
Moderator
94 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

JenniferJ
Moderator
94 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
TimP
Black Belt
94 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.
Reply