0xA pemeriksaan bug: IRQL_NOT_LESS_OR_EQUAL

Pemeriksaan bug IRQL_NOT_LESS_OR_EQUAL memiliki nilai 0x0000000A. Pemeriksaan bug ini menunjukkan bahwa Microsoft Windows atau driver mode kernel mengakses memori halaman pada alamat yang tidak valid saat berada pada tingkat permintaan interupsi (IRQL) yang dinaikkan. Penyebabnya biasanya adalah penunjuk yang buruk atau masalah pageability.

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 IRQL_NOT_LESS_OR_EQUAL

Parameter Deskripsi
1 Alamat memori virtual yang tidak dapat diakses.

Gunakan !pool pada alamat ini untuk melihat apakah itu kumpulan halaman. Perintah lain yang mungkin berguna dalam mengumpulkan informasi tentang kegagalan adalah !pte, !address, dan ln (List Nearest Symbols).
2 IRQL pada saat kesalahan.

Nilai:
2 - IRQL DISPATCH_LEVEL pada saat kesalahan.
3 Bidang bit yang menjelaskan operasi yang menyebabkan kesalahan. Perhatikan bahwa bit 3 hanya tersedia pada chipset yang mendukung tingkat pelaporan ini.

Nilai Bit 0:
0 - Operasi baca
1 - Operasi tulis

Nilai Bit 3:
0 - Bukan operasi eksekusi
1 - Jalankan operasi

Nilai gabungan Bit 0 dan Bit 3:
0x0 - Kesalahan saat mencoba MEMBACA dari alamat di parameter 1
0x1 - Kesalahan saat mencoba MENULIS ke alamat di parameter 1
0x8 - Kesalahan saat mencoba mengEKSEKUSI kode dari alamat di parameter 1

Nilai ini disebabkan oleh:
  • Memanggil fungsi yang tidak dapat dipanggil pada DISPATCH_LEVEL saat DISPATCH_LEVEL.
  • Lupa melepaskan spinlock.
  • Menandai kode sebagai dapat dipertanyakan ketika harus tidak dapat di-halaman. Misalnya, jika kode memperoleh spinlock, atau dipanggil dalam panggilan prosedur yang ditangguhkan.
4 Penunjuk instruksi pada saat kesalahan.

Gunakan perintah ln (Daftar Simbol Terdekat) pada alamat ini untuk melihat nama fungsi.

Penyebab

Pemeriksaan bug ini disebabkan oleh driver perangkat mode kernel yang menggunakan alamat yang tidak tepat.

Pemeriksaan bug ini menunjukkan bahwa upaya dilakukan untuk mengakses alamat yang tidak valid saat berada pada tingkat permintaan interupsi yang dinaikkan (IRQL). Penyebabnya adalah penunjuk memori yang buruk atau masalah pageability dengan kode driver perangkat.

Panduan umum yang dapat Anda gunakan untuk mengategorikan jenis kesalahan pengkodian yang menyebabkan pemeriksaan bug adalah sebagai berikut:

  • Jika parameter 1 kurang dari 0x1000, masalahnya kemungkinan adalah dereferensi pointer NULL.

  • Jika !pool melaporkan bahwa parameter 1 adalah kumpulan halaman (atau jenis memori pageable lainnya), maka IRQL terlalu tinggi untuk mengakses data ini. Jalankan di IRQL yang lebih rendah, atau alokasikan data di kumpulan yang tidak disebarkan.

  • Jika parameter 3 menunjukkan bahwa pemeriksaan bug adalah upaya untuk menjalankan kode yang dapat dipaginasi, maka IRQL terlalu tinggi untuk memanggil fungsi ini. Jalankan di IRQL yang lebih rendah, atau jangan tandai kode sebagai dapat di-pageable.

  • Ini mungkin pointer buruk yang disebabkan oleh use-after-free atau bit-flipping. Selidiki validitas parameter 1 dengan !pte, !address, dan ln (daftar simbol terdekat).

Resolusi

Jika debugger kernel tersedia, dapatkan jejak tumpukan. Mulailah dengan menjalankan ekstensi !analyze debugger untuk menampilkan informasi tentang pemeriksaan bug. Ekstensi !analyze dapat membantu dalam menentukan akar penyebabnya. Selanjutnya, masukkan salah satu perintah k* (tampilkan backtrace tumpukan) untuk melihat tumpukan panggilan.

Pengumpulan informasi

Periksa nama driver jika tercantum di layar biru.

Periksa Sistem Masuk Pemantau Peristiwa untuk pesan kesalahan lain yang mungkin membantu menentukan perangkat atau driver yang menyebabkan kesalahan. Cari kesalahan penting dalam log sistem yang terjadi dalam jangka waktu yang sama dengan layar biru.

Pemverifikasi Driver

Driver Verifier adalah alat yang berjalan secara real time untuk memeriksa perilaku driver. Misalnya, Driver Verifier memeriksa penggunaan sumber daya memori, seperti kumpulan memori. Jika mengidentifikasi kesalahan dalam eksekusi kode driver, secara proaktif membuat pengecualian untuk memungkinkan bagian kode driver tersebut diteliti lebih lanjut. Driver Verifier Manager disertakan dalam Windows dan tersedia di semua PC Windows.

Untuk memulai Driver Verifier Manager, ketik pemverifikasi pada prompt perintah. Anda dapat mengonfigurasi driver mana yang akan diverifikasi. Kode yang memverifikasi driver menambahkan overhead saat berjalan, jadi cobalah untuk memverifikasi jumlah driver terkecil mungkin. Untuk informasi selengkapnya, lihat Pemverifikasi Driver.

Kode berikut menunjukkan contoh penelusuran kesalahan:

kd> .bugcheck       [Lists bug check data.]
Bugcheck code 0000000a
Arguments 00000000 0000001c 00000000 00000000

kd> kb [Lists the stack trace.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> kv [Lists the trap frames.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint (FPO: [0,0,0])
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 (FPO: [0,0] TrapFrame @ 8013eee8)
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> .trap 8013eee8 [Gets the registers for the trap frame at the time of the fault.]
eax=dec80201 ebx=ffdff420 ecx=8013c71c edx=000003f8 esi=00000000 edi=87038e10
eip=00000000 esp=8013ef5c ebp=8013ef64 iopl=0         nv up ei pl nz na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010202
ErrCode = 00000000
00000000 ???????????????    [The current instruction pointer is NULL.]

kd> kb       [Gives the stack trace before the fault.]
ChildEBP RetAddr  Args to Child
8013ef68 fe551aa1 ff690268 00000002 fe5620d2 NT!_DbgBreakPoint
8013ef74 fe5620d2 fe5620da ff690268 80404690
NDIS!_EthFilterIndicateReceiveComplete+0x31
8013ef64 00000246 fe551aa1 ff690268 00000002 elnkii!_ElnkiiRcvInterruptDpc+0x1d0

Keterangan

Kesalahan yang menghasilkan pemeriksaan bug ini biasanya terjadi setelah penginstalan driver perangkat, layanan sistem, atau BIOS yang rusak.

Jika Anda mengalami pemeriksaan bug 0xA saat meningkatkan ke versi Windows yang lebih baru, kesalahan mungkin disebabkan oleh driver perangkat, layanan sistem, pemindai virus, atau alat cadangan yang tidak kompatibel dengan versi baru.

Mengatasi masalah perangkat keras yang rusak: Jika perangkat keras telah ditambahkan ke sistem baru-baru ini, hapus untuk melihat apakah kesalahan berulang. Jika perangkat keras yang ada gagal, hapus atau ganti komponen yang rusak. Jalankan diagnostik perangkat keras yang disediakan oleh produsen sistem. Untuk detail tentang prosedur ini, lihat manual pemilik untuk komputer Anda.

Mengatasi masalah layanan sistem yang rusak: Nonaktifkan layanan dan konfirmasi apakah melakukannya menyelesaikan kesalahan. Jika demikian, hubungi produsen layanan sistem tentang kemungkinan pembaruan. Jika kesalahan terjadi selama startup sistem, selidiki opsi perbaikan Windows. Untuk informasi selengkapnya, lihat Opsi pemulihan di Windows 10.

Mengatasi masalah perangkat lunak antivirus: Nonaktifkan program dan konfirmasi apakah melakukannya mengatasi kesalahan. Jika ya, hubungi produsen program tentang kemungkinan pembaruan.

Untuk informasi umum tentang pemecahan masalah pemeriksaan bug, lihat Data layar biru.

Lihat juga

Referensi kode pemeriksaan bug