Použití funkce speciálního fondu izolovat poškození fondu

Překlady článku Překlady článku
ID článku: 188831 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Poškození fondu může způsobit mnoho evasive většinu problémů s fondem WINDOWSNT. Příčinou je poškození při součásti režimu jádra zapíše mimo oblast přidělené fondu paměti. Zápisem přesahující hranici oblasti jeho přidělené paměti je pravděpodobně jiné oblasti přidělené paměti pravděpodobně vlastněn jinou součást je přepsány. Tomuto poškození může způsobit problémy jako například modré obrazovky v zcela nesouvisejících oblastech kód. Komponenty režimu jádra čtení mimo jeho přidělené oblasti může také způsobit problémy.

Zda jej je způsobeno problémy v systému Windows nebo ovladače výrobci OEM (OEM), jsou některé nejčastěji obtížné identifikovat problémy poškození fondu. Obvykle všech viditelné v analýze selhání dump je příznaku skutečné problém například oblast dat stala poškozený a causing problémy v zcela nesouvisejících bloku kódu. Dokud nyní bylo téměř nemožné najít segment kódu, který poškodí paměti.

Zdroj poškození fondu může nyní identifikován u instrukce příčinou poškození fondu. Nový nástroj pro správu paměti s názvem zvláštní fond je součástí Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, Windows XP, Windows Server 2003, Windows Vista a Windows Server 2008. Speciální fond nástroj identifikuje součásti režimu jádra, které je poškození dat fondu pomocí zápisu mimo oblast jeho přidělené paměti.

Poznámka: Optimalizace paměti se nevztahuje na Windows Vista a Windows Server 2008. Funkce speciálního fondu však platí pro tyto produkty.

Další informace

Důležité: Tento oddíl, metoda nebo úkol obsahuje kroky, které sdělit, jak upravit registr. Po nesprávné úpravě registru však mohou nastat závažné problémy. Postupujte proto pečlivě podle uvedených kroků. Pro zvýšení bezpečnosti registr zálohujte jestě před jeho úpravami. Potom můžete v případě potíží registr obnovit. Další informace o zálohování a obnovení registru naleznete následujícím článku znalostní v databáze Microsoft Knowledge Base:
322756Zálohování a obnovení registru v systému Windows


Speciální fond nástroj přidělí dvě stránky virtuální paměti pro každý přidělení fondu požadovanou prostřednictvím ExAllocatePoolWithTag splňuje následující kritéria:
  • Požadavek na přidělení musí být pro velikost menší než maximální přidělení, které se vejdou na stránku fond.
  • Požadavek musí odpovídat specifikace PoolTag v registru.
Pro zjišťování fondu přetečení první stránka slouží k přidělení na konci stránky obsahovat. Druhá stránka je stránka guard. Pro zjišťování fondu podběhu první stránka je stránka guard. Je následován stránku obsahující přidělení na začátku stránky.

Je pravděpodobně nejvíce používaným zjišťování přetečení. Pro zjišťování přetečení požadovaná přidělení umístěn na konci první stránku podle zálohování velikost požadavku z konec stránky. Velikost alokační je zaokrouhleno k hranici 8 bajtů. Záhlaví na prvních osm bajtů první stránky jsou zapsány klíč vzorek, velikost a informace značky fondu. Vzorek také šířeny v celé stránky. Protože přidělení je umístěn na nejbližší hranici 8 bajtů, může být až sedm následujících přidělení bajtů slop. Vzorek je také zapsána do následujících přidělení bajtů slop.

Druhá stránka je stránka guard. Stránka guard skládá položce zvláštní stránku tabulky (PTE) označené ochranu bez přístupu. Označením tohoto druhou stránku s ochranu přístupu bez jakéhokoli kódu pokusu o čtení nebo zápis za koncem první stránku okamžitě způsobí narušení přístupu výsledkem stop 0x0000000A nebo chyba Stop 0x0000001E. Umožňuje někdo ladění systému najít přesnou instrukce, která způsobuje poškození fondu.

Jako záložní Kontrola zachytit violators zapisovat za koncem přidělení ale není za koncem stránky, jsou ověřovány slop bajtů na konci přidělení během požadavku volného fondu (ExFreePoolWithTag). Slop bajtů jsou porovnány vzorek v záhlaví přidělení k určení, zda nic je přepsán v oblasti bajt slop. Ověření kontrola nefunguje, dojde k chybě Stop 0x00000001A.

Tato kontrola nutně nenalezne přesné blok kódu, který způsobuje poškození fondu. Však může pomoci identifikovat součást, která způsobuje poškození.

Povolit nástroj zvláštní fond, přidejte do registru následující klíče a hodnoty:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Název hodnoty: PoolTag
Typ dat: REG_DWORD
Data: maska značku fondu | maska velikost přidělení | 0
Maska značku fondu je ID značky fondu, který obsahuje masku znaků fondu, ve kterém chcete umístit do speciálního fondu. Tato maska v obráceném pořadí musí být určen v šestnáctkové soustavě. Tato maska může také obsahovat "?" do masky jeden znak nebo "*" do masky zde koncové značce. Například ke sledování všech fondů s značky fondu, který začíná na "Nt" určení "2A744E" (bez uvozovek), které představuje "* tN".

V následující tabulce jsou uvedeny další příklady.
   Pool to monitor   Character representation   Pool tag mask
   ----------------------------------------------------------               
   All pools         "*"                        0x2A
   N??s              "s??N"                     0x733F3F4E
				
Přidělení velikost maska specifikace umístí do speciálního fondu všechna přiřazení fondu zadané velikosti. Také je zadán v šestnáctkovém tvaru. Pokud v speciálního fondu jsou umístěny všechny přidělení 32 bajtů, určete 0x20.

Při zadání hodnoty nula (0x0) je nástroj zvláštní fond není inicializován. Nástroj zvláštní fond navíc není inicializována, pokud hodnota registru PoolTag není definována v registru.
Název hodnoty: PoolTagOverruns
Typ dat: REG_DWORD
Data: 1 | 0
1 označuje, že jsou zjištěny přesahující přidělení fondu pro značku zadán. Přidělení je umístěn na konec stránky a stránky guard následuje.

0 znamená, že jsou zjištěny underruns přidělení fondu pro značku. Přidělení je umístěn na začátku stránky a stránky guard pochází před stránku obsahující přidělení.

Vytvořit tyto klíče registru dvě běžné příklady použití by následovně:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management


Název hodnoty: PoolTag
Typ dat: REG_DWORD
Data: 0x2A

Název hodnoty: PoolTagOverruns
Typ dat: REG_DWORD
Data: 1


Poznámka: Pro Windows NT Terminal Server 4.0 je nutné zakázat KStackPool při použití speciálního fondu. Chcete-li to provést, přidejte následující hodnotu registru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Název hodnoty: EnableKStackPool
Typ dat: REG_DWORD
Data: 0

1 - KStack fondu vždy povolena.
2 - KStack fondu povolen u počítačů, které mají 256 MB nebo více paměti (výchozí)
Pokud neprovedete tuto změnu na počítačů terminálového serveru, které mají 256 MB nebo více paměti, může se zobrazit "STOP 0x00000078 (PHASE0_EXCEPTION)" chybové zprávy.


Poznámka: Speciální fond funkce nemusí fungovat v systému Windows Server 2003, pokud existují položky tabulky nedostatečná zvláštní stránku (PTEs). K tomuto problému obvykle dochází na jednoho uživatele Terminálové servery, které obsahují více než 1 GB RAM a, které mají hodnoty optimalizace správy paměti počítače, nastavit výchozí hodnoty. Tento problém se nevyskytuje v 64bitových verzích systému Windows Server 2003.

Analýzy souboru výpisu stavu paměti, problému, může obsahovat následující informace:
*** 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
Problém lze ověřit podle velikosti zvláštní fond přidělené z analýzy. V tomto případě problému dochází, protože jsou následující hodnoty PTE speciálního fondu rovna:
  • MiSpecialPoolFirstPte
  • MiSpecialPoolLastPte
K tomuto problému může také dojít, pokud je hodnota položky registru MmSpecialPoolRejected tři nebo větší.

Tento problém vyřešit, nakonfigurujte hodnotu položky registru PagedPoolSize hodnotu, která je menší než velikost stránkovaného fondu, který je povolen. Například nastavit položku registru PagedPoolSize hodnotu 256 MB. Pokud chcete nakonfigurovat větší hodnotu určit požadavek pro větší velikost stránkovaného fondu v počítači pomocí nástroje Sledování výkonu.

Můžete použít následující hodnoty pro položku registru PagedPoolSize:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Pro Windows Server 2003 bez aktualizace service pack:

Název hodnoty: PagedPoolSize
Typ dat: REG_DWORD
Data: 10000000
Základ: šestnáctková

Pro Windows Server 2003 s aktualizací Service Pack 1 (SP1) nainstalován:

Název hodnoty: PagedPoolSize
Typ dat: REG_DWORD
Data: FFFFFFFF
Základ: šestnáctková

Poznámka: Po provedení libovolné změny registru popsané v tomto článku restartování počítače způsobit změny projevily.

Pokud po povolení funkce zvláštní fond přestane počítač reagovat (zablokuje se) a zobrazí chybová zpráva na modré obrazovce během spouštění, restartujte počítač pomocí možnosti Poslední známá funkční konfigurace. Povolení funkce zvláštní fond není zapsána do poslední známá platná konfigurace položka v registru až po úspěšném přihlášení.

Vlastnosti

ID článku: 188831 - Poslední aktualizace: 7. října 2009 - Revize: 11.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Server
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT 4.0 Service Pack 4
  • Windows Vista Enterprise
  • Windows Vista Home Premium
  • Windows Vista Ultimate
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Datacenter
Klíčová slova: 
kbmt kbenv kbhowto kbqfe KB188831 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:188831

Dejte nám zpětnou vazbu

 

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