AVX サポートなし (コンパイル オプションに /arch:AVX なし) で MSVC 12 によってコンパイルされた Windows x64 C++ プログラムがあります。
また、Win7 で Core i7 4700MQ を使用している 1 人の顧客からのクラッシュ レポートがあります。例外コードは c000001d (不正な命令) で、例外オフセットは sin() 関数内の「vmovd r9,xmm0」命令を指しています。このユーザーで 2 つの異なるビルドを試しましたが、どちらの場合も同じ命令を指しています。
AVX サポートなしでコンパイルされた場合でも、sin() 組み込みの msvc ライブラリ バージョンには特別な AVX コード パスがあるようです。このコードは、AVX を搭載していない古い i3 プロセッサでも問題なく動作します。
では、この特定の i7 でこの例外が発生する原因は何でしょうか? さまざまな CPU を使用している多くの顧客にとって、同じコードが問題なく実行されています。
OS 設定/BIOS で AVX を何らかの形で無効にすることができ、sin() コードがこれをチェックできないのではないでしょうか? それとも、AVX サポートを追加する OS アップデートがあり、それがないと、AVX コードが c000001d をトリガーする可能性がありますか?