内存引起的蓝屏问题排查

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cnliuyong/article/details/82428497

一台笔记本电脑增加了相同型号的4G内存,共8G内存,初使用一切正常。

有一次在一天内出现了三次蓝屏,大约间隔20分钟就出现了一次。

因为考虑新增了内存,所以先从内存排查起,找开内存盖板后,型号相同,品牌相同,

拆内存时发现有一块温度相对要明显高一些,于是先留下温度低的那块进行测试。

使用Memtest 5.0测试,PASS 3次,没有问题。

只装上原先温度高一些的那块内存,不到1分钟就检查出错误,换4.2版本Memtest测试,并没有马上报错。

再换Memtest5.0测试,都在刚开始检测就发现错误。

经验小结:

1、用Memtest测试内存,应至少把内存完整测试一遍,时间大约在20到30分钟之间,至少看到pass 1遍后再ESC退出。如果时间充分覆盖测试3次以上会更检查得更彻底。

2、如果用Memtest4.2版测试PASS 1遍,可再用Memtest5.0版测试一遍。如果是先用Memtest5.0版测试的,同样可再改用4.2版测试一遍。

 

展开阅读全文

ntkrnlpa.exe引起蓝屏问题

11-09

各位老师们帮看一下,谢谢!!!rn最近有两台服务器经常蓝屏,均是由这个ntkrnlpa.exe程序引起的,有windbg查看一下minidump文件内容如下:rnA 服务器 IBM 3200 win 2003 sp2rn差不多10天蓝屏一次(近2个月)rn2012-11-9的minidump文件内容rnMini Kernel Dump File: Only registers and stack trace are availablernrnSymbol search path is: C:\WINDOWS\SymbolsrnExecutable search path is: rnUnable to load image \WINDOWS\system32\ntkrnlpa.exe, Win32 error 0n2rn*** WARNING: Unable to verify timestamp for ntkrnlpa.exernWindows Server 2003 Kernel Version 3790 (Service Pack 2) MP (4 procs) Free x86 compatiblernProduct: Server, suite: Enterprise TerminalServer SingleUserTSrnMachine Name:rnKernel base = 0x80800000 PsLoadedModuleList = 0x808a6ea8rnDebug session time: Fri Nov 9 16:08:57.244 2012 (UTC + 8:00)rnSystem Uptime: 10 days 7:51:23.093rnUnable to load image \WINDOWS\system32\ntkrnlpa.exe, Win32 error 0n2rn*** WARNING: Unable to verify timestamp for ntkrnlpa.exernLoading Kernel Symbolsrn...............................................................rn...................................................rnLoading User SymbolsrnLoading unloaded module listrn.....rn*******************************************************************************rn* *rn* Bugcheck Analysis *rn* *rn*******************************************************************************rnrnUse !analyze -v to get detailed debugging information.rnrnBugCheck 50, a8c0a704, 0, 80934a5d, 0rnrnrnCould not read faulting driver namernProbably caused by : memory_corruption ( nt!MiRemoveWsle+20b )rnrnFollowup: MachineOwnerrn---------rnrn0: kd> !analyz -vrnNo export analyz foundrn0: kd> !analyze -vrn*******************************************************************************rn* *rn* Bugcheck Analysis *rn* *rn*******************************************************************************rnrnPAGE_FAULT_IN_NONPAGED_AREA (50)rnInvalid system memory was referenced. This cannot be protected by try-except,rnit must be protected by a Probe. Typically the address is just plain bad or itrnis pointing at freed memory.rnArguments:rnArg1: a8c0a704, memory referenced.rnArg2: 00000000, value 0 = read operation, 1 = write operation.rnArg3: 80934a5d, If non-zero, the instruction address which referenced the bad memoryrn address.rnArg4: 00000000, (reserved)rnrnDebugging Details:rn------------------rnrnrnCould not read faulting driver namernrnREAD_ADDRESS: a8c0a704 rnrnFAULTING_IP: rnnt!MiRemoveWsle+20brn80934a5d ?? ???rnrnMM_INTERNAL_CODE: 0rnrnCUSTOMER_CRASH_COUNT: 1rnrnDEFAULT_BUCKET_ID: DRIVER_FAULT_SERVER_MINIDUMPrnrnBUGCHECK_STR: 0x50rnrnPROCESS_NAME: dllhost.exernrnCURRENT_IRQL: 1rnrnLAST_CONTROL_TRANSFER: from 8085ed87 to 80827cb3rnrnSTACK_TEXT: rna9d53bb0 8085ed87 00000050 a8c0a704 00000000 nt!IopFreeIrp+0x19drna9d53c28 8088c870 00000000 a8c0a704 00000000 nt!MiFreeWsleList+0x861rna9d53c40 80934a5d badb0d00 a9d53ce8 a9d53c60 nt!MiDeletePageTablesForPhysicalRange+0xd60rna9d53cb4 80934c5f 8b5b0830 8a9d2870 a9d53ce8 nt!MiRemoveWsle+0x20brna9d53cdc 809345ae 8a9d2870 00000000 8bd49ad0 nt!MiRepointWsleHashIndex+0x1e7rna9d53d04 80934648 e3dec358 8b5b0848 00000ab8 nt!MiLocateWsle+0xcrna9d53d48 80934765 00000ab8 00000001 a9d53d64 nt!MiLocateWsle+0xa6rna9d53d58 8088983c 00000ab8 038afeb0 7c95845c nt!MiLocateWsle+0x1c3rna9d53d64 7c95845c badb0d00 038afe4c 00000000 nt!MiRemoveUnusedSegments+0xbd4rnWARNING: Frame IP not in any known module. Following frames may be wrong.rna9d53d68 badb0d00 038afe4c 00000000 00000000 0x7c95845crna9d53d6c 038afe4c 00000000 00000000 00000000 0xbadb0d00rna9d53d70 00000000 00000000 00000000 00000000 0x38afe4crnrnrnSTACK_COMMAND: kbrnrnFOLLOWUP_IP: rnnt!MiRemoveWsle+20brn80934a5d ?? ???rnrnSYMBOL_STACK_INDEX: 3rnrnSYMBOL_NAME: nt!MiRemoveWsle+20brnrnFOLLOWUP_NAME: MachineOwnerrnrnMODULE_NAME: ntrnrnDEBUG_FLR_IMAGE_TIMESTAMP: 503382ffrnrnIMAGE_NAME: memory_corruptionrnrnFAILURE_BUCKET_ID: 0x50_nt!MiRemoveWsle+20brnrnBUCKET_ID: 0x50_nt!MiRemoveWsle+20brnrnFollowup: MachineOwnerrn---------rnrn2012-10-26 minidump 文件内容:rnMicrosoft (R) Windows Debugger Version 6.12.0002.633 X86rnCopyright (c) Microsoft Corporation. All rights reserved.rnrnrnLoading Dump File [C:\WINDOWS\Minidump\Mini102612-01.dmp]rnMini Kernel Dump File: Only registers and stack trace are availablernrnSymbol search path is: C:\WINDOWS\SymbolsrnExecutable search path is: rnUnable to load image \WINDOWS\system32\ntkrnlpa.exe, Win32 error 0n2rn*** WARNING: Unable to verify timestamp for ntkrnlpa.exernWindows Server 2003 Kernel Version 3790 (Service Pack 2) MP (4 procs) Free x86 compatiblernProduct: Server, suite: Enterprise TerminalServer SingleUserTSrnMachine Name:rnKernel base = 0x80800000 PsLoadedModuleList = 0x808a6ea8rnDebug session time: Fri Oct 26 08:16:21.724 2012 (UTC + 8:00)rnSystem Uptime: 14 days 2:15:38.921rnUnable to load image \WINDOWS\system32\ntkrnlpa.exe, Win32 error 0n2rn*** WARNING: Unable to verify timestamp for ntkrnlpa.exernLoading Kernel Symbolsrn...............................................................rn...................................................rnLoading User SymbolsrnLoading unloaded module listrn.......rn*******************************************************************************rn* *rn* Bugcheck Analysis *rn* *rn*******************************************************************************rnrnUse !analyze -v to get detailed debugging information.rnrnBugCheck 19, 20, 8b370ef0, 8b370f08, a030015rnrnProbably caused by : memory_corruption ( nt!MiInsertImageSectionObject+b5 )rnrnFollowup: MachineOwnerrn---------rnrn2: kd> !analyze -vrn*******************************************************************************rn* *rn* Bugcheck Analysis *rn* *rn*******************************************************************************rnrnBAD_POOL_HEADER (19)rnThe pool is already corrupt at the time of the current request.rnThis may or may not be due to the caller.rnThe internal pool links must be walked to figure out a possible cause ofrnthe problem, and then special pool applied to the suspect tags or the driverrnverifier to a suspect driver.rnArguments:rnArg1: 00000020, a pool block header size is corrupt.rnArg2: 8b370ef0, The pool entry we were looking for within the page.rnArg3: 8b370f08, The next pool entry.rnArg4: 0a030015, (reserved)rnrnDebugging Details:rn------------------rnrnrnBUGCHECK_STR: 0x19_20rnrnPOOL_ADDRESS: 8b370ef0 rnrnCUSTOMER_CRASH_COUNT: 1rnrnDEFAULT_BUCKET_ID: DRIVER_FAULT_SERVER_MINIDUMPrnrnPROCESS_NAME: SystemrnrnCURRENT_IRQL: 0rnrnLAST_CONTROL_TRANSFER: from 808927bb to 80827cb3rnrnSTACK_TEXT: rnf78d6cc4 808927bb 00000019 00000020 8b370ef0 nt!IopFreeIrp+0x19drnf78d6d2c 80892b6f 8b370ef8 00000000 f78d6d80 nt!MiInsertImageSectionObject+0xb5rnf78d6d3c 80812890 8b370ef8 8c765020 808ae5c0 nt!MiRemoveImageSectionObject+0x1a3rnf78d6d80 808804eb 8c75f1b0 00000000 8c765020 nt!CcSetDirtyInMask+0x12crnf78d6dac 80949c7e 8c75f1b0 00000000 00000000 nt!MmProbeAndLockSelectedPages+0x24ffrnf78d6ddc 8088e132 80880400 00000000 00000000 nt!MiCloneProcessAddressSpace+0x489crnf78d6fb4 00000000 00000000 00000000 00000000 nt!NtAllocateVirtualMemory+0xbc4rnrnrnSTACK_COMMAND: kbrnrnFOLLOWUP_IP: rnnt!MiInsertImageSectionObject+b5rn808927bb ?? ???rnrnSYMBOL_STACK_INDEX: 1rnrnSYMBOL_NAME: nt!MiInsertImageSectionObject+b5rnrnFOLLOWUP_NAME: MachineOwnerrnrnMODULE_NAME: ntrnrnDEBUG_FLR_IMAGE_TIMESTAMP: 503382ffrnrnIMAGE_NAME: memory_corruptionrnrnFAILURE_BUCKET_ID: 0x19_20_nt!MiInsertImageSectionObject+b5rnrnBUCKET_ID: 0x19_20_nt!MiInsertImageSectionObject+b5rnrnFollowup: MachineOwnerrn---------rnrn 论坛

释放内存引起的问题

12-22

//别人问我,我问别人。rn//谁能给分析下 那里出问题了.rn#include rn#include rnrnrnstruct CStrDatarnrn int nDataLength; rn int nAllocLength; rn char* data()rn return (char*)(this+1); rn;rnrnclass CStrrnrnpublic:rn CStr();rn CStr( char * str);rn CStr( CStr & obj );rn ~CStr();rnprivate:rn void AllocBuffer( int nlen ) ;rn void Init();rn CStrData* GetCStrData() const;rn void ReleaseBuffer();rn int GetReferenceCount();rn int GetDataLength() const;rnrnpublic:rnrn operator char * () const return ( char * ) m_pchData ; rn CStr& operator = ( const CStr& stringSrc );rn char & operator []( const int & index );rn int GetLen() const;rn int GetAllocLength() const;rn char * GetBuffer();rnprotected:rn char * m_pchData;rnrn;rnrnbool operator == ( CStr & CStrObj1, CStr & CStrObj2 );rnusing namespace std;rnrnCStr::CStr()rnrn Init();rnrnrnCStr::CStr( char * str )rnrn int len = strlen( str ) + 1 ;rn Init();rn AllocBuffer( len );rn strcpy( GetBuffer(), (char *)str);rnrnrnCStr::CStr( CStr & obj )rnrn char * ObjBuffer = obj.GetBuffer();rn Init();rn AllocBuffer( obj.GetLen()+1 );rn strcpy( GetBuffer(),(char *)ObjBuffer);rn *GetCStrData() = *obj.GetCStrData();rnrnrnCStr::~CStr()rnrn ReleaseBuffer();rnrnrnvoid CStr::ReleaseBuffer()rnrn int i = 0;rn if( m_pchData )rn rn m_pchData = ( char * )GetCStrData();rn delete[] m_pchData;rn rn m_pchData = NULL;rnrnrnchar * CStr::GetBuffer()rnrn return m_pchData;rnrnrnvoid CStr::Init()rnrn m_pchData = NULL;rn //ReleaseBuffer();rn rnrnrnvoid CStr::AllocBuffer( int nLen )rnrn if( nLen == 0 )rn Init();rn else rn rn CStrData* pData;rn if( nLen <= 64 )rn rn pData = ( CStrData* )rn new char[ sizeof(CStrData) + ( 64 )*sizeof( char )];rn pData->nAllocLength = 64;rn rn else if( nLen <= 128 )rn rn pData = ( CStrData* )new rn char[ sizeof(CStrData) + ( 128 )*sizeof( char )];rn pData->nAllocLength = 128;rn rn else if( nLen <= 256 )rn rn pData = ( CStrData* )new rn char[ sizeof(CStrData) + ( 256 )*sizeof( char )];rn pData->nAllocLength = 256;rn rn else if( nLen <= 512 )rn rn pData = ( CStrData* )new rn char[ sizeof(CStrData) + ( 512 )*sizeof( char )];rn pData->nAllocLength = 512;rn rn elsern rn pData = ( CStrData* )new rn char[ sizeof(CStrData) + ( nLen )*sizeof( char )];rn pData->nAllocLength = nLen;rn rn pData->data()[nLen] = '\0';rn pData->nDataLength = nLen;rn m_pchData = pData->data();rn rnrnrnCStrData* CStr::GetCStrData() constrnrn return ( CStrData* ) m_pchData - 1 ;rnrnrnint CStr::GetReferenceCount()rnrn return ( ( CStrData* ) m_pchData - 1 )->nDataLength;rnrnrnint CStr::GetDataLength() constrnrn return( ( CStrData* ) m_pchData - 1 )->nDataLength;rnrnrnint CStr::GetAllocLength() constrnrn return m_pchData ? ( ( CStrData* ) m_pchData - 1 )->nAllocLength : 0;rnrnrnint CStr::GetLen() constrnrn return GetDataLength()- 1;rnrnrnchar & CStr::operator [] ( const int & index )rnrn return m_pchData[ index ];rnrnrnbool operator == ( CStr & CStrObj1, CStr & CStrObj2 )rnrn if( CStrObj1.GetLen() == CStrObj2.GetLen() )rn rn if ( !strcmp( CStrObj1.GetBuffer(), CStrObj2.GetBuffer() ) )rn return true;rn elsern return false;rn rn elsern return false;rnrnrnCStr& CStr::operator=( const CStr& stringSrc )rnrn if( GetAllocLength() != stringSrc.GetAllocLength() )rn rn ReleaseBuffer();rn //???????????????????????????rn //改写成AllocBuffer( stringSrc.GetAllocLength() ); rn //或者是64的倍数就报错?????AllocBuffer( 64*n );rn ////???????????????????????????rn AllocBuffer( 64 ); rn *GetCStrData() = *stringSrc.GetCStrData(); rn rn strcpy( GetBuffer(), stringSrc.m_pchData );rn return *this;rnrnrnvoid main()rnrn CStr str1(" word");rn CStr str3;rn str3 = "hello ";rnrnrnrn 论坛

没有更多推荐了,返回首页