Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pemeriksaan bug DPC_WATCHDOG_VIOLATION memiliki nilai 0x00000133. Pemeriksaan bug ini menunjukkan bahwa pengawas DPC dijalankan, baik karena mendeteksi satu panggilan prosedur tangguhan (DPC) yang berjalan lama, atau karena sistem menghabiskan waktu lama pada tingkat permintaan interupsi (IRQL) DISPATCH_LEVEL atau lebih tinggi.
Nilai Parameter 1 menunjukkan apakah satu DPC melebihi batas waktu, atau apakah sistem secara kumulatif menghabiskan jangka waktu yang diperpanjang di IRQL DISPATCH_LEVEL atau lebih tinggi. DPC tidak boleh berjalan lebih dari 100 mikro detik dan ISR tidak boleh berjalan lebih lama dari 25 mikrosekon, namun nilai batas waktu aktual pada sistem diatur jauh lebih tinggi.
Untuk informasi selengkapnya tentang DPC, lihat Pengantar Objek DPC dan Windows Internal Edisi ke-7 Bagian 1 oleh Pavel Yosifovich, Mark E. Russinovich, David A. Solomon dan Alex Ionescu.
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 DPC_WATCHDOG_VIOLATION
Parameter 1 menunjukkan jenis pelanggaran. Arti parameter lain tergantung pada nilai Parameter 1.
Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Penyebab Kesalahan |
---|---|---|---|---|
0 | Jumlah waktu DPC (dalam tanda centang) | Jatah waktu DPC (dalam tanda centang). | cast ke nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, yang berisi informasi tambahan mengenai batas waktu DPC tunggal ini | Satu DPC atau ISR melebihi penjatahan waktunya. Komponen yang menyinggung biasanya dapat diidentifikasi dengan jejak tumpukan. |
1 | Periode pengawas | cast ke nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, yang berisi informasi tambahan mengenai batas waktu DPC tunggal ini | Dicadangkan | Sistem ini secara kumulatif menghabiskan waktu yang lama di IRQL DISPATCH_LEVEL atau lebih tinggi. Komponen yang menyinggung biasanya dapat diidentifikasi dengan jejak tumpukan. |
Penyebab
Untuk menentukan penyebabnya, memerlukan debugger Windows, pengalaman pemrograman, dan akses ke kode sumber untuk modul yang salah.
Untuk informasi selengkapnya, lihat topik berikut:
Analisis crash dump menggunakan debugger Windows (WinDbg)
Menganalisis File Cadangan Mode Kernel dengan WinDbg
Menggunakan !analyze Extension dan !analyze
Untuk informasi selengkapnya tentang Windows DPC, lihat Windows Internals 7th Edition Part 1 oleh Pavel Yosifovich, Mark E. Russinovich, David A. Solomon dan Alex Ionescu.
Contoh 1
Ekstensi debug !analyze menampilkan informasi tentang pemeriksaan bug dan dapat membantu dalam menentukan akar penyebabnya.
Parameter 1 = 0
Dalam contoh ini, jumlah tick 501 melebihi penjatahan waktu DPC 500. Nama gambar menunjukkan bahwa kode ini sedang dijalankan ketika pemeriksaan bug terjadi.
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: 0000000000000000
...
IMAGE_NAME: BthA2DP.sys
...
Gunakan perintah debugger berikut untuk mengumpulkan informasi selengkapnya tentang kegagalan dengan parameter 0:
k (Tampilkan Stack Backtrace) untuk melihat kode apa yang berjalan ketika kode berhenti terjadi.
Anda mungkin ingin menggunakan perintah u, ub, uu (Unassemble) untuk melihat lebih dalam ke spesifik kode yang sedang berjalan.
Ekstensi !pcr menampilkan status Wilayah Kontrol Prosesor (PCR) saat ini pada prosesor tertentu. Dalam output akan menjadi alamat RRCB
0: kd> !pcr
KPCR for Processor 0 at fffff8035f5a4000:
Major 1 Minor 1
NtTib.ExceptionList: fffff80368e77fb0
NtTib.StackBase: fffff80368e76000
NtTib.StackLimit: 0000000000000000
NtTib.SubSystemTib: fffff8035f5a4000
NtTib.Version: 000000005f5a4180
NtTib.UserPointer: fffff8035f5a4870
NtTib.SelfTib: 000000b6d3086000
SelfPcr: 0000000000000000
Prcb: fffff8035f5a4180
Irql: 0000000000000000
IRR: 0000000000000000
IDR: 0000000000000000
InterruptMode: 0000000000000000
IDT: 0000000000000000
GDT: 0000000000000000
TSS: 0000000000000000
CurrentThread: fffff80364926a00
NextThread: ffffe40b77c12040
IdleThread: fffff80364926a00
Anda dapat menggunakan perintah dt (Jenis Tampilan) untuk menampilkan informasi tambahan tentang DPC dan Pengawas DPC. Untuk alamat, gunakan RRCB yang tercantum dalam output !pcr:
dt nt!_KPRCB fffff80309974180 Dpc*
0: kd> dt nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK fffff803648fa320
+0x000 Signature : 0xaebecede
+0x004 Revision : 1
+0x006 Size : 0x10
+0x008 DpcWatchdogProfileOffset : 0x84a8
+0x00c DpcWatchdogProfileLength : 0x8200
Contoh 2
Parameter 1 = 1
Untuk parameter 1, kode mungkin tidak berhenti di area kode yang menyinggung. Dalam hal ini salah satu pendekatan adalah menggunakan pelacakan peristiwa untuk mencoba melacak driver mana yang melebihi durasi eksekusi normal.
Gunakan ekstensi debug !analyze untuk menampilkan informasi tentang pemeriksaan bug.
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000001, The system cumulatively spent an extended period of time at
DISPATCH_LEVEL or above. The offending component can usually be
identified with a stack trace.
Arg2: 0000000000001e00, The watchdog period.
Arg3: fffff803648fa320, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
additional information regarding the cumulative timeout
Arg4: 0000000000000000
Melemparkan alamat nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK untuk menampilkan informasi tentang hal itu.
0: kd> dt nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK fffff803648fa320
+0x000 Signature : 0xaebecede
+0x004 Revision : 1
+0x006 Size : 0x10
+0x008 DpcWatchdogProfileOffset : 0x84a8
+0x00c DpcWatchdogProfileLength : 0x8200
Gunakan perintah !dpcs untuk menampilkan DPC yang diantrekan.
3: kd> !dpcs
CPU Type KDPC Function
0: Normal : 0xfffff8035f5ac290 0xfffff80363e15630 nt!PpmPerfAction
Failed to read DPC at 0xffffe40b77190dd8
0: Threaded: 0xfffff8035f5ac3d8 0xfffff80363f27d70 nt!KiDpcWatchdog
Resolusi
Untuk menentukan penyebab spesifik dan untuk membuat perbaikan kode, pengalaman pemrograman dan akses ke kode sumber modul yang rusak, diperlukan.
Keterangan
Secara umum kode berhenti ini disebabkan oleh kode driver yang rusak yang dalam kondisi tertentu, tidak menyelesaikan pekerjaannya dalam jangka waktu yang dialokasikan.
Jika Anda tidak dilengkapi untuk menggunakan debugger Windows untuk masalah ini, Anda harus menggunakan beberapa teknik pemecahan masalah dasar.
Jika driver diidentifikasi dalam pesan pemeriksaan bug, untuk mengisolasi masalah, nonaktifkan driver. Tanyakan kepada produsen untuk pembaruan driver.
Periksa Pemantau Peristiwa Masuk Sistem untuk pesan kesalahan tambahan yang mungkin membantu mengidentifikasi perangkat atau driver yang menyebabkan pemeriksaan bug 0x133.
Konfirmasikan bahwa perangkat keras baru yang diinstal kompatibel dengan versi Windows yang terinstal. Misalnya untuk Windows 10, Anda bisa mendapatkan informasi tentang perangkat keras yang diperlukan di Spesifikasi Windows 10.
Untuk informasi pemecahan masalah umum tambahan, lihat Menganalisis Data Layar Biru Pemeriksaan Bug.
Lihat juga
Analisis crash dump menggunakan debugger Windows (WinDbg)