題 如何在Windows 10上修復MEMORY_MANAGEMENT和ATTEMPTED_WRITE_TO_READONLY_MEMORY BSOD


因此,在使用全新安裝的Windows 7 x64 3年後,由於工作原因,我將升級到Windows 10。

我從Microsoft下載了最新的Windows 10 Pro構建映像(1803),並使用Rufus 3.1創建了一個可啟動的閃存盤。

我在我的SSD上進行了全新安裝(之前將其格式化),並且在使用計算機幾天后,我開始獲得隨機BSOD。每天大約1或2。

BSOD錯誤是MEMORY_MANAGEMENT或ATTEMPTED_WRITE_TO_READONLY_MEMORY。

我嘗試過的事情:

  • 運行2次Windows內存診斷程序。沒有錯誤。
  • sfc /scannow。沒有錯誤。
  • 將GPU驅動程序更新到最新版本(Nvidia Geforce GTX 970)
  • 更新BIOS到最新版本(華碩Z-97E從0802到0803)

在Windows 7的3年中,我可能只有幾個BSOD,所以我不認為這是與硬件相關的問題。剛剛安裝完Windows 10後,BSOD才開始運行。

如何打開Windows生成的MEMORY.DMP,我在那裡看看是什麼導致了BSOD?

還有什麼我可以嘗試的嗎?

UPDATE 我用WinDbg x64打開了C:\ MEMORY.DMP,結果如下: https://pastebin.com/B2pS9VZt

更新2 我剛剛有了另一個BSOD。這次是 SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
轉到這裡: https://pastebin.com/0hckXpqP

更新3 Minidumps文件

更新4
我整夜都在運行memtest,我犯了很多錯誤。我想我確實有錯誤的RAM。我們確定這是錯誤的RAM嗎?一旦我更換它就會得到修復嗎?無法知道哪個棒有問題?必須刪除它們並再次運行memtest以了解哪一個?
結果如下: http://ancient-name.surge.sh/


4
2017-09-01 22:02


起源


虛假的隨機崩潰沒有明顯的原因,有很多可能存在硬件問題或惡意軟件。您可以使用打開轉儲文件 BlueScreenView 和類似的工具。作為內核模式開發人員,你可以直接使用WinDbg。如果所謂的原因(某些驅動程序或內核本身在轉儲中指出)在崩潰中有所不同,那麼您可能會遇到上述任何一種原因。哦,我認為,一些尚未為反幽靈/熔化內核變化做好準備的反惡意軟件也可能導致這種情況發生。 - 0xC0000022L
從windbg發布文本輸出幾乎總是幾乎無用。請壓縮您的minidump文件,將zip文件發佈到文件共享網站(如dropbox)上,然後發布鏈接。看完之後我們可能會要求您共享一個較大的轉儲文件。附: - “知道哪個驅動程序/設備導致BSOD真的很難嗎?” 很多時候,是的,這很難。分析單個轉儲花費超過一周的時間並不罕見。但是小型轉儲通常是死路一條 - 沒有足夠的內存保留在它們中。 - Jamie Hanrahan
你在使用華碩的自動超頻嗎?我在華碩M5A97 r2主板上從Win7到Win10的體驗非常相似。在Win 7運行完美,但安裝Windows 10後BIOS沒有變化我會得到隨機BSOD指示內存問題,在一些論壇的建議(我現在找不到)我禁用了Asus BIOS上的自動超頻主設置頁面和問題消失了。 - acejavelin
@acejavelin我在華碩UEFI上使用默認的“普通”配置文件。我不認為它超頻任何東西。 - emzero
可能重複 使用Memtest86確定錯誤的RAM - harrymc


答案:


造成此類崩潰的最可能原因是內存不足。正如harrymc所建議的那樣,首先要嘗試的是運行內存測試程序,例如 Windows內存診斷 (包含在Windows中),原文 的Memtest86 (由PassMark Software維護)或開源 的Memtest86 +。 (我已添加此部分,以便其他讀者可能遇到類似問題但未嘗試過內存測試。)


問題作者可以跳過本節。它被保留供其他讀者參考。

如果內存測試通過,則可能是處理器出現故障。

處理器的 集成內存控制器(IMC) 有時會導致記憶問題。簡單的內存操作,如從特定內存位置讀取數據,可能會正常工作,但處理器能夠執行必要的內存管理操作,包括 虛擬內存,未經內存測試程序測試。

另一種可能性是錯誤的 高速緩存。高速緩存是處理器內部的少量內存,用於加速內存訪問。雖然您的處理器應該能夠檢測緩存錯誤(並生成一個 機器檢查例外 當發生這種情況時,造成一個 WHEA_UNCORRECTABLE_ERROR BSOD),如果沒有處理器本身注意到,高速緩存中的數據不會被破壞並導致內存損壞。內存測試軟件也無法檢測到這一點。

要檢查IMC,請下載 英特爾的處理器診斷程序 並運行IMC測試。要檢查處理器緩存,請下載 的Prime95 並運行小型FFT折磨測試(您的處理器可能會變熱或風扇可能會響亮;這是正常的)。如果任一測試失敗,您可能需要更換處理器。 (我假設處理器和內存都是  超頻或以其他方式操作超出規格。)


由於您運行了內存測試並發現了錯誤,因此很明顯需要更換一個或多個內存模塊。我可以從您發布的報告中收集更多信息。

錯誤發生在存儲器的一個特定區域,大約為0x19BDD79F0,這會將問題限制在一個模塊。地址表明,但確實如此  確認,問題出在其中一個愛國者內存模塊中。

因為大多數係統(包括您的系統)的內存最好成對使用,所以請嘗試刪除  任何一個品牌的模塊並重新運行測試。如果這不起作用,請重新安裝已刪除的模塊並刪除另一對模塊。如果問題清除,您可以正常使用系統,直到獲得更換內存模塊。


我應該注意Windows 10使用更高級的內存管理技術,包括 虛擬內存壓縮 在內存有限的系統上實現最佳性能。雖然您的系統有16 GB的內存,但默認情況下Windows仍會壓縮內存中的數據(我的桌面有32 GB,這裡沒有什麼不同)。在壓縮和解壓縮數據期間很容易檢測到內存錯誤,並且會立即導致操作失敗,從而導致系統崩潰。影響未壓縮應用程序或其他數據的內存錯誤“只會”導致應用程序崩潰或文件損壞(儘管它仍然可能導致操作系統崩潰)。因此,Windows 10比以前版本的Windows對內存錯誤更敏感。


10
2017-09-03 23:29



謝謝。我會跑這兩個,明天再回复你。 - emzero
@emzero:更新了我的答案。簡而言之,Windows 10具有內存壓縮功能,這使得它比以前版本的Windows對內存錯誤更敏感。 - bwDraco
忽略內核/用戶模式一分鐘(即使壓縮完全是用戶模式),解壓縮失敗仍然會導致崩潰(操作系統沒有安全的方法可以恢復,除了可能會殺死進程 - 但是有現在已知錯誤的記憶)。 - Bob
@bwDraco我刪除了兩個Patriot模塊,Memtest86傳遞了兩次0錯誤。此外,12小時內沒有BSOD。所以我想我們可以肯定地說,其中至少有一個是錯誤的。我只是拋棄兩個並獲得我已經擁有的2個相同的Corsair模型。謝謝,賞金是你的=) - emzero
@emzero:要獎勵賞金,請點擊投票控件下方的藍色“+500”,以獲得您想要獎勵的答案。我很高興我可以幫忙:) - bwDraco


通過轉儲,錯誤來自兩個來源:IRQ和int 3指令。 IRQ意味著某個驅動程序被中斷調用並且它有故障 - 這意味著您必須檢查您在此系統中安裝的所有驅動程序是否有故障。

Int 3是一個調試器中斷,這意味著有一些軟件(也可以是驅動程序)調用斷點(int 3),它不應該在那裡。這可能發生在Debug版本的軟件上。

大多數此類BSOD來自未正確編寫的驅動程序,因此這是我搜索問題的來源。卸載所有驅動程序(或全新安裝操作系統)並逐個檢查。在每個驅動程序之間進行一些更大的系統使用(例如7-zip基準測試),你會發現有問題的。

問題的另一個來源可能是超頻的CPU或RAM,要檢查一下,在BIOS中配置系統只使用提供的硬件的標稱值。不多。


3
2017-09-04 06:25





我可以在迷你車中看到你的車禍情況也是如此 SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION。 我還注意到你的所有崩潰都發生在內核或HAL內部, 但從不在任何設備驅動程序內部,因此問題不在於 特定的故障設備。

因此,您的記憶很可能是有缺陷的。 Windows 10可能正在使用之前未使用過的RAM的缺陷部分。

首先查看事件查看器,看它是否包含任何有用的信息。

然後我建議跑 的Memtest86 :

MemTest86是x86計算機的原始,免費,獨立的內存測試軟件。 MemTest86從USB閃存驅動器或CD啟動,並使用一系列全面的算法和測試模式測試計算機中的RAM是否存在故障。

您也可以嘗試使用一部分RAM棒啟動,尊重 為你的主板指定的安排,以找到壞棒。


關於MemTest86結果的說明 :你有成千上萬的錯誤。 內存尋址的測試通過了,所以問題不在於 內存控制器。 錯誤與RAM本身有關,讀取時存儲的數據不正確。 這表明你的記憶棒中至少有一個是壞的, 並且問題不在於CPU或主板。

你可以做什麼

你可以拿出棍棒並在子集上運行MemTest86。 你的主板是華碩Z97-E 在DIMM_A1和DIMM_B1中至少需要兩根木棒。 下圖來自第1-7頁 手冊

image

放入任何兩個相同品牌的棒,並測試,將縮小 領域到海盜船或愛國者棍棒。 當你知道兩根棍子時,只有一根(希望)是壞的, 你可以嘗試混合不同製造商的棒。 他們的規格似乎相同,所以這可能會奏效。

也可能只在DIMM_A1中放置一根手柄就可以了 足夠MemTest86。手冊中的圖表不清楚,可能表明 一根棒可以在DIMM_A1或DIMM_B1中使用。 即使不是這種情況,有時也可能是非推薦的配置 仍然有點工作,取決於主板。


3
2017-09-04 05:50