Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.
首先,確定自己的程式碼正確,執行緒函式正確退出後,報這個錯,最後發現執行緒函式是這麼定義:
static DWORD WINAPI ServerWork(LPVOID lpParameter)
其中WINAPI為:
#define WINAPI __stdcall
把WINAPI去掉就好了。
解析:
主模組在呼叫Dll的匯出函式時會儲存返回地址在堆疊中(ESP+xxx)。函式呼叫返回時,會彈棧取得返回地址(ESP-xxx),從而返回到主模組。
vaule of ESP was not properly saved across a function call.
上面出現的錯誤是系統提示主模組呼叫前堆疊的指標(ESP),與呼叫匯出函式後的指標不符。
一般有兩種情況會出現類似錯誤。
1. Dll匯出函式宣告匯出方法,與主模組中宣告的匯入方法不一致。使得呼叫時引數的傳遞中,破壞了呼叫堆疊,出現錯誤。
2. Dll匯出函式本身破壞了呼叫堆疊。編碼中最一般的錯誤比如:物件(如CString)等。
解決方法:
針對第1種情況,請確定匯出方(Dll等)與匯入方(Exe等)的宣告保持一致。
對於第2種情況,請保證產生的物件都被安全的釋放。
備註:
可以試試下面的方法可以簡單的測試方法
將Dll的匯出函式定義成空處理(直接返回),如還出現錯誤,則是呼叫錯誤。
國外論壇不少人也提過這個問題將Calling Convention由原來的__cdecl
(/Gd)修改為__stdcall (/Gz),其實是因為IUnknown被轉換為IDispatch的問題。
http://blog.csdn.net/sysprogram/article/details/7737397
http://www.cnblogs.com/junchu25/archive/2012/08/10/2631133.html
相關文章
- Failure at final check of Oracle CRS stack.AIOracle
- use the function_based index to access the null valueFunctionIndexNull
- Not-null property references a transient value - transient instance must be saved before current opeNull
- 【React】Invalid hook call. Hooks can only be called inside of the body of a function component.ReactHookIDEFunction
- C# return dynamic/anonymous type value as function resultC#Function
- APP-OFA-48400: Error: function faxbmt returned failure 的處理APPErrorFunctionAI
- win10頻繁藍屏kernel security check failure修復方法Win10AI
- 安裝Oracle cluster報錯 Failure at final check of Oracle CRS Stack 10OracleAI
- Root.sh failed at Failure at final check of Oracle CRS stack 10 問題AIOracle
- Http failure response 0 Unknown error 錯誤分析HTTPAIError
- win10頻繁藍色畫面kernel security check failure修復方法Win10AI
- ORA-00600: [kcbz_check_objd_typ_3], [0], [0], [1], [], [], [], []OBJ
- Oracle IZ0-053 Q285(Rman Repair Failure)OracleAI
- Can't use function return value in write context 使用empty遇到報錯FunctionContext
- Spring Cloud Function現RCE 0-day漏洞SpringCloudFunction
- 練習使用list failure,advise failure; repair failure;AI
- 監聽所有模型的 saved 事件模型事件
- [排錯]安裝Oracle 10g RAC報Failure at final check of Oracle CRS stack 10錯誤Oracle 10gAI
- Win10開啟PhotoShop CC時藍色畫面提示kernel security check failure怎麼辦Win10AI
- Failure is not fatal, but failure to change might be.AI
- Register GHD Hair Straightener to properly ingredientsAI
- 用element-ui 填充date-picker時,報value.getTime is not a function錯誤UIFunction
- django 報錯:ValueError: The database backend does not accept 0 as a value for AutoField.DjangoErrorDatabase
- Oracle OCP 1Z0 053 Q33(ALTER DISKGROUP ** CHECK)Oracle
- javascript 中function(){},new function(),new Function(),Function 摘錄JavaScriptFunction
- vue報錯:[Vue warn]: Invalid prop: type check failed for prop "value". Expected Number, got String....VueAIGo
- Import Error: cannot import name ‘export_saved_modelImportErrorExport
- 記一次ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], []ErrorOBJ
- win10系統開啟VPNManage.exe出現藍屏kernel_security_check_failure如何解決Win10AI
- How to Copy ASM Files Across Nodes [ID 1147859.1]ASMROS
- An invalid XML character (Unicode: 0x10) was found in the value of attributeXMLUnicode
- ora-30004:when using sys_connect_by_path function,cannot have seperator as part of column valueFunction
- 用程式碼動太加入F4選擇列表(Function:F4IF_INT_TABLE_VALUE_REQUEST)Function
- ORA-27300: ORA-27301: OS failure message: Error 0 錯誤AIError
- onclick="return check()" 和 onclick="check()" 區別
- Migration Of An Oracle Database Across OS Platforms [ID 733205.1]OracleDatabaseROSPlatform
- win10系統開啟VPNManage.exe出現藍色畫面kernel_security_check_failure如何解決Win10AI
- Assertion failure 錯誤AI