mtex.cpp 断言失败崩溃:行90,行108

清泛原创
> xxx.exe!CSingleLock::CSingleLock(CSyncObject* pObject, BOOL bInitialLock) 行 90 C++
ASSERT(pObject->IsKindOf(RUNTIME_CLASS(CSyncObject)));

> xxx.exe!CSingleLock::Lock(unsigned long dwTimeOut) 行 108 C++
m_bAcquired = m_pObject->Lock(dwTimeOut);

 

断言失败崩溃在mtex.cpp源码的上述行中:同步对象不是CSyncObject类型的对象或同步对象Lock失败。出现类似这样的问题,表面看似乎是同步对象的问题,可是排查源码发现CSingleLock及同步对象均正常使用。

猜测是由于某种原因,破坏了同步对象的数据,导致使用时出现奇怪的错误。导致这种情况的原因可能有:缓冲区溢出,内存被非法修改,dll动态库与编译lib不匹配(如使用低版本的lib编译出的exe调高版本的dll,即可能发生函数偏移量错位等情况)等。

可以往这个方向去查,本文仅提供一个思路。有其他的异常情况或好的解决方案欢迎回复评论。

mtex CSingleLock 断言失败 崩溃

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部