Intel® Embree Ray Tracing Kernels
Discussion forum on the open source ray tracing kernels for fast photo-realistic rendering on Intel® CPU(s)

Application Crash: Illegal instruction

SvenW_Intel
Moderator
2,884 Views

Application Crash: Illegal instruction
0 Kudos
9 Replies
ishariot
Beginner
2,883 Views

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
Fehlermodulversion: 0.0.0.0
Fehlermodulzeitstempel: 4e10c935
Ausnahmecode: c000001d
Ausnahmeoffset: 0000000000057b7f
Betriebsystemversion: 6.1.7600.2.0.0.256.48
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 ;)

0 Kudos
Manfred_Ernst__Intel
New Contributor I
2,884 Views
The __SSE4_2__ define might be the problem here. What CPU do you have in your system?
0 Kudos
Manfred_Ernst__Intel
New Contributor I
2,883 Views

We'll fix thisfor the final release.

0 Kudos
Manfred_Ernst__Intel
New Contributor I
2,884 Views

"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.

0 Kudos
ishariot
Beginner
2,883 Views

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...

0 Kudos
SvenW_Intel
Moderator
2,883 Views
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.
0 Kudos
ishariot
Beginner
2,883 Views

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..

0 Kudos
SvenW_Intel
Moderator
2,884 Views
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

0 Kudos
ishariot
Beginner
2,883 Views
The hotfix works for me - thanks :)
0 Kudos
Reply