帮忙分析_DllMainCRTStartup中的错误

modena 2006-03-03 11:28:32
程序访问网络的客户端应用程序,应用到大量网络和媒体相关处理的DLL,不基于MFC,目前对底层库进行升级.
出现的问题是:
Release/Debug正常应用较长时间,未出现问题.
在调试状态时,正常无规则操作可能引起Crack,输出显示:
HEAP[XConvert.exe]: Heap missing last entry in committed range near 194ed0
断点位于一个COM组件DLL中的_DllMainCRTStartup中如下位置:
BOOL retcode = TRUE;

/*
* If this is a process detach notification, check that there has
* has been a prior process attach notification.
*/
if ( (dwReason == DLL_PROCESS_DETACH) && (__proc_attached == 0) )
/*
* no prior process attach notification. just return
* without doing anything.
*/
return FALSE;

__try {
if ( dwReason == DLL_PROCESS_ATTACH || dwReason == DLL_THREAD_ATTACH )
{
if ( _pRawDllMain )
retcode = (*_pRawDllMain)(hDllHandle, dwReason, lpreserved);

if ( retcode )
retcode = _CRT_INIT(hDllHandle, dwReason, lpreserved);

if ( !retcode )
return FALSE;
}

// 断点位于此处,此时retcode=0
retcode = DllMain(hDllHandle, dwReason, lpreserved);

编译环境经DailyBuild自动配置,因此一般不会存在DLL引用关系错位等问题.
虽然目前不影响使用,但一直心中不安,请大家帮忙分析产生此种现象可能的原因!
...全文
402 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
modena 2006-03-13
  • 打赏
  • 举报
回复
重新构建了下配置流程,问题未再出现,估计是DLL版本配对有问题!


谢谢各位捧场:)
mythay 2006-03-07
  • 打赏
  • 举报
回复
原来的苦肯定不存在这个问题,而现在出现这种内存问题,可能是由于不同组件间是用不同的语言编制的,或者同一种语言编制时的环境配置不一样,而在特殊的情况下引起对管理的混乱。
modena 2006-03-07
  • 打赏
  • 举报
回复
出错的DLL是采用标准的COM规则自己制定的,非MFC的COM被MFC应用程序调用

分析可能是因为某些编译器选项不一致,引起DLL接口规则不同产生
也有可能是某些调用约定不对产生
rageliu 2006-03-04
  • 打赏
  • 举报
回复
up,象这种_DllMainCRTStartup中的错误,一般是其他地方的问题导制的
oyljerry 2006-03-04
  • 打赏
  • 举报
回复
还是检查一下代码等什么的~调试
rageliu 2006-03-03
  • 打赏
  • 举报
回复
高深!!本来想说的都被楼上说完了!!关注....
DentistryDoctor 2006-03-03
  • 打赏
  • 举报
回复
Heap missing last entry in committed range near 194ed0

一般是内存越界或破坏之类的,造成堆破坏。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧