Bagikan melalui


0xEA Pemeriksaan Bug: THREAD_STUCK_IN_DEVICE_DRIVER

Pemeriksaan bug THREAD_STUCK_IN_DEVICE_DRIVER memiliki nilai 0x000000EA. Ini menunjukkan bahwa utas dalam driver perangkat berputar tanpa henti.

Penting

Artikel ini untuk programmer. Jika Anda adalah pelanggan yang telah menerima kode kesalahan layar biru saat menggunakan komputer Anda, lihat Memecahkan masalah kesalahan layar biru.

Parameter THREAD_STUCK_IN_DEVICE_DRIVER

Parameter Deskripsi

1

Penunjuk ke objek utas yang macet

2

Penunjuk ke objek DEFERRED_WATCHDOG

3

Penunjuk ke nama driver yang menyinggung

4

Di debugger kernel: Berapa kali pemeriksaan bug "dicegat" 0xEA tertembak

Pada layar biru: 1

Penyebab

Driver perangkat berputar dalam perulangan tak terbatas, kemungkinan besar menunggu perangkat keras menjadi menganggur.

Ini biasanya menunjukkan masalah dengan perangkat keras itu sendiri, atau dengan driver perangkat yang salah memprogram perangkat keras. Sering kali, ini adalah hasil dari kartu video yang buruk atau driver tampilan yang buruk.

Resolusi

Ekstensi debug !analyze menampilkan informasi tentang pemeriksaan bug dan dapat membantu dalam menentukan akar penyebabnya.

Gunakan perintah .thread (Atur Register Context) bersama dengan Parameter 1. Kemudian gunakan kb (Display Stack Backtrace) untuk menemukan lokasi tempat utas macet.

Jika debugger kernel sudah tersambung dan berjalan saat Windows mendeteksi kondisi waktu habis. Kemudian DbgBreakPoint akan dipanggil alih-alih KeBugCheckEx. Pesan terperinci akan dicetak ke debugger. Lihat Mengirim Output ke Debuggeuntuk informasi selengkapnya.

Pesan ini akan mencakup apa yang akan menjadi parameter pemeriksaan bug. Karena tidak ada pemeriksaan bug aktual yang dikeluarkan, perintah .bugcheck (Data Pemeriksaan Bug Tampilan) tidak akan berguna. Empat parameter juga dapat diambil dari variabel global Watchdog dengan menggunakan dd watchdog!g_WdBugCheckData L5" pada sistem 32-bit, atau dq watchdog!g_WdBugCheckData L5" pada sistem 64-bit.

Men-debug kesalahan ini dengan cara interaktif seperti ini akan memungkinkan Anda menemukan utas yang menyinggung, mengatur titik henti di dalamnya, lalu menggunakan g (Go) untuk kembali ke kode berputar untuk men-debugnya lebih lanjut.

Pada mesin multiprosesor (OS build 3790 atau lebih lama), Anda dapat mencapai waktu habis jika utas berputar terganggu oleh gangguan perangkat keras dan rutinitas ISR atau DPC berjalan pada saat pemeriksaan bug. Ini karena item kerja waktu habis dapat dikirimkan dan ditangani pada CPU kedua dan waktu yang sama. Jika ini terjadi, Anda harus melihat lebih dalam pada tumpukan utas yang menyinggung untuk menentukan kode pemintalan yang menyebabkan waktu habis terjadi. Gunakan perintah dds (Tampilkan Kata dan Simbol) untuk melakukan ini.