0xc0000008 invalid handle 错误原因纪实
来源:互联网 发布:怎么做数据新闻 编辑:程序博客网 时间:2024/05/02 02:23
关于调试时程序报 0xC00000008: Invalid Handle 错误的原因。
前几天在调试一个产品时,进入到某一个函数调试,在函数返回时, IDE开始报 "叉叉叉...0xC00000008: Invalid Handle " 的调试错误,此时按F10, 不能继续往下执行,只能转到汇编模式调试……这不明白着流氓吗!?我怎么能看得懂汇编……
来劲了,非要弄明白到底是什么原因导致了报这个叉叉叉错误。
捣鼓了好久好久,折腾了很长很长,但没有找到错误的原因……看来非的请我的偶像赵阳了,结果他来调了好久也是没找到根本原因,最后留下几句鸟语铩羽而归。我挺高兴,偶像竟然没搞定。
又请来了我的部门经理ZhangSY同志,他在我心目中的地位那绝对是“手中无剑,心中无剑”的N系列。
过然,他坐下来,还是那么的思路清晰,身手敏捷,而且凸显了超好的记忆力,N年前的代码,他都能记得请当时为什么要屏蔽,为什么要修改……经过一番望闻问切,把原因锁定在了xMutex这个类上,类的析构函数上!
其实这里最终的结果已经不远了,但还不是真正的原因所在。
我跟你铆上了!
世上从来就没有救世主,也没有神仙&皇帝……
看,瞅,吧嗒吧嗒整了整整一下午+ 一个晚上,额滴神啊,找到原因了:邱YL说的也很对。
class xMutex a;
struct var
{ int a;
xMutex mtx;
};
var list; //此为全局变量
void fun1()
{
var temp;
memcpy(&temp, &list, sizeof(var); //问题出在此
.....叉叉叉操作....
return fool;// 跟踪到此处,报0xc00000008错误!
}
看明白了吗?
在函数fun1的作用域内,已经初始化过的全局变量list的值通过拷贝付给了局部变量 temp,
在函数出栈前,temp的声明周期结束,系统调用了内部mtx的析构函数将原本属于list的mtx对象给析构了!
据我发现,这个0xc00000008是一级异常(first chance exception!)。调试中出现一级异常只能终止。
------
今天写一个关于pe的程序,调试时又出现了这个008,出现异常附近的代码如下:
CJWPckDlg::~CJWPckDlg()
{
if (m_hMapFl)
{
UnmapViewOfFile(m_hMapFl);
CloseHandle(m_hMapFl); //执行此语句时报008错误。
m_hMapFl = NULL;
}
为啥?
我把m_hMapFl定义为HANDLEL类型,而事实上m_hMapfl = MapViewOfFile();本来MapViewOfFile应该返回一个DWORD类型的地址。
当执行CloseHandle(m_hMapFl)时,非法句柄!
- 0xc0000008 invalid handle 错误原因纪实
- 0xc0000008 invalid handle 错误原因纪实
- 0xC0000008: An invalid handle was specified
- 最可能的异常: 0xC0000008: An invalid handle was specified 的原因与解决方案
- VS2012 0xC0000008: An invalid handle was specified。
- 0x7c92e4ff 处最可能的异常: 0xC0000008: An invalid handle was specified 的原因与解决方案
- VSS的Invalid handle错误
- VSS无法连接的Invalid Handle错误
- Vistual Stuido 2005的"The Binding Handle is Invalid"错误
- 队列读取器代理 遇到错误 Row handle is invalid
- android: invalid start tag xxxxx 错误原因
- insmod--invalid module format错误原因
- android: invalid start tag Selector 错误原因
- Invalid bound statement 错误的可能原因
- VSS Invalid Handle 问题解决
- JDBC错误信息:Invalid Handle
- Invalid handle returned
- [错误笔记]Linux纪实
- tolua++初探(一)
- ASP.NET弹出页面的应用(VB)
- [学习笔记]小型论坛功能——初步论坛形式[终]
- Object-oriented of the three basic characteristics
- Hibernate's Lazy strategy(2)
- 0xc0000008 invalid handle 错误原因纪实
- SSH整合理念
- datetime使用大全
- asdfwqerqwrrrrqw
- COM学习笔记(一)
- C#中datetime的使用
- Servlet简介&开发介绍
- Super HTTP 通道
- Vss的使用方法