mehmetaba

Uzman
Katılım
15 Ağustos 2024
Mesajlar
39
Beğeniler
10
  • Anakart: H61 M-K
  • İşlemci: i7 2600K.
  • Ekran kartı: 1050 Ti 4 GB.
  • İşletim sistemi: Windows 10.

Sorunum şu; birkaç aydır birden mavi ekran hatası alıyorum. Bazen hiç olmuyor, bazen dakikada bir oluyor. Ekran kartı değiştim, PSU değiştim, RAM değiştim, bu üçünü değişmeden önce de bu mavi ekran sorunu vardı. Bir türlü geçmedi. Bazen ekran resim gibi donup kalıyor, düğmeden kapatmak zorunda kalıyorum. Bazen mavi ekran verip yeniden başlatılıyor ya da tamamen kapanıyor. Son 2 mini dump dosyasını ekliyorum, biri bakabilirse çok sevinirim. Bıktım bu sorundan artık. :(

 
Son düzenleme:
Dosyalarınız sürekli aynı. Farklı bir şey çıkar mı diye bakındım da yok.

Kod:
SYSTEM_SERVICE_EXCEPTION (3b)
An exception happened while executing a system service routine.
Arguments:
Arg1: 00000000c0000005, Exception code that caused the BugCheck
Arg2: ffff8d935ec4550c, Address of the instruction which caused the BugCheck
Arg3: ffffa98e08578930, Address of the context record for the exception that caused the BugCheck
Arg4: 0000000000000000, zero.

Aldığın bu hatada da sorun işletim sistemi tarafından işlenemeyen genel bir istisna nedeniyle oluşuyor. Diğer dosyalarla arasındaki fark ise istisnanın nerede atıldığıdır ve mevcut hatada, bu her zaman bir sistem hizmetinin yürütülmesi sırasında oluyor. Bunların bağlam kayıtları, memory.dmp gibi daha gelişmiş kayıtlarda mevcut oluyor. Bu dosyadan bakamadığımız için de direkt olarak yığıtlara göz atmanı öneriyorum:

Kod:
2: kd> k
 # Child-SP          RetAddr               Call Site
00 ffffa98e`08578028 fffff802`4e408c69     nt!KeBugCheckEx
01 ffffa98e`08578030 fffff802`4e4080bc     nt!KiBugCheckDispatch+0x69
02 ffffa98e`08578170 fffff802`4e3ffbb2     nt!KiSystemServiceHandler+0x7c
03 ffffa98e`085781b0 fffff802`4e287547     nt!RtlpExecuteHandlerForException+0x12
04 ffffa98e`085781e0 fffff802`4e286136     nt!RtlDispatchException+0x297
05 ffffa98e`08578900 fffff802`4e408dac     nt!KiDispatchException+0x186
06 ffffa98e`08578fc0 fffff802`4e404ae0     nt!KiExceptionDispatch+0x12c
07 ffffa98e`085791a0 ffff8d93`5ec4550c     nt!KiGeneralProtectionFault+0x320
08 ffffa98e`08579330 ffff8d93`5fa7d6ab     win32kfull!FreeThreadsWindowHooks+0x8c
09 ffffa98e`08579360 ffff8d93`5fa75e93     win32kbase!xxxDestroyThreadInfo+0xdc7
0a ffffa98e`085794f0 ffff8d93`5ec28c0b     win32kbase!UserThreadCallout+0x553
0b ffffa98e`085796e0 ffff8d93`5fa6a74c     win32kfull!W32pThreadCallout+0x7b
0c ffffa98e`08579710 ffff8d93`5ea510d0     win32kbase!W32CalloutDispatch+0x44c
0d ffffa98e`08579920 fffff802`4e602525     win32k!W32CalloutDispatchThunk+0x30
0e ffffa98e`08579960 fffff802`4e65b715     nt!PsInvokeWin32Callout+0x55
0f ffffa98e`08579990 fffff802`4e65ed7e     nt!PspExitThread+0x4b5
10 ffffa98e`08579a90 fffff802`4e4086b8     nt!NtTerminateProcess+0xde
11 ffffa98e`08579a90 fffff802`4e4086bb     nt!NtClose+0xec
12 ffffa98e`08579b00 00000000`770f1cfc     nt!KiSystemServiceCopyEnd+0x28
13 00000000`0009eed8 00000000`00000000     0x770f1cfc

KiSystemServiceCopyEnd işlevi, kullanıcı modundan çekirdek moduna geçişimizin sonunu gösteriyor ve ardından NtClose fonksiyonu ile de bir nesneye ait handle'ı kapattığı anlatılıyor. Bunlardan sonra da nt!NtTerminateProcess ile de ilgili process'i de sonlardığı ve thread'den çıkmaya çalıştığını görebiliyoruz. Sonunda, genel bir koruma hatasının atıldığını ve bunun da sistemin şu anki hata ile durduğunu görebiliyoruz. İlk parametre, istisna kodunun bir erişim ihlali olmasıyla bu gözlemi açıklıyor.

2: kd> !error c0000005
Error code: (NTSTATUS) 0xc0000005 (3221225477) - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

Kod:
.cxr 0xffffa98e08578930
rax=ffff8dd700673d10 rbx=0200000000000000 rcx=000000000000000e
rdx=ffffa98e08579330 rsi=0000000000000040 rdi=ffff8dd70264f9a0
rip=ffff8d935ec4550c rsp=ffffa98e08579330 rbp=ffffa98e085795f0
 r8=0000000000000000  r9=7fff8dd700613ea0 r10=ffff8d935fa7dff0
r11=ffffd1786ec00000 r12=ffff8d935fc406a0 r13=ffff8dd702647620
r14=00000000c00000bb r15=0000000000000001
iopl=0         nv up ei pl nz na po nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00010206
win32kfull!FreeThreadsWindowHooks+0x8c:
ffff8d93`5ec4550c 488b6b28        mov     rbp,qword ptr [rbx+28h] ds:002b:02000000`00000028=????????????????

Bundan sonra olması gerektiği gibi komut adresi ikinci parametrede gösterilen adresle eşleşiyor ama asıl garip olan ise, eşleşen bu komut adresi tarafından referans verilen adres. Eğer bunu incelersek, bunun doğru veya geçerli bir adres olmadığını açıkça görebiliyoruz. Tek bit çevirme açıkça görünüyor. Şöyle: Bir kullanıcı modu bellek alanı, 0x000 diye devam ederken burdaki bellek alanının açıkça 0x02 gibi bir bit çevirmeye maruz kaldığını ve bunun sonucu olarak da ilgili adresin kanonik bellek alanından çıktığını görebiliyoruz. Bu her zaman bir genel koruma hatası hatasının atılmasına yol açan bir duruma tekabul ediyor. Tek bit çevirmelerin genellikle RAM'den kaynaklanan hatalardan ortaya çıksa da işlemcinin bu bit çevirme döngülerinde aldığı rol de bir hayli fazladır. Bu durum da tipik olarak donanım arızalarından kaynaklanan bir döngüdür.

Zati, çöktüğü komut da thread'ler ile ilişkili pencere hook'ları ile ilgili kaynakların temizlenmesi ve serbest bırakılmasıyla ilgilenen bir komuttur. Hooklar, bir uygulamanın giriş mesajları gibi olayları hedef pencereye ulaşmadan önce yakalamasına ve işlemesine olanak tanıyan mekanizmalardır.
Yani bu komutla ilgili çökmeyle alakalı bir çıkarım yaparsak; genellikle bir tanıtıcı sızıntısı veya hook'ların yanlış temizlenmesi gibi kaynak yönetimiyle ilgili bir soruna işaret ediyor. Bu tipik olarak bellek sızıntısı olarak da nitelendirebilir. Bir ihtimaldir tabii komut üzerinden yorumlarken.

Kod:
2: kd> !pte 02000000`00000028
                                           VA 0200000000000028
PXE at FFFF86C361B0D000    PPE at FFFF86C361A00000    PDE at FFFF86C340000000    PTE at FFFF868000000000
Unable to get PXE FFFF86C361A00000
WARNING: noncanonical VA, accesses will fault !

2: kd> .formats 02000000`00000028
[........]
Binary: 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00101000

Lütfen, Prime95 testini Large ayarda çalıştırıp 1 saat kadar sistemini test edip sonuçları paylaş.
Eski ve basit olsa da ana mantığı anlatan bir rehberim var > Rehber: Prime95 testi

Using Hooks - Win32 apps
 
Dosyalarınız sürekli aynı. Farklı bir şey çıkar mı diye bakındım da yok.

Kod:
SYSTEM_SERVICE_EXCEPTION (3b)
An exception happened while executing a system service routine.
Arguments:
Arg1: 00000000c0000005, Exception code that caused the BugCheck.
Arg2: ffff8d935ec4550c, Address of the instruction which caused the BugCheck.
Arg3: ffffa98e08578930, Address of the context record for the exception that caused the BugCheck.
Arg4: 0000000000000000, zero.

Aldığın bu hatada da sorun işletim sistemi tarafından işlenemeyen genel bir istisna nedeniyle oluşuyor. Diğer dosyalarla arasındaki fark ise istisnanın nerede atıldığıdır ve mevcut hatada, bu her zaman bir sistem hizmetinin yürütülmesi sırasında oluyor. Bunların bağlam kayıtları, memory.dmp gibi daha gelişmiş kayıtlarda mevcut oluyor. Bu dosyadan bakamadığımız için de direkt olarak yığıtlara göz atmanı öneriyorum:

Kod:
2: kd> k
 # Child-SP RetAddr Call Site.
00 ffffa98e`08578028 fffff802`4e408c69 nt!KeBugCheckEx
01 ffffa98e`08578030 fffff802`4e4080bc nt!KiBugCheckDispatch+0x69
02 ffffa98e`08578170 fffff802`4e3ffbb2 nt!KiSystemServiceHandler+0x7c
03 ffffa98e`085781b0 fffff802`4e287547 nt!RtlpExecuteHandlerForException+0x12
04 ffffa98e`085781e0 fffff802`4e286136 nt!RtlDispatchException+0x297
05 ffffa98e`08578900 fffff802`4e408dac nt!KiDispatchException+0x186
06 ffffa98e`08578fc0 fffff802`4e404ae0 nt!KiExceptionDispatch+0x12c
07 ffffa98e`085791a0 ffff8d93`5ec4550c nt!KiGeneralProtectionFault+0x320
08 ffffa98e`08579330 ffff8d93`5fa7d6ab win32kfull!FreeThreadsWindowHooks+0x8c
09 ffffa98e`08579360 ffff8d93`5fa75e93 win32kbase!xxxDestroyThreadInfo+0xdc7
0a ffffa98e`085794f0 ffff8d93`5ec28c0b win32kbase!UserThreadCallout+0x553
0b ffffa98e`085796e0 ffff8d93`5fa6a74c win32kfull!W32pThreadCallout+0x7b
0c ffffa98e`08579710 ffff8d93`5ea510d0 win32kbase!W32CalloutDispatch+0x44c
0d ffffa98e`08579920 fffff802`4e602525 win32k!W32CalloutDispatchThunk+0x30
0e ffffa98e`08579960 fffff802`4e65b715 nt!PsInvokeWin32Callout+0x55
0f ffffa98e`08579990 fffff802`4e65ed7e nt!PspExitThread+0x4b5
10 ffffa98e`08579a90 fffff802`4e4086b8 nt!NtTerminateProcess+0xde
11 ffffa98e`08579a90 fffff802`4e4086bb nt!NtClose+0xec
12 ffffa98e`08579b00 00000000`770f1cfc nt!KiSystemServiceCopyEnd+0x28
13 00000000`0009eed8 00000000`00000000 0x770f1cfc.

kisystemservicecopyend işlevi, kullanıcı modundan çekirdek moduna geçişimizin sonunu gösteriyor ve ardından ntclose fonksiyonu ile de bir nesneye ait Handle'ı kapattığı anlatılıyor. Bunlardan sonra da NT! Ntterminateprocess ile de ilgili Process'i de sonlardığı ve Thread'den çıkmaya çalıştığını görebiliyoruz. Sonunda, genel bir koruma hatasının atıldığını ve bunun da sistemin şu anki hata ile durduğunu görebiliyoruz. İlk parametre, istisna kodunun bir erişim ihlali olmasıyla bu gözlemi açıklıyor.

Kod:
.cxr 0xffffa98e08578930.
rax=ffff8dd700673d10 rbx=0200000000000000 rcx=000000000000000e
rdx=ffffa98e08579330 rsi=0000000000000040 rdi=ffff8dd70264f9a0
rip=ffff8d935ec4550c rsp=ffffa98e08579330 rbp=ffffa98e085795f0
 r8=0000000000000000 r9=7fff8dd700613ea0 r10=ffff8d935fa7dff0
r11=ffffd1786ec00000 r12=ffff8d935fc406a0 r13=ffff8dd702647620
r14=00000000c00000bb r15=0000000000000001
iopl=0 nv up ei pl nz na po nc.
cs=0010 ss=0018 ds=002b es=002b fs=0053 gs=002b efl=00010206
win32kfull!FreeThreadsWindowHooks+0x8c:
ffff8d93`5ec4550c 488b6b28 mov rbp,qword ptr [rbx+28h] ds:002b:02000000`00000028=????????????????

Bundan sonra olması gerektiği gibi komut adresi ikinci parametrede gösterilen adresle eşleşiyor ama asıl garip olan ise, eşleşen bu komut adresi tarafından referans verilen adres. Eğer bunu incelersek, bunun doğru veya geçerli bir adres olmadığını açıkça görebiliyoruz. Tek bit çevirme açıkça görünüyor. Şöyle: Bir kullanıcı modu bellek alanı, 0x000 diye devam ederken buradaki bellek alanının açıkça 0x02 gibi bir bit çevirmeye maruz kaldığını ve bunun sonucu olarak da ilgili adresin kanonik bellek alanından çıktığını görebiliyoruz. Bu her zaman bir genel koruma hatası hatasının atılmasına yol açan bir duruma tekabül ediyor. Tek bit çevirmelerin genellikle RAM'den kaynaklanan hatalardan ortaya çıksa da işlemcinin bu bit çevirme döngülerinde aldığı rol de bir hayli fazladır. Bu durum da tipik olarak donanım arızalarından kaynaklanan bir döngüdür.

Zati, çöktüğü komut da Thread'ler ile ilişkili pencere hook'ları ile ilgili kaynakların temizlenmesi ve serbest bırakılmasıyla ilgilenen bir komuttur. Hooklar, bir uygulamanın giriş mesajları gibi olayları hedef pencereye ulaşmadan önce yakalamasına ve işlemesine olanak tanıyan mekanizmalardır.
Yani bu komutla ilgili çökmeyle alakalı bir çıkarım yaparsak; genellikle bir tanıtıcı sızıntısı veya hook'ların yanlış temizlenmesi gibi kaynak yönetimiyle ilgili bir soruna işaret ediyor. Bu tipik olarak bellek sızıntısı olarak da nitelendirebilir. Bir ihtimaldir tabii komut üzerinden yorumlarken.

Kod:
2: kd> !pte 02000000`00000028
 VA 0200000000000028.
PXE at FFFF86C361B0D000 PPE at FFFF86C361A00000 PDE at FFFF86C340000000 PTE at FFFF868000000000.
Unable to get PXE FFFF86C361A00000.
WARNING: noncanonical VA, accesses will fault !

Lütfen, Prime95 testini large ayarda çalıştırıp 1 saat kadar sistemini test edip sonuçları paylaş.
Eski ve basit olsa da ana mantığı anlatan bir rehberim var > Rehber: Prime95 testi

Using Hooks - Win32 apps

Hocam öncelikle cevabınız için çok teşekkürler. Testi yapamadım çünkü mavi ekrandan dolayı sistemi 2 dakika bile kullanamiyordum. Ekran kartını çıkardım ve SSD'ye format attım daha sonra işlemciden görüntü almayı denedim ama sistem açıldıktan 20-30 saniye sonra ekran çizgi çizgi olup donuyordu. Ben de o anakart ve işlemciyi kaldırdım, şimdi bir kenarda duruyorlar. Eski sistemimden yazıyorum şu an, sorun anakart da mı olabilir yoksa işlemcide mi nasıl anlayabiliriz?
 
Son düzenleyen: Moderatör: