풀 손상을 격리 하려면 특수 풀 기능을 사용 하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 188831 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

풀 손상을 가장 많이 발생할 수 있습니다. 커널 모드 때 evasive 문제가 Windows NT. 풀 손상 발생 할당 된 풀 영역 외의 메모리 구성 요소를 작성합니다. 작성 하 여 메모리는 할당 된 영역의 경계를 벗어나는 것 가능성이 있는 다른 다른 구성 요소에 의해 소유 하는 경우 할당 된 메모리 영역을 덮어씁니다. 이에 블루 스크린 등의 문제가 완전히 관련이 없는 손상을 줄 수 있습니다. 코드의 영역입니다. 커널 모드 구성 요소는 할당 된 영역을 넘어 읽는 수 있습니다. 문제를 일으킬 수도 있습니다.

이 원본 장치에서 발생 하는지 여부 제조업체 (OEM) 드라이버 또는 Windows에서 문제를 풀 손상 문제는 일부 식별 하기 매우 어렵습니다. 일반적으로, 모든 것에서 볼 수 있는 크래시 덤프 분석은 데이터 영역 같은 실제 문제의 증상입니다. 완전히 관련이 없는 코드 블록 손상 된 및 초래 문제 되는 것입니다. 지금 까지는 코드 세그먼트를 찾을 수 없습니다. 메모리를 손상 시킵니다.

이제 풀 손상의 소스를 확인할 수 있습니다. 풀 손상을 일으키는 명령에서. 새로운 메모리 관리 유틸리티 즉 명명 된 특수 풀은 Windows NT 4.0 서비스 팩 4와 (SP4), Windows 2000에 포함 된 Windows XP, Windows Server 2003, Windows Vista 및 Windows Server 2008. 특수 풀 유틸리티 풀 데이터를 작성 하 여 손상 되는 커널 모드 구성 요소를 식별 합니다. 메모리의 할당 된 영역 밖입니다.

참고 메모리 조정 Windows Vista 및 Windows Server 2008에는 적용 되지 않습니다. 그러나 특수 풀 기능은 이러한 제품에 대 한 적용지 않습니다.

추가 정보

중요 이 섹션, 메서드 또는 작업은 레지스트리를 수정하는 방법을 설명 하는 단계를 포함합니다. 그러나 레지스트리를 잘못 수정하면, 심각한 문제가 발생할 수 있습니다. 따라서, 다음 단계를 주의 깊게 수행해야 합니다. 이 수정 하기 전에 추가 보호를 위해 레지스트리를 백업합니다. 그런 다음, 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 백업 및 레지스트리를 복원 하는 방법에 대한 자세한 내용을 보시려면, Microsoft 기술 자료의 다음 문서 번호를 클릭하십시오.
322756 Windows에서 레지스트리를 백업하고 복원하는 방법


특수 풀 유틸리티 요청 된 모든 풀 할당에 대 한 두 개의 가상 메모리 페이지를 할당 Exallocatepoolwithtag를 통해 다음과 같은 기준을 일치.
  • 보다 작게 해야 할당 요청은 풀 페이지에 맞게 최대 할당 합니다.
  • 요청 PoolTag 사양에 일치 해야 있는 레지스트리입니다.
풀 오버런 감지에 대 한 첫 페이지 포함 하는 데 사용 됩니다. 페이지의 끝에 할당 합니다. 두 번째 페이지는 가드 페이지가입니다. 에 대 한 언더런 풀 검색을 첫 번째 페이지는 가드 페이지입니다. 그 뒤에 페이지의 시작 부분에 할당을 포함 하는 페이지입니다.

오버런 감지 가능성이 가장 사용 됩니다. 오버런을 감지 하면 요청 할당 백업 하 여 첫 번째 페이지의 끝에 배치 되는 페이지의 끝에서 크기를 요청 합니다. 할당 크기를 반올림 됩니다 있는 8-바이트 경계입니다. 패턴 키, 크기, 및 풀 태그 정보 머리글 첫 페이지의 첫 번째 8 바이트에 기록 합니다. 패턴 페이지 전체에 걸쳐 전파 됩니다. 할당 배치 되어 있기 때문에 해당 가장 가까운 8 바이트 경계에 있을 수 있습니다 오는 만큼 7 slop 바이트는 할당 합니다. 다음 slop 바이트 패턴 또한 작성 된 할당 합니다.

두 번째 페이지는 가드 페이지가입니다. 가드 페이지 사용 권한 없음으로 표시 된 특수 페이지 테이블 항목 (PTE) 구성 됩니다. 보호 합니다. 이 두 번째 페이지 없음-액세스 보호, 모든 코드를 표시 하 여 읽기 및 쓰기 외의 첫 번째 끝 페이지 바로 발생 하는 Stop 0x0000000A 또는 Stop 0x0000001E 오류가 발생 하는 액세스 위반입니다. 이 사용자는 정확한 명령 찾을 시스템 디버깅 있습니다. 풀 손상이 됩니다.

백업 확인 작성을 보내는 위반자를 catch 합니다. 끝의 할당 페이지의 slop 끝 외 사용 가능한 풀 요청 중 할당의 끝에 바이트의 유효성을 검사합니다 (ExFreePoolWithTag)입니다. Slop 바이트 패턴을 비교 하면 모두 여부를 확인 하려면 할당 헤더의 slop 바이트 영역에서 덮어씁니다. 확인 검사가 작동 하지 않는 경우 0x00000001A 중지 오류가 발생합니다.

이 검사는 반드시 정확 하 게 블록을 찾지 못하면 풀 손상을 일으키는 코드입니다. 그러나이 구성 요소를 식별할 수 있습니다. 손상이 됩니다.

특수 풀 유틸리티를 사용 하려면 추가 다음 키 및 레지스트리 값:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


값 이름: PoolTag
데이터 형식: REG_DWORD
데이터: 풀 태그 마스크 | 할당 크기 마스크 | 0
풀 태그 마스크 마스킹 포함 풀 태그 ID입니다. 문자에 특수 풀 배치 하려는 풀의. 이 마스크 16 진수로 반대 순서로 지정 되어야 합니다. 이 마스크 또한 포함 될 수 있습니다. "?" 단일 문자를 마스킹할 수 또는 "*" 여기에서 마스크 태그의 끝에. 예를 들어, "Nt"로 시작 하는 풀 태그를 모든 풀을 모니터링 하려면 지정 "나타내는 2A744E" (인용 부호) 없이 "* 조지아 주".

는 자세한 예제는 다음 표입니다.
   Pool to monitor   Character representation   Pool tag mask
   ----------------------------------------------------------               
   All pools         "*"                        0x2A
   N??s              "s??N"                     0x733F3F4E
				
할당 크기 마스크 사양 중 모든 풀 할당 배치 특수 풀에 지정 된 크기입니다. 이 또한 16 진수로 지정 됩니다. 예를 들어, 32 바이트 모든 할당은 특수 풀에 배치 됩니다, 0x20 지정 합니다.

0 (0X0)를 지정 하면 특수 풀 유틸리티 초기화 되지 않습니다. 또한 특수 풀 유틸리티가 초기화 됩니다 없습니다. PoolTag 레지스트리 값은 레지스트리에서 정의 되지 않았습니다.
값 이름: PoolTagOverruns
데이터 형식: REG_DWORD
데이터: 1 | 0
1 이면 풀 할당 오버런에 대 한 인식 되는지는 태그를 지정 합니다. 할당 가드 페이지의 끝에 배치 됩니다. 페이지는 다음과 같습니다.

0을 나타냅니다에 대 한 풀 할당 언더런을 감지 하는 태그입니다. 할당 페이지는 가드 페이지의 처음에 위치입니다. 할당 하기 전에 있는 페이지를 제공 합니다.

이러한 두 가지 레지스트리 키를 만들려면 일반적인 사용 예 다음과 같습니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management


값 이름: PoolTag
데이터 형식: REG_DWORD
데이터: 0x2A

값 이름: PoolTagOverruns
데이터 형식: REG_DWORD
데이터: 1


참고 Windows NT 터미널 서버 4.0 용 KStackPool 비활성화 해야 특수 풀을 사용 하면. 이렇게 하려면 다음 레지스트리 값을 추가 합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


값 이름: EnableKStackPool
데이터 형식: REG_DWORD
데이터: 0

1 -KStack 풀 항상 활성화
2 -KStack 풀 256 MB 이상 컴퓨터를 사용 합니다. 메모리 (기본)
터미널에이 이렇게 하지 않는 경우 256 MB 또는 더 많은 메모리가 있는 서버 컴퓨터 "0x00000078 STOP 나타날 수 있습니다. (PHASE0_EXCEPTION) "오류 메시지.


참고 부족 한 특수 페이지 테이블 항목 (Pte)이 없는 경우는 특수 풀 기능 Windows Server 2003에서 작동 하지 않습니다. 이 문제는 일반적으로 1GB 이상의 RAM 포함 하 고 기본 값으로 설정 하 여 컴퓨터의 메모리 관리 튜닝 값이 있는 단일 사용자 터미널 서버에서 발생 합니다. 이 문제는 Windows Server 2003의 64 비트 버전에서 발생 하지 않습니다.

메모리 덤프 파일 분석 문제는 다음과 같은 정보가 포함 될 수 있습니다.
*** Virtual Memory Usage *** 
Physical Memory: 1015660 ( 4062640 Kb) 
Page File: \??\C:\Pagefile1\pagefile.sys 
Current: 4193280Kb Free Space: 4180856Kb 
Minimum: 4193280Kb Maximum: 4193280Kb 
Available Pages: 552680 ( 2210720 Kb) 
ResAvail Pages: 932179 ( 3728716 Kb) 
Locked IO Pages: 347 ( 1388 Kb) 
Free System PTEs: 187166 ( 748664 Kb) 
Free NP PTEs: 32765 ( 131060 Kb) 
Free Special NP: 117228 ( 468912 Kb) 
Modified Pages: 106 ( 424 Kb) 
Modified PF Pages: 98 ( 392 Kb) 
NonPagedPool Usage: 6599 ( 26396 Kb) 
NonPagedPool Max: 65536 ( 262144 Kb) 
PagedPool 0 Usage: 10697 ( 42788 Kb) 
PagedPool 1 Usage: 1240 ( 4960 Kb) 
PagedPool 2 Usage: 1239 ( 4956 Kb) 
PagedPool 3 Usage: 1265 ( 5060 Kb) 
PagedPool 4 Usage: 1231 ( 4924 Kb) 
PagedPool Usage: 15672 ( 62688 Kb) 
PagedPool Maximum: 90112 ( 360448 Kb) 
Shared Commit: 3866 ( 15464 Kb) 
Special Pool: 511 ( 2044 Kb) <-- very small
Shared Process: 5205 ( 20820 Kb) 
PagedPool Commit: 15672 ( 62688 Kb) 
Driver Commit: 2091 ( 8364 Kb) 
Committed pages: 439832 ( 1759328 Kb) 
Commit limit: 2023823 ( 8095292 Kb)

0: kd> dd nt!MmSpecialPoolRejected l8 
8057afe0 00000000 00000000 00b2e59a 00000000 <-- A DWORD value of 3 causes special pool PTE's shortage.
8057aff0 00000000 00000000 00000000 00000000

8057afd8 nt!MiSpecialPoolFirstPte = 0xc022af78
8057afd4 nt!MiSpecialPoolLastPte = 0xc022af78
풀의 크기는 특별 한 분석을 통해 할당 된 문제를 확인할 수 있습니다. 이 경우 다음과 같은 특수 풀 PTE 값이 같으면 문제가 발생 합니다.
  • MiSpecialPoolFirstPte
  • MiSpecialPoolLastPte
MmSpecialPoolRejected 레지스트리 항목의 값이 3 인 경우에이 문제가 발생할 수 있습니다 또는 큰.

이 문제를 해결 하려면 사용할 수 있는 페이징된 풀 크기 보다 작은 값으로 PagedPoolSize 레지스트리 항목의 값을 구성 합니다. 예를 들어, 값으로 PagedPoolSize 레지스트리 항목을 설정 256MB입니다. 큰 값을 구성 하려면 원하는 경우 컴퓨터의 요구 사항에 대 한 더 큰 페이지 된 풀 크기를 확인 하려면 성능 모니터 유틸리티를 사용 합니다.

PagedPoolSize 레지스트리 항목에 대해 다음 값을 사용할 수 있습니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Windows Server 2003 서비스 팩 없이.

값 이름: PagedPoolSize
데이터 형식: REG_DWORD
데이터: 10000000
자료: 16 진수

Windows Server 2003 서비스 팩 1 (SP1).

값 이름: PagedPoolSize
데이터 형식: REG_DWORD
데이터: FFFFFFFF
자료: 16 진수

참고 설명 하는 레지스트리 변경에서 확인 후 문서에서 변경 내용이 적용 되도록 컴퓨터를 다시 시작 합니다.

경우 특수 풀 기능을 사용 하도록 설정 하면 해당 컴퓨터가 응답 하지 않는다 (중단) 및 블루 스크린에 오류 메시지가 시작 하는 동안, 다시 시작 된 마지막으로 성공한 구성 옵션을 사용 하는 컴퓨터입니다. 특수 풀 기능을 사용 하면 마지막으로 알려진 된 쓰지 않습니다. 구성 항목은 때까지 성공적인 로그온 후 레지스트리에서.

속성

기술 자료: 188831 - 마지막 검토: 2013년 4월 19일 금요일 - 수정: 0.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Professional
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003 Service Pack 2
  • Windows Vista Home Premium
  • Windows Vista Enterprise
  • Windows Vista Ultimate
  • Windows Vista Service Pack 2
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Service Pack 2
  • Windows 7 Home Premium
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Ultimate
  • Windows 7 Service Pack 1
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Service Pack 1
키워드:?
kbenv kbhowto kbqfe kbmt KB188831 KbMtko
기계 번역된 문서
이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.
이 문서의 영문 버전 보기:188831

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com