0x1E pemeriksaan bug: KMODE_EXCEPTION_NOT_HANDLED
Pemeriksaan bug KMODE_EXCEPTION_NOT_HANDLED memiliki nilai 0x0000001E. Pemeriksaan bug menunjukkan bahwa program mode kernel menghasilkan pengecualian yang tidak ditangkap oleh penangan kesalahan.
Penting
Artikel ini untuk programmer. Jika Anda adalah pelanggan Microsoft dan komputer Anda menampilkan kode kesalahan layar biru, lihat Memecahkan masalah kesalahan layar biru.
KMODE_EXCEPTION_NOT_HANDLED parameter
Parameter | Deskripsi |
---|---|
1 | Kode pengecualian yang tidak ditangani. |
2 | Alamat tempat pengecualian terjadi. |
3 | Parameter informasi pengecualian 0 dari rekaman pengecualian. |
4 | Parameter informasi pengecualian 0 dari rekaman pengecualian. |
Penyebab
Untuk menafsirkan pemeriksaan bug ini, Anda harus mengidentifikasi pengecualian mana yang dihasilkan.
Kode pengecualian umum meliputi:
0x80000002: STATUS_DATATYPE_MISALIGNMENT
Referensi data yang tidak ditandatangani ditemukan.
0x80000003: STATUS_BREAKPOINT
Titik henti atau ASSERT ditemui ketika tidak ada debugger kernel yang melekat pada sistem.
0xC0000005: STATUS_ACCESS_VIOLATION
Terjadi pelanggaran akses memori. (Parameter 4 dari pemeriksaan bug adalah alamat yang coba diakses driver.)
Untuk daftar lengkap kode pengecualian, lihat nilai NTSTATUS. Kode pengecualian didefinisikan dalam ntstatus.h, file header yang ada di Windows Driver Kit. Untuk informasi selengkapnya, lihat File header di Windows Driver Kit.
Keterangan
Jika Anda tidak dilengkapi untuk men-debug masalah ini, Anda dapat menggunakan beberapa teknik pemecahan masalah dasar yang dijelaskan dalam data layar Biru. Jika driver diidentifikasi dalam pesan pemeriksaan bug, nonaktifkan driver atau tanyakan kepada produsen untuk pembaruan driver.
Ketidakkompakan perangkat keras
Konfirmasikan bahwa perangkat keras baru yang terinstal kompatibel dengan versi Windows yang terinstal. Misalnya, Anda bisa mendapatkan informasi tentang perangkat keras yang diperlukan pada spesifikasi Windows 10.
Driver perangkat atau layanan sistem yang rusak
Pengandar perangkat atau layanan sistem yang rusak dapat menyebabkan kesalahan ini. Masalah perangkat keras, seperti ketidakcocokan BIOS, konflik memori, dan konflik IRQ, juga dapat menghasilkan kesalahan ini.
Jika driver dicantumkan berdasarkan nama dalam pesan pemeriksaan bug, nonaktifkan atau hapus driver tersebut. Nonaktifkan atau hapus driver atau layanan apa pun yang baru saja ditambahkan. Jika kesalahan terjadi selama urutan startup dan partisi sistem diformat sebagai sistem file NTFS, Anda mungkin dapat menggunakan Mode Aman untuk menonaktifkan driver di Manajer Perangkat.
Periksa Log Masuk Sistem Pemantau Peristiwa untuk pesan kesalahan lainnya yang mungkin membantu Anda mengidentifikasi perangkat atau driver yang menyebabkan pemeriksaan bug 0x1E. Jalankan juga diagnostik perangkat keras yang disediakan oleh produsen sistem, terutama pemindai memori. Untuk informasi selengkapnya tentang langkah-langkah pemecahan masalah ini, lihat manual pemilik untuk komputer Anda.
Kesalahan yang menghasilkan pesan ini mungkin terjadi setelah mulai ulang pertama selama Penyetelan Windows atau setelah Penyetelan selesai. Kemungkinan penyebab kesalahan adalah ketidaksestuan BIOS sistem. Anda dapat mengatasi masalah BIOS dengan meningkatkan versi BIOS sistem.
Resolusi
Anda mungkin merasa sulit untuk mendapatkan jejak tumpukan ketika Anda men-debug masalah ini. Alamat pengecualian (parameter 2) harus mengidentifikasi driver atau fungsi yang menyebabkan masalah.
Kode pengecualian 0x80000003 menunjukkan bahwa titik henti atau pernyataan yang dikodekan secara permanen terpukul, tetapi sistem dimulai dengan /NODEBUG
sakelar . Masalah ini jarang terjadi. Jika itu terjadi berulang kali, pastikan bahwa debugger kernel tersambung dan bahwa sistem dimulai dengan /DEBUG
sakelar.
Jika kode pengecualian 0x80000002 terjadi, bingkai perangkap menyediakan lebih banyak informasi.
Penyebab tidak diketahui
Jika penyebab spesifik pengecualian tidak diketahui, pertimbangkan untuk menggunakan prosedur berikut untuk mendapatkan jejak tumpukan.
Catatan
Prosedur ini mengasumsikan bahwa Anda dapat menemukan NT!PspUnhandledExceptionInSystemThread
. Namun, dalam beberapa kasus, seperti dalam crash pelanggaran akses, Anda tidak akan dapat menemukan NT!PspUnhandledExceptionInSystemThread
. Dalam hal ini, cari ntoskrnl!KiDispatchException
. Parameter ketiga yang diteruskan ke fungsi ini adalah alamat bingkai trap. Gunakan perintah .trap (display trap frame) dengan alamat ini untuk mengatur konteks register ke nilai yang benar. Kemudian Anda dapat melakukan pelacakan tumpukan dan mengeluarkan perintah lain.
Mendapatkan pelacakan tumpukan
Untuk mendapatkan pelacakan tumpukan jika prosedur pelacakan tumpukan normal gagal:
Gunakan perintah kb (tampilkan backtrace tumpukan) untuk menampilkan parameter dalam pelacakan tumpukan. Cari panggilan ke
NT!PspUnhandledExceptionInSystemThread
. (Jika fungsi ini tidak tercantum, lihat catatan sebelumnya.)Parameter pertama untuk
NT!PspUnhandledExceptionInSystemThread
adalah penunjuk ke struktur. Penunjuk berisi pointer keexcept
pernyataan:typedef struct _EXCEPTION_POINTERS { PEXCEPTION_RECORD ExceptionRecord; PCONTEXT ContextRecord; } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; ULONG PspUnhandledExceptionInSystemThread( IN PEXCEPTION_POINTERS ExceptionPointers )
Gunakan perintah dd (memori tampilan) pada alamat tersebut untuk menampilkan data yang Anda butuhkan.
Nilai pertama yang diambil adalah rekaman pengecualian. Untuk rekaman pengecualian, gunakan perintah .exr (rekaman pengecualian tampilan).
Nilai kedua adalah rekaman konteks. Untuk rekaman konteks, gunakan perintah .cxr (rekaman konteks tampilan).
.cxr
Setelah perintah dijalankan, gunakankb
perintah untuk menampilkan jejak tumpukan yang didasarkan pada informasi rekaman konteks. Pelacakan tumpukan ini menunjukkan tumpukan panggilan tempat pengecualian yang tidak tertangani terjadi.
Contoh pemeriksaan bug
Contoh berikut menunjukkan 0x1E pemeriksaan bug pada prosesor x86:
kd> .bugcheck get the bug check data
Bugcheck code 0000001e
Arguments c0000005 8013cd0a 00000000 0362cffff
kd> kb start with a stack trace
FramePtr RetAddr Param1 Param2 Param3 Function Name
8013ed5c 801263ba 00000000 00000000 fe40cb00 NT!_DbgBreakPoint
8013eecc 8013313c 0000001e c0000005 8013cd0a NT!_KeBugCheckEx+0x194
fe40cad0 8013318e fe40caf8 801359ff fe40cb00 NT!PspUnhandledExceptionInSystemThread+0x18
fe40cad8 801359ff fe40cb00 00000000 fe40cb00 NT!PspSystemThreadStartup+0x4a
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_except_handler3+0x47
00000000 00000000 00000000 00000000 00000000 NT!KiThreadStartup+0xe
kd> dd fe40caf8 L2 dump EXCEPTION_POINTERS structure
0xFE40CAF8 fe40cd88 fe40cbc4 ..@...@.
kd> .exr fe40cd88 first DWORD is the exception record
Exception Record @ FE40CD88:
ExceptionCode: c0000005
ExceptionFlags: 00000000
Chained Record: 00000000
ExceptionAddress: 8013cd0a
NumberParameters: 00000002
Parameter[0]: 00000000
Parameter[1]: 0362cfff
kd> .cxr fe40cbc4 second DWORD is the context record
CtxFlags: 00010017
eax=00087000 ebx=00000000 ecx=03ff0000 edx=ff63d000 esi=0362cfff edi=036b3fff
eip=8013cd0a esp=fe40ce50 ebp=fe40cef8 iopl=0 nv dn ei pl nz ac po cy
vip=0 vif=0
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010617
0x8013cd0a f3a4 rep movsb
kd> kb kb gives stack for context record
ChildEBP RetAddr Args to Child
fe40ce54 80402e09 ff6c4000 ff63d000 03ff0000 NT!_RtlMoveMemory@12+0x3e
fe40ce68 80403c18 ffbc0c28 ff6ce008 ff6c4000 HAL!_HalpCopyBufferMap@20+0x49
fe40ce9c fe43b1e4 ff6cef90 ffbc0c28 ff6ce009 HAL!_IoFlushAdapterBuffers@24+0x148
fe40ceb8 fe4385b4 ff6ce388 6cd00800 ffbc0c28 QIC117!_kdi_FlushDMABuffers@20+0x28
fe40cef8 fe439894 ff6cd008 ffb6c820 fe40cf4c QIC117!_cqd_CmdReadWrite@8+0x26e
fe40cf18 fe437d92 ff6cd008 ffb6c820 ff6e4e50 QIC117!_cqd_DispatchFRB@8+0x210
fe40cf30 fe43a4f5 ff6cd008 ffb6c820 00000000 QIC117!_cqd_ProcessFRB@8+0x134
fe40cf4c 80133184 ff6ce388 00000000 00000000 QIC117!_kdi_ThreadRun@4+0xa9
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_PspSystemThreadStartup@8+0x40
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk