约有 3 项符合查询结果, 以下是第 1 - 1项。
费时 < 1 秒。
是使用同一个版本的编译器,找到原因了~~,由于进程启动后,用户安装了一个新版本的vcredist,在我们的进程重启之前,我们新加载一个依赖于CRT的DLL,这时候LoadLibrary 这个DLL的时候,winsxs查找CRT DLL的时候,会找到新版本的CRT DLL路径,但是由于LoadLibrary函数的LdrpFindOrMapDll是使用全路径来进行DLL是否已经加载的判断的,这时候会认为该DLL没有加载进入进程,所以会新加载一份新版本的CRT,从而导致多份CRT DLL被加载到内存中~~~
Posted in C/C++本地代码调试
by
purplethunder
on 2013-05-08
最近碰到一个非常奇怪的Crash,在客户的电脑上会偶然出现Crash,出现Crash时有一个共同点,会出现加载2个不同版本的MSVCRT的示例,因此导致进程里面出现2个CRT的堆,所以在释放内存的时候,出现了Crash。按照Loadlibrary的一般逻辑: 程序在调用Loadlibrary的时候,会调用LdrLoadDLL--LdrpFindOrMapDll---》LdrpFindLoadedDllByName---》 如果进程中已经存在MSVCRT的DLL的时候,这个时候,不应该加载一份新版本的MSVCRT的实例才对,请各位帮忙看看有什么情况会出现已经存在一个CRT但是 ...
Posted in C/C++本地代码调试
by
purplethunder
on 2013-05-07
在一台笔记本上安装了一个文件系统过滤驱动,启动类型为boot,group为filter, type为filesys,将驱动删除,只留下驱动服务不删除,windows滚动条第一次到快结束的时候(90%左右),出现一个PAGE_FAULT_IN_NONPAGED_AREA的蓝屏错误,重启之后就不蓝屏了,然后重启就ok了。不管是minidump还是kerneldump都无法产生。
关机启动,然后又是蓝屏一次,重启正常进入系统。由于笔记本没有串口,这个无法使用windbg附加分析,请大家帮忙看看有没有分析思路,谢谢!
Posted in Windows内核调试
by
purplethunder
on 2011-04-14