Application Crash: Illegal instruction

Application Crash: Illegal instruction

Sven Woop (Intel)的头像

Application Crash: Illegal instruction

10 帖子 / 0 全新

Hi there,

I tried to run embree as well and it does not work (application crashes). Tested with Windows Compiler 32 and 64 Bit Version.. Running Win 7 (64 Bit) with Visual Studio 2010.

This might help (Crash Report - German Win 7 Version):

Fehlermodulname: embree.exe
Fehlermodulzeitstempel: 4e10c935
Ausnahmecode: c000001d
Ausnahmeoffset: 0000000000057b7f
Betriebsystemversion: 6.1.7600.
Gebietsschema-ID: 1031
Zusatzinformation 1: 1f07
Zusatzinformation 2: 1f07b9a70824c87fb638e94e8bb5c69f
Zusatzinformation 3: 7f61
Zusatzinformation 4: 7f61147635beb36958b7bedc38e0f914

I tried some options (-c with .ecs, -i with .obj.. writing to file.. the regression test) and nothing seems to work correctly. The regression test just opens a blank (white) window, does some calculations (CPU usage) and then terminates (window is closed) without any result.

Tried to remove the__SSE4_2__ - define as well, leading to compilation errors.

Any ideas? Thanks ;)

The __SSE4_2__ define might be the problem here. What CPU do you have in your system?

We'll fix thisfor the final release.

"We'll fix thisfor the final release."

My lastpostreferred to the "runs only on Windows 7" comment. The "__SSE4_2__" issue is more tricky, becausewith theVS2010 compilerwe cannot figure out atcompile time which instruction sets are supported by the system CPU. If someone has a nice solution for this, we'd appreciate to learn about it.

My CPU is kind of old: Core 2 Duo E6550 @ 2,33 GHz - gonna try it on an i5 soon.

Would it help anything to try compiling with VS 2008 ? Just asking cause I could download it via MSDNAA...

Sven Woop (Intel)的头像

The crash you see is caused by an illegal instruction executed 0xc000001d. If you run the application in a debugger you can get more information of what instruction is exactly causing the issue.

I started the debugging with the following result:

Exception Message: Unhandled Exception at 0x000000013fb67b7f in embree.exe: 0xC000001D: Illegal Instruction.

Occured in: object_pinning.cpp (rtcore/common)

At Line: 46

/*! map even and odd primitive to bin */
Box prim0 = prims[start()+i+0]; ssei bin0 = getBin(prim0);
Box prim1 = prims[start()+i+1]; ssei bin1 = getBin(prim1); <----- Exception in this line

Pressing "continue" only leads to the next exception in the same code line due to the for loop..

Sven Woop (Intel)的头像

Disabling the __SSE4_2__ define in sys/platform.h will solve the issue.However, there is some compilation issue with Microsoft Compiler when doing so. We will fix that in the next release.As a workaround, to get the code compiled with __SSE4_2__disabled, add the following lines at the beginning of your simd/smmintrin_emu.h file:

#define _mm_blendv_ps __emu_mm_blendv_ps

#define _mm_blend_ps __emu_mm_blend_ps

#define _mm_blendv_epi8 __emu_mm_blendv_epi8

#define _mm_mullo_epi32 __emu_mm_mullo_epi32

#define _mm_min_epi32 __emu_mm_min_epi32

#define _mm_max_epi32 __emu_mm_max_epi32

#define _mm_extract_epi32 __emu_mm_extract_epi32

#define _mm_insert_epi32 __emu_mm_insert_epi32

#define _mm_extract_ps __emu_mm_extract_ps

#define _mm_insert_ps __emu_mm_insert_ps

#define _mm_round_ps __emu_mm_round_ps

#define _mm_insert_epi64 __emu_mm_insert_epi64

#define _mm_extract_epi64 __emu_mm_extract_epi64

The hotfix works for me - thanks :)