Original issue 1410 created by elkhaze on 2014-10-17T21:25:21.000Z:
What steps will reproduce the problem?
1. Build the sample cefclient.exe (uses libcef.dll) for windows 64 bit
Run it on Windows Vista x64 bit with Processor that support AVX instruction set. No crash when running on older processor that does not support AVX instruction set.
Application will crash on startup as Vista does not support AVX. This issue does not happen on 32bit version of Vista. There is a guard on 32 bit, but not 64 bit.
What is the expected output? What do you see instead?
Crash, supplied client cefsample.exe crashes when run on Windows Vista X64 bit with a newer processor that support AVX. It will run fine on older processor that does not support AVX.
What version of the product are you using? On what operating system?
I am using cef_binary_3.1916.1839_windows64, same issue happens in cef_binary_3.2139.1840_windows64
On Windows Vista 64bit with newer processor supporting AVX.
This issue does not happen on older processors that do not support AVX instruction set.
Windows Vista x64 does not support AVX instruction set. Code doe Processor Guard, but should also do OS Guard.
Please provide any additional information below.
The libcef library using log function <math.h> to generate as part of the chromium library. This log function fails crashing the clientcef.exe as it tries to use the AVX instruction on a OS that does not support AVX (Vista x64)
Stack dump from cefclient.exe cef_binary_3.2139.1840_windows64_client
failed AVX instruction: vpsrlq xmm3,xmm0,34h
libcef.dll!log() Line 429 Asm
libcef.dll!tcmalloc::Sampler::Init(unsigned int seed) Line 92 + 0x86 bytes C++
libcef.dll!tcmalloc::ThreadCache::CreateCacheIfNecessary() Line 381 + 0x19 bytes C++
libcef.dll!`anonymous namespace'::do_malloc(unsigned __int64 size) Line 1097 + 0x5 bytes C++
libcef.dll!malloc(unsigned __int64 size) Line 111 C++
libcef.dll!calloc(unsigned __int64 n, unsigned __int64 elem_size) Line 109 + 0xd bytes C++
libcef.dll!_calloc_crt(unsigned __int64 count, unsigned __int64 size) Line 62 + 0xe bytes C
libcef.dll!_CRT_INIT(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 231 + 0xd bytes C
libcef.dll!__DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 371 + 0xd bytes C
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]