帮忙分析_DllMainCRTStartup中的错误
程序访问网络的客户端应用程序,应用到大量网络和媒体相关处理的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引用关系错位等问题.
虽然目前不影响使用,但一直心中不安,请大家帮忙分析产生此种现象可能的原因!
问题点数:200、回复次数:7Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-03 21:58:33 得分 30
Heap missing last entry in committed range near 194ed0
一般是内存越界或破坏之类的,造成堆破坏。Top
2 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2006-03-03 22:24:52 得分 20
高深!!本来想说的都被楼上说完了!!关注....Top
3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2006-03-04 14:48:09 得分 30
还是检查一下代码等什么的~调试Top
4 楼rageliu(天气好了就去长白山看水怪去了,嘿嘿...)回复于 2006-03-04 22:16:31 得分 20
up,象这种_DllMainCRTStartup中的错误,一般是其他地方的问题导制的Top
5 楼modena(非云)回复于 2006-03-07 14:56:04 得分 0
出错的DLL是采用标准的COM规则自己制定的,非MFC的COM被MFC应用程序调用
分析可能是因为某些编译器选项不一致,引起DLL接口规则不同产生
也有可能是某些调用约定不对产生
Top
6 楼mythay(小黑)回复于 2006-03-07 16:07:43 得分 100
原来的苦肯定不存在这个问题,而现在出现这种内存问题,可能是由于不同组件间是用不同的语言编制的,或者同一种语言编制时的环境配置不一样,而在特殊的情况下引起对管理的混乱。Top
7 楼modena(非云)回复于 2006-03-13 09:34:35 得分 0
重新构建了下配置流程,问题未再出现,估计是DLL版本配对有问题!
谢谢各位捧场:)Top




