简体   繁体   English

exe_common.inl 中的非法指令

[英]Illegal Instruction in exe_common.inl

This is about a week I am trying to solve my problem and I really need help.这是我试图解决问题的大约一个星期,我真的需要帮助。 I hope someone will find what is wrong with my setup.我希望有人会发现我的设置有什么问题。

(I am french so I apologize for any English mistakes) (我是法国人,所以对于任何英语错误我深表歉意)

CONTEXT语境

I have a Visual Studio Project which has been developed from OpenFace, a free open-source library, downloaded at that address: https://github.com/TadasBaltrusaitis/OpenFace .我有一个从 OpenFace 开发的 Visual Studio 项目,OpenFace 是一个免费的开源库,可在该地址下载: https ://github.com/TadasBaltrusaitis/OpenFace。 "Developed from" because the project just uses the code of OpenFace. “开发自”是因为该项目只是使用 OpenFace 的代码。 I precise that the project was not made by me, I checked out from a private repository.我明确指出该项目不是我制作的,我是从私人存储库中检出的。

PROBLEM问题

My project build an executable but not run, stopped by an illegal instruction at the file exe_common.inl (don't know what this file is) at the line 223, before getting into in the entry point of my programm (cout << " " << endl at the very beggining of the main() function is not executed).我的项目构建了一个可执行文件但没有运行,在进入我的程序的入口点之前被文件 exe_common.inl(不知道这个文件是什么)的非法指令停止在第 223 行(cout <<“ " << endl 在 main() 函数的最开始没有被执行)。

Here is the guilty line:这是有罪的行:

__scrt_current_native_startup_state = __scrt_native_startup_state::initialized;

Here the stack trace at that breakpoint:这是该断点处的堆栈跟踪:

CamFeaturesExtractor_Affich.exe!dlib::get_global_clock(void)
CamFeaturesExtractor_Affich.exe!00007ff63493114e()
ucrtbase.dll!_initterm()
CamFeaturesExtractor_Affich.exe!__scrt_common_main_seh() line 223
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()

Here the exact message exception:这里是确切的消息异常:

Unhandled exception at 0x00007FF63499C5B7 in CamFeaturesExtractor_Affich.exe: 0xC000001D: Illegal Instruction.

WHAT I TRIED我试过什么

  • Change VS 2017 to 2015将 VS 2017 更改为 2015
  • Build in Debug/Release in x64/x86在 x64/x86 中构建调试/发布
  • Change Enhanced Instruction Set in Configuration Properties > C/C++ > Code Generation to AVX, AVX2, SSE, SSE2, IA32, No Set...在 Configuration Properties > C/C++ > Code Generation 中将增强指令集更改为 AVX、AVX2、SSE、SSE2、IA32、No Set...
  • Disable any optimization禁用任何优化

That problem doesn't appear on some more recent computer (check below for my spec) so my first guess is to say that is a hardware problem.这个问题没有出现在一些更新的计算机上(检查下面的我的规格)所以我的第一个猜测是说这是一个硬件问题。 The exception is not triggered on Intel Cord Duo I5 (with same model of computer than mine). Intel Cord Duo I5(与我的计算机型号相同)不会触发异常。 Here is my specs:这是我的规格:

Edition : Windows 10 Professionel
Version : 1511
OS Version : 10586.679
Processor : Intel(R) Celeron(R) CPU 2950M @ 2.00 GHz 2.00 GHz
RAM : 4G
System type : OS 64 bits, processeur x64

If the problem comes from my poor processor doesn't have the instruction, is there a workaround or I need to change my computer?如果问题出在我糟糕的处理器没有指令,是否有解决方法或者我需要更换我的电脑? Let me know if you need some informations I forgot to provide and thanks in advance if you try to help me...如果您需要一些我忘记提供的信息,请告诉我,如果您尝试帮助我,请提前致谢...

EDIT编辑

The part of disassembly where the code stop as requested:代码按要求停止的反汇编部分:

00007FF6D635B5BD  mov         eax,0FFh  
00007FF6D635B5C2  jmp         __scrt_common_main_seh+167h (07FF6D635B6B3h)  

            _initterm(__xc_a, __xc_z);
00007FF6D635B5C7  lea         rdx,[__xc_z (07FF6D639ED98h)]  
00007FF6D635B5CE  lea         rcx,[__xc_a (07FF6D639EC10h)]  
00007FF6D635B5D5  call        _initterm (07FF6D635C4B0h)  

            __scrt_current_native_startup_state = __scrt_native_startup_state::initialized;
00007FF6D635B5DA  mov         dword ptr [__scrt_current_native_startup_state (07FF6D64162E0h)],2  
        }
        else
00007FF6D635B5E4  jmp         __scrt_common_main_seh+0A2h (07FF6D635B5EEh)  
        {
            has_cctor = true;
00007FF6D635B5E6  mov         sil,1  
00007FF6D635B5E9  mov         byte ptr [has_cctor],sil  
        }

        __scrt_release_startup_lock(is_nested);
00007FF6D635B5EE  mov         cl,bl  
00007FF6D635B5F0  call        __scrt_release_startup_lock (07FF6D635B368h) 

Note that exe_common.inl, as said in comment, is a Read-Only Visual Studio file located in C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt\src\vcruntime\exe_common.inl.请注意,如评论中所述,exe_common.inl 是位于 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt\src\vcruntime\exe_common.inl 中的只读 Visual Studio 文件。 I made a gist if you want to see it: https://gist.github.com/AlEmerich/281994ebbcde7d3bac88f21a85de96e2如果你想看的话,我做了一个要点: https ://gist.github.com/AlEmerich/281994ebbcde7d3bac88f21a85de96e2

LAST EDIT: I don't know if it is the right way to do but I let know the audience that I give up on that problem by trying to change my computer.最后编辑:我不知道这是否是正确的做法,但我通过尝试更换计算机让听众知道我放弃了这个问题。 I have now a more recent hardware and it throws any errors.我现在有一个更新的硬件,它会抛出任何错误。 Thanks anyway for your help !无论如何感谢您的帮助!

For me, remove _CRT_SECURE_NO_WARNINGS from Release Mode and try to build in Release Mode.对我来说,从发布模式中删除_CRT_SECURE_NO_WARNINGS并尝试在发布模式下构建。 It should contain some errors, fix them and than it should be fine.它应该包含一些错误,修复它们并且应该没问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM