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

Need help to debug an odd "Illegal Instruction" error

jim_cox
Beginner
580 Views
I have an application built with Intel C++ v11.1.048
The application works fine on most of our machines

But on one computer we get


The exception Illegal Instruction
An attepmt was made to execute an illegal instruction
(0xc000001d) occurred in the application at location 0x00594425

Click on OK to terminate the program
Click on CNACEL to debug the program


Using remote debugging it would appear the problem is generated by the line

yHundreds = (int) atof( ScrambledDate.Right(3) ) ;

The application works on other machines.
An old version of the application with the same code, but compiled with MS C++ works on this (and the other machines)

Any thoughts about what might cause the error and how to sort it out?

Thankx

Jim




0 Kudos
1 Solution
TimP
Honored Contributor III
580 Views
So, apparently, you built with /arch:sse2 with icl, but not with VC, where you would get sse2 only if so specified. If you are supporting win2k, you may have machines which don't support sse2. win2k doesn't attempt to emulate sse2 on a non-sse2 machine, nor does any subsequent windows.

View solution in original post

0 Kudos
4 Replies
TimP
Honored Contributor III
580 Views
You could have been more helpfulm for us, and maybe for yourself. How about:
1) which architecture did you build for with icl? default is SSE2. /Qxhost changes to build system arch.
2) which platform has difficulty?
3) which architecture did you build for with VC? if 32-bit, default is x87 (/arch:ia32 in ICL options)
0 Kudos
jim_cox
Beginner
580 Views
Tim., thankx for your input

in reponse...

1. built for win32 - no /Q set , so presumably default

2. box with issues is win2K - but application runs on other win2k boxes ok

3. VC build is also for win32
0 Kudos
TimP
Honored Contributor III
581 Views
So, apparently, you built with /arch:sse2 with icl, but not with VC, where you would get sse2 only if so specified. If you are supporting win2k, you may have machines which don't support sse2. win2k doesn't attempt to emulate sse2 on a non-sse2 machine, nor does any subsequent windows.
0 Kudos
jim_cox
Beginner
580 Views
Tim

Thankx again for your input.

Let me see if I underastand you correctly

I've got...

Enable Enhanced Instruction Set = Not Set
Add Processor Optimised Code Path = None
Intel Processor Specific Optimisation = None

Which you say will give sse2 - right ?

and that some machines dont support sse2 ?

and maybe my problem box is one of those

So setting Enable Enahcned Instruction Set to "No Enhanced Instruction Sets" might sort me out

I'll give it a try


Edit : yes - that's got it working. Thank you so very much Tim :)
0 Kudos
Reply