Как локализовать ошибку от паники

Все. Я новичок в ядре. Я хочу знать, как получить полезную информацию от Painc, например, какая строка или какая функция не так.
Например, следующее является panic-output около usb hiddevкак это читать? Благодарю.


 BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
IP: [<ffffffff813b4aa1>] free_async+0xa1/0x100
PGD 2326c9067 PUD 230f4c067 PMD 0 
Oops: 0000 [#1] SMP 
last sysfs file: /sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/speed
CPU 3 
Modules linked in: ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat xt_CHECKSUM iptable_mangle bridge stp l]

Pid: 2400, comm: lsusb Tainted: G          I---------------    2.6.32-296.el664fixes.3.x86_64 #1 Dell Inc. OptiPlN
RIP: 0010:[<ffffffff813b4aa1>]  do_IRQ: 0.97 No irq handler for vector (irq -1)
[Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 53003c)
�Mounting proc filesystem
Mounting sysfs filesystem
Creating /dev
Creating initial device nodes
setfont: KDFONTOP: Invalid argument
Free memory/Total memory (free %): 78672 / 114884 ( 68.4795 )
Loading dm-mod.ko module
Loading dm-log.ko module
Loading dm-region-hash.ko module
Loading dm-mirror.ko module
Loading dm-zero.ko module
Loading dm-snapshot.ko module
Loading freq_table.ko module
Loading mperf.ko module
Loading ipt_REJECT.ko module
Loading nf_defrag_ipv4.ko module
Loading ip_tables.ko module
Loading nf_conntrack.ko module
Loading ip6_tables.ko module
Loading ipv6.ko module
Loading fat.ko module
Loading macvlan.ko module
Loading tun.ko module
Loading kvm.ko module
Loading uinput.ko module
Loading parport.ko module
Loading dcdbas.ko module
Loading microcode.ko module

1 ответ

Сама паника на самом деле довольно точна;

BUG: невозможно обработать разыменование указателя NULL ядра в 0000000000000028 IP: [] free_async+0xa1/0x100

Уже сообщается, что функция, в которой возникла проблема, является free_async, и эта функция имеет длину 0x100 байт, а сбой произошел по смещению 0xa1. Вам необходимо отобразить это смещение в точную строку кода, но теперь это зависит от вашей среды, как это сделать.

Иногда ручной просмотр кода уже показывает, какая строка содержит манипуляции с указателями, поэтому вы можете сделать это, просто просмотрев эту функцию.

Тогда следующий вопрос: почему у вас там NULL-указатель?

Другие вопросы по тегам