新機落地兩個月, 經常在開機登入後BSOD, 出現STOP c000021a "Unknown Hard error", 有時是c0000135, 甚至是c0000145, 但如果正常的話一直使用沒有問題, 苦查一個月毫無線索. 近兩個星期出現另一個病徵, 在登入Windows之後, 會無故出現winlogon.exe出錯, 無論按"確定"終止還是按"取消"做debug都會重現BSOD. 於是利用這病徵找G大神幫手, 終於發現病源 - 果真是這個winlogon.exe!
經過搜尋, 發現:
NTSTATUS c000021a代表STATUS_SYSTEM_PROCESS_TERMINATED, 意思就是系統進程(指winlogon.exe)被終止.
c0000135代表STATUS_DLL_NOT_FOUND(找不到DLL檔),
c0000145則是STATUS_APP_INIT_FAILURE, 應用程式初始化失敗(難道是指winlogon.exe?).
在看過華生醫生(Dr.Watson, Windows內置的偵錯軟件)的報告後, 知道其錯誤原因是c0000005存取違規, 因為這個問題所以才會被強制退出. 查看其出錯代碼後, 發現錯誤多發在對暫存器的操作上, 例如add, ror等操作:(以下僅為節錄,並非同時間出現的錯誤)
進行上述操作後多有
不過其實無關.
以上大都涉及eax暫存器...難道是CPU問題? 但是是CPU良率問題的話毫無道理, 因為如果這問題屬實的話玩遊戲時老早就當掉了.
查看了一下, 問題代碼都在0x0106b5a4附近, stack顯示都在winlogon開始後跑到第四個produce出錯:
果然都在同一個produce內.
唉, 但是沒有Windows的源代碼也做不了甚麽. 遲一點裝V系統, 看看會不會又有這些問題吧.
最後編輯: L3m0N-k1T 編輯於2008/09/30 17:53
經過搜尋, 發現:
NTSTATUS c000021a代表STATUS_SYSTEM_PROCESS_TERMINATED, 意思就是系統進程(指winlogon.exe)被終止.
c0000135代表STATUS_DLL_NOT_FOUND(找不到DLL檔),
c0000145則是STATUS_APP_INIT_FAILURE, 應用程式初始化失敗(難道是指winlogon.exe?).
在看過華生醫生(Dr.Watson, Windows內置的偵錯軟件)的報告後, 知道其錯誤原因是c0000005存取違規, 因為這個問題所以才會被強制退出. 查看其出錯代碼後, 發現錯誤多發在對暫存器的操作上, 例如add, ror等操作:(以下僅為節錄,並非同時間出現的錯誤)
錯誤 ->0106b5b3 ff450c inc dword ptr [ebp+0xc] ss:0023:014cfe4c=0100d053
錯誤 ->0106b581 034304 add eax,[ebx+0x4] ds:0023:014bfeb8=a4c9372d
錯誤 ->0106b57c 8b5d08 mov ebx,[ebp+0x8] ss:0023:0148fe48=0148feb4
錯誤 ->0106b5ad 8b0b mov ecx,[ebx] ds:0023:014bfeb4=56e417d2
錯誤 ->0106b581 034304 add eax,[ebx+0x4] ds:0023:015dfeb8=5c137ab4
錯誤 ->0106b58d 69c09932acdd imul eax,eax,0xddac3299
錯誤 ->0106b595 69c0afc92ca9 imul eax,eax,0xa92cc9af
錯誤 ->0106b58a c1c811 ror eax,0x11
錯誤 ->0106b5a4 c1c813 ror eax,0x13
錯誤 ->0106b581 034304 add eax,[ebx+0x4] ds:0023:014bfeb8=a4c9372d
錯誤 ->0106b57c 8b5d08 mov ebx,[ebp+0x8] ss:0023:0148fe48=0148feb4
錯誤 ->0106b5ad 8b0b mov ecx,[ebx] ds:0023:014bfeb4=56e417d2
錯誤 ->0106b581 034304 add eax,[ebx+0x4] ds:0023:015dfeb8=5c137ab4
錯誤 ->0106b58d 69c09932acdd imul eax,eax,0xddac3299
錯誤 ->0106b595 69c0afc92ca9 imul eax,eax,0xa92cc9af
錯誤 ->0106b58a c1c811 ror eax,0x11
錯誤 ->0106b5a4 c1c813 ror eax,0x13
進行上述操作後多有
0106b5b6 ebae jmp winlogon+0x6b566 (0106b566)
不過其實無關.
以上大都涉及eax暫存器...難道是CPU問題? 但是是CPU良率問題的話毫無道理, 因為如果這問題屬實的話玩遊戲時老早就當掉了.
查看了一下, 問題代碼都在0x0106b5a4附近, stack顯示都在winlogon開始後跑到第四個produce出錯:
ChildEBP RetAddr Args to Child
015dfe40 0100ced7 015dfeb4 0100d4cf 0100d514 winlogon+0x6b5a4<此偏移不定
015dfed8 0100ccce 00000000 01071888 01001b68 winlogon+0xced7
015dff0c 01021feb 0106be81 0106b562 01001b60 winlogon+0xccce
015dffb4 7c80b683 01205438 7c92fb6c 7c92fb71 winlogon+0x21feb
015dffec 00000000 01039156 01205438 00000000 kernel32!GetModuleFileNameA+0x1b4
015dfe40 0100ced7 015dfeb4 0100d4cf 0100d514 winlogon+0x6b5a4<此偏移不定
015dfed8 0100ccce 00000000 01071888 01001b68 winlogon+0xced7
015dff0c 01021feb 0106be81 0106b562 01001b60 winlogon+0xccce
015dffb4 7c80b683 01205438 7c92fb6c 7c92fb71 winlogon+0x21feb
015dffec 00000000 01039156 01205438 00000000 kernel32!GetModuleFileNameA+0x1b4
果然都在同一個produce內.
唉, 但是沒有Windows的源代碼也做不了甚麽. 遲一點裝V系統, 看看會不會又有這些問題吧.
最後編輯: L3m0N-k1T 編輯於2008/09/30 17:53
一切都是PG2作怪...
nProtect GameGuard fro




