Ядро cra sh - общая ошибка защиты: 0000 1 PREEMPT SMP - PullRequest
0 голосов
/ 27 марта 2020
WARNING: cannot access module kallsyms
crash: inconsistent active task indications for CPU 7:
runqueue: ffff88880f540b80 "in:imuxsock" (default)
current_task: ffff888810361700 "systemd-journal"
SYSTEM MAP: /root/System.map-4.19.81-nn14-server
DEBUG KERNEL: /root/dbg/usr/lib/debug/boot/vmlinux-4.19.81-nn14-server (4.19.81-nn14-server)
DUMPFILE: dump.202003222047
CPUS: 8
DATE: Sun Mar 22 13:46:50 2020
UPTIME: 20:17:04
LOAD AVERAGE: 4.21, 4.26, 4.28
TASKS: 1386
NODENAME: edge3
RELEASE: 4.19.81-nn14-server
VERSION: #nn14 SMP PREEMPT Fri Mar 6 06:43:38 PST 2020
MACHINE: x86_64 (2194 Mhz)
MEMORY: 32 GB
PANIC: "general protection fault: 0000 1 PREEMPT SMP"
PID: 3959
COMMAND: "dp-ipc18"
TASK: ffff8883f9c60000  [THREAD_INFO: ffff8883f9c60000]
CPU: 6
STATE: TASK_RUNNING (PANIC)

crash> bt
PID: 3959 TASK: ffff8883f9c60000 CPU: 6 COMMAND: "dp-ipc18"
#0 [ffffc90004253b00] machine_kexec at ffffffff81055d8d
#1 [ffffc90004253b60] __crash_kexec at ffffffff811159ea
#2 [ffffc90004253c28] crash_kexec at ffffffff811171fe
#3 [ffffc90004253c50] oops_end at ffffffff81029ce4
#4 [ffffc90004253c70] general_protection at ffffffff810020ce
[exception RIP: no symbolic reference]
RIP: ffffffffb0364373 RSP: ffffc90004253d28 RFLAGS: 00010206
RAX: 0006000800000000 RBX: ffff88804664e8c0 RCX: 00000000000000c1
RDX: 000065af80000000 RSI: 0005888800000000 RDI: 0000000000000001
RBP: ffff88804664f278 R8: 000000000000001f R9: 0000000000000020
R10: ffff88804664f2d8 R11: ffff88804664f378 R12: ffff8887b29f9840
R13: 0000000000000020 R14: ffff8887b2a05cc0 R15: ffff888000000000
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
#5 [ffffc90004253de0] do_vfs_ioctl at ffffffff81242d23
#6 [ffffc90004253e00] ksys_ioctl at ffffffff812430c7
#7 [ffffc90004253e30] __x64_sys_ioctl at ffffffff81243111
#8 [ffffc90004253e38] do_syscall_64 at ffffffff81007576
#9 [ffffc90004253e50] entry_SYSCALL_64_after_hwframe at ffffffff8100112b
[exception RIP: unknown or invalid address]
RIP: 000000000000002b RSP: 0000000000000000 RFLAGS: 0000002b
RAX: 000065bbf063b4bd RBX: 000065bbf063b4bd RCX: 0000000000000033
RDX: 0000000000000293 RSI: 000065bbd8e62370 RDI: 000000000000002b
RBP: 0000000000000001 R8: 0000000000000001 R9: 000000000000004b
R10: 0000146ecaf84801 R11: 0000000000000001 R12: 0000146ecb4ed5a0
R13: 0000146ecb4ee240 R14: 000065b75403ba40 R15: 000000000000002b
ORIG_RAX: 000065bbd8e62270 CS: 65bbd8e62250 SS: 0000
bt: WARNING: possibly bogus exception frame
crash> sym ffffffffb0364373
sym: invalid address: ffffffffb0364373

dmesg example log:

[291180.979739] CPU: 6 PID: 3959 Comm: dp-ipc18 Kdump: loaded Tainted: G U OE 4.19.81-nn14- 
server #nn14
[291180.979878] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference 
Platform, BIOS 6.00 12/12/2018
[291180.980030] RIP: 0010:[<ffffffffb0364373>] kni_fifo_trans_pa2va+0x83/0x120 [rte_kni]
[291180.980141] Code: 46 d0 4c 89 f7 e8 9d fc ff ff 85 c0 41 89 c5 0f 84 98 00 00 00 8d 40 
ff 49 89 ea 4c 8d 9c c3 c0 09 00 00 49 8b 02 4a 8d 34 38 <48> 8b 16 48 2b 56 08 48 01 d0 49 
89 82 00 01 00 00 0f b7 7e 14 85
[291180.980382] RSP: 0018:ffffc90004253d28 EFLAGS: 00010206
[291180.980462] RAX: 0006000800000000 RBX: ffff88804664e8c0 RCX: 00000000000000c1
[291180.980564] RDX: 000065af80000000 RSI: 0005888800000000 RDI: 0000000000000001
[291180.980665] RBP: ffff88804664f278 R08: 000000000000001f R09: 0000000000000020
[291180.980767] R10: ffff88804664f2d8 R11: ffff88804664f378 R12: ffff8887b29f9840
[291180.980868] R13: 0000000000000020 R14: ffff8887b2a05cc0 R15: ffff888000000000
[291180.980970] FS: 000065bbd8e63700(0000) GS:ffff88881fb80000(0000) knlGS:0000000000000000
[291180.981090] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[291180.981181] CR2: 000055a41a203018 CR3: 0000000001d88002 CR4: 00000000003606f0 shadow 
CR4: 00000000003606f0
[291180.981354] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[291180.981465] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[291180.981576] Call Trace:
[291180.981631] [<ffffffffb0365278>] kni_net_release_fifo_phy+0x48/0x60 [rte_kni]
[291180.981745] [<ffffffffb03630ce>] kni_dev_remove+0x2e/0x50 [rte_kni]
[291180.981865] [<ffffffffb0363e35>] kni_ioctl_release+0x235/0x290 [rte_kni]
[291180.981973] [<ffffffffb0363eb7>] kni_ioctl+0x27/0x50 [rte_kni]
[291180.982081] [<ffffffff81242d23>] do_vfs_ioctl+0x93/0x3d0
[291180.982192] [<ffffffff812430c7>] ksys_ioctl+0x67/0x80
[291180.982280] [<ffffffff81243111>] __x64_sys_ioctl+0x11/0x20
[291180.982376] [<ffffffff81007576>] do_syscall_64+0x56/0x130
[291180.982468] [<ffffffff8100112b>] entry_SYSCALL_64_after_hwframe+0x44/0xa7

Здесь вы можете видеть, что обратная трассировка с использованием утилиты cra sh и журнала dmesg совершенно разные. В журнале dmesg показано, что cra sh произошел из-за вызовов функций в загружаемом модуле ядра Dynami c, но в утилите cra sh его признаков нет

Я даже использовал 'mod - s rte_kni ./rte_kni.o '- скомпилированная версия модуля ядра с символами отладки, но утилита cra sh показывает RIP как недопустимый адрес и ссылки на символы c нет.

Это довольно сложно отладка, что именно приводит к cra sh, пожалуйста, помогите в отладке этого ядра cra sh

...