0xc0000008 invalid handle 错误原因纪实
来源:互联网 发布:linux cpu使用率版本 编辑:程序博客网 时间:2024/05/01 22:51
转自:http://blog.csdn.net/xuplus/article/details/2301699
关于调试时程序报 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纪实
- 内核编译图文教程,usb键盘鼠标篇
- /etc/profile和 . profile 文件
- Xcode 6.1 做ipa企业级分发(In-House模式)详细步骤
- 指针函数 、函数指针 、 回调函数
- 自定义ActionBar盘点---------GlassActionBar
- 0xc0000008 invalid handle 错误原因纪实
- poj3348
- 2.10学习笔记 java任务调度
- Java判断字符串是否是乱码
- CopyOnWriteArrayList(二)
- CocoaPods的安装和使用
- [Leetcode]String to Integer (atoi)
- Binder驱动笔记
- BaseAdapter深入浅出