记一次Linux内核崩溃Kdump,Crash,Vmcore

系统 Linux
Linux内核发送崩溃时,kdump会生成一个内核转储文件vmcore。 可以通过分析vmcore分析出内核崩溃的原因。

[[385368]]

 原理

Linux内核发送崩溃时,kdump会生成一个内核转储文件vmcore。 可以通过分析vmcore分析出内核崩溃的原因。

crash是一个被广泛应用的内核崩溃转储文件分析工具。使用crash调试内核转储文件,需要安装crash工具和内核调试工具kernel-debuginfo。

安装需要的软件

1、查看系统内核

  1. [root@qd01-stop-free015 ~]# uname  -r 
  2. 3.10.0-1160.15.2.el7.x86_64 

 2、安装kdump,crash

  1. yum install  crash kexec-tools -y 

3、安装kernel-debuginfo

下载链接http://debuginfo.centos.org/7/x86_64/

  1. rpm  -ivh kernel-debuginfo-3.10.0-1160.15.2.el7.x86_64.rpm kernel-debuginfo-common-x86_64-3.10.0-1160.15.2.el7.x86_64.rpm 

crash报告分析

1、使用crash命令加载vmcore文件

  1. [root@qd01-stop-free015 kdump]# crash  /usr/lib/debug/lib/modules/3.10.0-1160.15.2.el7.x86_64/vmlinux  vmcore 
  2.  
  3. crash 7.2.3-11.el7_9.1 
  4. Copyright (C) 2002-2017  Red Hat, Inc. 
  5. Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation 
  6. Copyright (C) 1999-2006  Hewlett-Packard Co 
  7. Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited 
  8. Copyright (C) 2006, 2007  VA Linux Systems Japan K.K. 
  9. Copyright (C) 2005, 2011  NEC Corporation 
  10. Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc. 
  11. Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc. 
  12. This program is free software, covered by the GNU General Public License, 
  13. and you are welcome to change it and/or distribute copies of it under 
  14. certain conditions.  Enter "help copying" to see the conditions. 
  15. This program has absolutely no warranty.  Enter "help warranty" for details. 
  16.  
  17. GNU gdb (GDB) 7.6 
  18. Copyright (C) 2013 Free Software Foundation, Inc. 
  19. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
  20. This is free software: you are free to change and redistribute it. 
  21. There is NO WARRANTY, to the extent permitted by law.  Type "show copying" 
  22. and "show warranty" for details. 
  23. This GDB was configured as "x86_64-unknown-linux-gnu"... 
  24.  
  25. WARNING: kernel relocated [274MB]: patching 87300 gdb minimal_symbol values 
  26.  
  27.       KERNEL: /usr/lib/debug/lib/modules/3.10.0-1160.15.2.el7.x86_64/vmlinux 
  28.     DUMPFILE: vmcore  [PARTIAL DUMP] 
  29.         CPUS: 8 
  30.         DATE: Thu Mar  4 10:12:38 2021 
  31.       UPTIME: 00:05:04 
  32. LOAD AVERAGE: 5.28, 3.20, 1.38 
  33.        TASKS: 256 
  34.     NODENAME: zf-dbslave001 
  35.      RELEASE: 3.10.0-1160.15.2.el7.x86_64 
  36.      VERSION: #1 SMP Wed Feb 3 15:06:38 UTC 2021 
  37.      MACHINE: x86_64  (2500 Mhz) 
  38.       MEMORY: 63 GB 
  39.        PANIC: "BUG: unable to handle kernel NULL pointer dereference at 0000000000000074" 
  40.          PID: 1362 
  41.      COMMAND: "AliYunDun" 
  42.         TASK: ffff90f972365280  [THREAD_INFO: ffff90f9767a4000] 
  43.          CPU: 5 
  44.        STATE: TASK_RUNNING (PANIC) 

 输出注释如下:

  • KERNEL:系统崩溃时运行的 kernel 文件
  • DUMPFILE: 内核转储文件
  • CPUS: 所在机器的 CPU 数量
  • DATE:系统崩溃的时间
  • TASKS:系统崩溃时内存中的任务数
  • NODENAME:崩溃的系统主机名
  • RELEASE: 和 VERSION:内核版本号
  • MACHINE:CPU 架构
  • MEMORY:崩溃主机的物理内存
  • PANIC:崩溃类型,常见的崩溃类型包括:
  • SysRq (System Request):通过魔法组合键导致的系统崩溃,通常是测试使用。通过 echo c > /proc/sysrq-trigger,就可以触发系统崩溃。
  • oops:可以看成是内核级的 Segmentation Fault。应用程序如果进行了非法内存访问或执行了非法指令,会得到 Segfault 信号,一般行为是 coredump,应用程序也可以自己截获 Segfault 信号,自行处理。如果内核自己犯了这样的错误,则会弹出 oops 信息。

从以上输出可以知道,本次系统崩溃的原因是:PANIC: "BUG: unable to handle kernel NULL pointer dereference at 0000000000000074",然后导致AliYunDun把系统重启了。

PS:搞不懂阿里云的破逻辑,服务器被黑了居然只会不断重启服务器?

2、使用bt 命令用于查看系统崩溃前的堆栈信息。

  1. crash> bt 
  2. PID: 1362   TASK: ffff90f972365280  CPU: 5   COMMAND: "AliYunDun" 
  3.  #0 [ffff90f9767a77a0] machine_kexec at ffffffff922662c4 
  4.  #1 [ffff90f9767a7800] __crash_kexec at ffffffff923227a2 
  5.  #2 [ffff90f9767a78d0] crash_kexec at ffffffff92322890 
  6.  #3 [ffff90f9767a78e8] oops_end at ffffffff9298c798 
  7.  #4 [ffff90f9767a7910] no_context at ffffffff92275d14 
  8.  #5 [ffff90f9767a7960] __bad_area_nosemaphore at ffffffff92275fe2 
  9.  #6 [ffff90f9767a79b0] bad_area_nosemaphore at ffffffff92276104 
  10.  #7 [ffff90f9767a79c0] __do_page_fault at ffffffff9298f750 
  11.  #8 [ffff90f9767a7a30] trace_do_page_fault at ffffffff9298fa26 
  12.  #9 [ffff90f9767a7a70] do_async_page_fault at ffffffff9298efa2 
  13. #10 [ffff90f9767a7a90] async_page_fault at ffffffff9298b7a8 
  14. #11 [ffff90f9767a7b98] kmem_cache_alloc_trace at ffffffff92428a0c 
  15. #12 [ffff90f9767a7c98] mntput at ffffffff92471d94 
  16. #13 [ffff90f9767a7d88] kvm_sched_clock_read at ffffffff9226d3be 
  17. #14 [ffff90f9767a7ec8] putname at ffffffff9245fd3d 
  18. #15 [ffff90f9767a7f50] system_call_fastpath at ffffffff92994f92 
  19.     RIP: 00007f84fd928315  RSP: 00007f84fb011af8  RFLAGS: 00000206 
  20.     RAX: 000000000000004e  RBX: 000000000244e010  RCX: ffffffffffffffff 
  21.     RDX: 0000000000008000  RSI: 000000000244e010  RDI: 0000000000000012 
  22.     RBP: 000000000244e010   R8: 0000000000000020   R9: 0000000000008030 
  23.     R10: 0000000000000076  R11: 0000000000000246  R12: ffffffffffffff30 
  24.     R13: 0000000000000000  R14: 000000000244dfe0  R15: 000000000000052a 
  25.     ORIG_RAX: 000000000000004e  CS: 0033  SS: 002b 

 3、log 命令可以打印系统消息缓冲区,从而可能找到系统崩溃的线索。输出太多,这里只截取部分信息。

  1. crash> log 
  2. [    0.000000] Initializing cgroup subsys cpuset 
  3. [    0.000000] Initializing cgroup subsys cpu 
  4. [    0.000000] Initializing cgroup subsys cpuacct 
  5. [    0.000000] Linux version 3.10.0-1160.15.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Feb 3 15:06:38 UTC 2021 
  6. [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.10.0-1160.15.2.el7.x86_64 root=UUID=1114fe9e-2309-4580-b183-d778e6d97397 ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8 idle=halt biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs 
  7. [    0.000000] e820: BIOS-provided physical RAM map: 
  8. [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable 
  9. [    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved 
  10. [    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved 
  11. [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000013ffffff] usable 
  12. [    0.000000] BIOS-e820: [mem 0x0000000014000000-0x000000001511ffff] reserved 
  13. [    0.000000] BIOS-e820: [mem 0x0000000015120000-0x00000000bffcdfff] usable 
  14. [    0.000000] BIOS-e820: [mem 0x00000000bffce000-0x00000000bfffffff] reserved 
  15. [    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved 
  16. [    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved 
  17. [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x0000000fffffffff] usable 
  18. [    0.000000] BIOS-e820: [mem 0x0000001000000000-0x000000103fffffff] reserved 
  19. [    0.000000] NX (Execute Disable) protection: active 
  20. [    0.000000] SMBIOS 2.8 present. 
  21. [    0.000000] DMI: Alibaba Cloud Alibaba Cloud ECS, BIOS e623647 04/01/2014 
  22. [    0.000000] Hypervisor detected: KVM 
  23. [    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved 
  24. [    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable 
  25. [    0.000000] e820: last_pfn = 0x1000000 max_arch_pfn = 0x400000000 
  26. [    0.000000] MTRR default type: write-back 
  27. [    0.000000] MTRR fixed ranges enabled: 
  28. [    0.000000]   00000-9FFFF write-back 
  29. [    0.000000]   A0000-BFFFF uncachable 
  30. [    0.000000]   C0000-FFFFF write-protect 
  31. [    0.000000] MTRR variable ranges enabled: 
  32. [    0.000000]   0 base 0000C0000000 mask 3FFFC0000000 uncachable 
  33. [    0.000000]   1 disabled 
  34. [    0.000000]   2 disabled 
  35. [    0.000000]   3 disabled 
  36. [    0.000000]   4 disabled 
  37. [    0.000000]   5 disabled 
  38. [    0.000000]   6 disabled 
  39. [    0.000000]   7 disabled 
  40. [    0.000000] PAT configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- UC   
  41. [    0.000000] e820: last_pfn = 0xbffce max_arch_pfn = 0x400000000 
  42. [    0.000000] found SMP MP-table at [mem 0x000f5a00-0x000f5a0f] mapped at [ffffffffff200a00] 
  43. [    0.000000] Base memory trampoline at [ffff90f800099000] 99000 size 24576 
  44. [    0.000000] Using GB pages for direct mapping 
  45. [    0.000000] BRK [0x70e74000, 0x70e74fff] PGTABLE 
  46. [    0.000000] BRK [0x70e75000, 0x70e75fff] PGTABLE 
  47. [    0.000000] BRK [0x70e76000, 0x70e76fff] PGTABLE 
  48. [    0.000000] BRK [0x70e77000, 0x70e77fff] PGTABLE 
  49. [    0.000000] BRK [0x70e78000, 0x70e78fff] PGTABLE 
  50. [    0.000000] RAMDISK: [mem 0x3625c000-0x37125fff] 
  51. [    0.000000] Early table checksum verification disabled 
  52. [    0.000000] ACPI: RSDP 00000000000f59b0 00014 (v00 BOCHS ) 
  53. [    0.000000] ACPI: RSDT 00000000bffe2185 00034 (v01 BOCHS  BXPCRSDT 00000001 BXPC 00000001) 
  54. [    0.000000] ACPI: FACP 00000000bffe093e 00074 (v01 BOCHS  BXPCFACP 00000001 BXPC 00000001) 
  55. [    0.000000] ACPI: DSDT 00000000bffdfd80 00BBE (v01 BOCHS  BXPCDSDT 00000001 BXPC 00000001) 
  56. [    0.000000] ACPI: FACS 00000000bffdfd40 00040 
  57. [    0.000000] ACPI: SSDT 00000000bffe09b2 015FB (v01 BOCHS  BXPCSSDT 00000001 BXPC 00000001) 
  58. [    0.000000] ACPI: APIC 00000000bffe1fad 000B0 (v01 BOCHS  BXPCAPIC 00000001 BXPC 00000001) 
  59. [    0.000000] ACPI: SRAT 00000000bffe205d 00128 (v01 BOCHS  BXPCSRAT 00000001 BXPC 00000001) 
  60.  
  61. [    4.722250] Adding 33554428k swap on /data/swapfile.  Priority:-2 extents:24 across:35823612k FS 
  62. [    5.841211] input: QEMU QEMU USB Tablet as /devices/pci0000:00/0000:00:01.2/usb1/1-1/1-1:1.0/input/input5 
  63. [    5.841325] hid-generic 0003:0627:0001.0001: input,hidraw0: USB HID v0.01 Pointer [QEMU QEMU USB Tablet] on usb-0000:00:01.2-1/input0 
  64. [   13.615575] mzoneinfo: loading out-of-tree module taints kernel. 
  65. [   13.615611] mzoneinfo: module verification failed: signature and/or required key missing - tainting kernel 
  66. [  305.100071] BUG: unable to handle kernel NULL pointer dereference at 0000000000000074 
  67. [  305.101048] IP: [<ffffffffc02d74c0>] 0xffffffffc02d74c0 
  68. [  305.101653] PGD 800000010d7ed067 PUD 176f9c067 PMD 0 
  69. [  305.102276] Oops: 0000 [#1] SMP 
  70. [  305.102675] Modules linked in: tcp_diag inet_diag cirrus ttm nfit drm_kms_helper libnvdimm syscopyarea ppdev sysfillrect intel_powerclamp sysimgblt fb_sys_fops drm iosf_mbi parport_pc crc32_pclmul virtio_balloon parport ghash_clmulni_intel aesni_intel lrw gf128mul drm_panel_orientation_quirks glue_helper pcspkr i2c_piix4 joydev ablk_helper cryptd ip_tables ext4 mbcache jbd2 ata_generic pata_acpi virtio_net virtio_console net_failover virtio_blk failover ata_piix libata crct10dif_pclmul crct10dif_common crc32c_intel virtio_pci virtio_ring floppy serio_raw virtio 
  71. [  305.109021] CPU: 5 PID: 1362 Comm: AliYunDun Kdump: loaded Tainted: G           OE  ------------   3.10.0-1160.15.2.el7.x86_64 #1 
  72. [  305.110306] Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS e623647 04/01/2014 
  73. [  305.111150] task: ffff90f972365280 ti: ffff90f9767a4000 task.ti: ffff90f9767a4000 
  74. [  305.111977] RIP: 0010:[<ffffffffc02d74c0>]  [<ffffffffc02d74c0>] 0xffffffffc02d74c0 
  75. [  305.112843] RSP: 0018:ffff90f9767a7b48  EFLAGS: 00010283 
  76. [  305.113437] RAX: fffffffffffffbd0 RBX: 0000000000000240 RCX: 00000000000007cd 
  77. [  305.114228] RDX: 0000000000000000 RSI: ffff90f972365280 RDI: 00000000ffffffff 
  78. [  305.115014] RBP: ffff90f9767a7b88 R08: 0000000040000000 R09: 0000000000000400 
  79. [  305.115804] R10: 0000000000000000 R11: ffffd9d105c1ea00 R12: 0000000000000240 
  80. [  305.116586] R13: 0000000000000258 R14: 0000000000000018 R15: ffff90f9707aa000 
  81. [  305.117377] FS:  00007f84fb012700(0000) GS:ffff9107ffd40000(0000) knlGS:0000000000000000 
  82. [  305.118276] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033 
  83. [  305.118921] CR2: 0000000000000074 CR3: 000000017839e000 CR4: 00000000003606e0 
  84. [  305.119710] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 
  85. [  305.120502] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 
  86. [  305.121291] Call Trace: 
  87. [  305.121581]  [<ffffffff92428a0c>] ? kmem_cache_alloc_trace+0x3c/0x200 
  88. [  305.122304]  [<ffffffff9242832e>] ? __kmalloc+0x2e/0x230 
  89. [  305.122898]  [<ffffffff92471d94>] ? mntput+0x24/0x40 
  90. [  305.123458]  [<ffffffff9226d3be>] ? kvm_sched_clock_read+0x1e/0x30 
  91. [  305.124162]  [<ffffffff9245fd3d>] ? putname+0x3d/0x60 
  92. [  305.124733]  [<ffffffff92994f92>] ? system_call_fastpath+0x25/0x2a 
  93. [  305.125417] Code: 65 48 8b 34 25 c0 0e 01 00 48 8b 96 30 04 00 00 48 8d 82 d0 fb ff ff 48 39 c6 74 2c 3b 7a 74 74 2a b9 d0 07 00 00 eb 0d 0f 1f 00 <3b> 7a 74 74 1b 83 e9 01 74 13 48 8b 90 30 04 00 00 48 8d 82 d0  
  94. [  305.128647] RIP  [<ffffffffc02d74c0>] 0xffffffffc02d74c0 
  95. [  305.129263]  RSP <ffff90f9767a7b48> 
  96. [  305.129660] CR2: 0000000000000074 

 4、ps 命令用于显示进程的状态,带 > 标识代表是活跃的进程。

  1. crash> ps 
  2.    PID    PPID  CPU       TASK        ST  %MEM     VSZ    RSS  COMM 
  3.       0      0   0  ffffffff92e18480  RU   0.0       0      0  [swapper/0] 
  4. >     0      0   1  ffff90f964f74200  RU   0.0       0      0  [swapper/1] 
  5.       0      0   2  ffff90f964f75280  RU   0.0       0      0  [swapper/2] 
  6. >     0      0   3  ffff90f964f76300  RU   0.0       0      0  [swapper/3] 
  7.       0      0   4  ffff90f965760000  RU   0.0       0      0  [swapper/4] 
  8.       0      0   5  ffff90f965761080  RU   0.0       0      0  [swapper/5] 
  9.       0      0   6  ffff90f965762100  RU   0.0       0      0  [swapper/6] 
  10. >     0      0   7  ffff90f965763180  RU   0.0       0      0  [swapper/7] 
  11.       1      0   3  ffff90f964b60000  IN   0.0   43460   3816  systemd 
  12. 这里忽略部分信息...... 
  13.    1045      1   6  ffff90f91038c200  IN   0.0  110208    880  agetty 
  14.    1144      1   3  ffff90f966f6a100  IN   0.0   32544   4304  AliYunDunUpdate 
  15.    1145      1   3  ffff90f90b3a3180  IN   0.0   32544   4304  AliYunDunUpdate 
  16.    1146      1   1  ffff90f90b3a2100  IN   0.0   32544   4304  AliYunDunUpdate 
  17.    1161      1   7  ffff90f978bcb180  IN   0.0   32544   4304  AliYunDunUpdate 
  18.    1165      1   1  ffff90f910389080  IN   0.0  802872  11300  aliyun-service 
  19.    1166      1   3  ffff90f978bcc200  IN   0.0  802872  11300  aliyun-service 
  20.    1170      1   5  ffff90f978bc8000  IN   0.0  802872  11300  aliyun-service 
  21.    1180      1   3  ffff90f90c3f2100  IN   0.0  802872  11300  aliyun-service 
  22.    1188      1   5  ffff90f91038d280  IN   0.0    4936   2556  matchpathcond 
  23.    1191      1   5  ffff90f91038b180  IN   0.0     328    208  postcated 
  24.    1193      1   7  ffff90f977398000  IN   0.0    3304    184  telinited 
  25.    1194   1193   5  ffff90f910388000  IN   0.0    3436   1244  telinited 
  26.    1206      1   0  ffff90f966f68000  IN   0.0    5088   1676  devlinked 
  27.    1209      1   1  ffff90f970b40000  IN   0.0     172     40  logrotated 
  28.    1313      1   1  ffff90f90f7d4200  IN   0.0  574284  17500  gmain 
  29.    1314      1   7  ffff90f90f7d2100  IN   0.0  574284  17500  tuned 
  30.    1322      1   5  ffff90f9783b8000  IN   0.0  139536  22220  AliYunDun 
  31.    1323      1   1  ffff90f9533eb180  IN   0.0  139536  22220  AliYunDun 
  32.    1324      1   5  ffff90f9533ed280  IN   0.0  139536  22220  AliYunDun 
  33.    1345      1   3  ffff90f91279d280  IN   0.0  574284  17500  tuned 
  34.    1346      1   5  ffff90f91279e300  IN   0.0  574284  17500  tuned 
  35.    1347      1   5  ffff90f90eb84200  IN   0.0  718240   7536  rs:main Q:Reg 
  36.    1349      1   1  ffff90f91279b180  IN   0.0  139536  22220  AliYunDun 
  37.    1350      1   1  ffff90f91279c200  IN   0.0  139536  22220  AliYunDun 
  38.    1351      1   1  ffff90f90b3a5280  IN   0.0  139536  22220  AliYunDun 
  39.    1352      1   4  ffff90f90b3a1080  IN   0.0  139536  22220  AliYunDun 
  40.    1353      1   5  ffff90f90b3a6300  IN   0.0  139536  22220  AliYunDun 
  41.    1354      1   5  ffff90f90b3a4200  IN   0.0  139536  22220  AliYunDun 
  42.    1355      1   1  ffff90f90b3a0000  IN   0.0  139536  22220  AliYunDun 
  43.    1357      1   7  ffff90f90b780000  IN   0.0  139536  22220  AliYunDun 
  44.    1358      1   5  ffff90f90b781080  IN   0.0  139536  22220  AliYunDun 
  45.    1359      1   3  ffff90f972361080  IN   0.0  139536  22220  AliYunDun 
  46.    1360      1   3  ffff90f972364200  IN   0.0  139536  22220  AliYunDun 
  47.    1361      1   7  ffff90f972366300  IN   0.0  139536  22220  AliYunDun 
  48. >  1362      1   5  ffff90f972365280  RU   0.0  139536  22220  AliYunDun 
  49.    1363      1   5  ffff90f97b76d280  IN   0.0  139536  22220  AliYunDun 
  50.    1401      1   3  ffff90f97638d280  IN   0.0  139536  22220  AliYunDun 
  51.    1402      1   1  ffff90f97638e300  IN   0.0  139536  22220  AliYunDun 
  52.    1403      1   7  ffff90f97638b180  IN   0.0  139536  22220  AliYunDun 
  53.    1404      1   7  ffff90f97b76b180  IN   0.0  139536  22220  AliYunDun 
  54.    1405      1   5  ffff90f97b76c200  IN   0.0  139536  22220  AliYunDun 
  55.    1406      1   5  ffff90f97b76e300  IN   0.0  139536  22220  AliYunDun 
  56.    1483      1   5  ffff90f970b45280  IN   0.0  112936   4344  sshd 
  57.    1570   1483   7  ffff90f90e386300  IN   0.0  157640   6308  sshd 
  58.    2036      1   1  ffff90f975791080  IN   0.0  802872  11300  aliyun-service 
  59.    2060   1570   1  ffff90f90c3f4200  IN   0.0  157640   2508  sshd 
  60.    2066   2060   1  ffff90f90cf8d280  IN   0.0  115548   2084  bash 
  61.    2963      1   5  ffff90f9767d3180  IN   0.0     328    264  postcated 
  62.    2973      1   2  ffff90f9767cb180  IN   0.0    5084   1672  devlinked 
  63.    2977      1   7  ffff90f9767d1080  IN   0.0     172     44  logrotated 
  64.    3923   2066   7  ffff90f9783be300  IN   0.0  241360   4640  sudo 
  65.    3924   3923   5  ffff90f975be0000  IN   0.0  191872   2360  su 
  66.    3925   3924   1  ffff90f90eb86300  IN   0.0  115680   2160  bash 
  67.    4507      1   1  ffff90f90c3f0000  IN   0.0   17816   2096  assist_daemon 
  68.    4508      1   7  ffff90f90c3f3180  IN   0.0   17816   2096  Timer thread 
  69.    4509      1   1  ffff90f90c3f6300  IN   0.0   17816   2096  assist_daemon 
  70.    4510      1   1  ffff90f90c3f1080  IN   0.0   17816   2096  Timer thread 
  71.    5820      1   7  ffff90f90eb83180  IN   0.0     328    208  postcated 
  72.    5824      1   4  ffff90f9767cc200  IN   0.0    5084   1672  devlinked 
  73.    5828      1   3  ffff90f975b83180  IN   0.0     172     40  logrotated 
  74.    9989      1   5  ffff90f90df95280  IN   0.0     328    204  postcated 
  75.    9993      1   6  ffff90f9767b4200  IN   0.0    5088   1676  devlinked 
  76.    9997      1   3  ffff90f967b7e300  IN   0.0     172     40  logrotated 
  77.   15502      1   2  ffff90f966f6b180  IN   0.0     328    208  postcated 
  78.   15528      1   4  ffff90f9533ee300  IN   0.0    5084   1668  devlinked 
  79.   15532      1   1  ffff90f9533e8000  IN   0.0     172     40  logrotated 
  80.   22388      1   3  ffff90f90f7c5280  IN   0.0     328    208  postcated 
  81.   22392      1   4  ffff90f975be3180  IN   0.0    5088   1676  devlinked 
  82.   22396      1   5  ffff90f977399080  IN   0.0     172     40  logrotated 
  83.   30647      1   5  ffff90f9767b6300  IN   0.0     328    208  postcated 
  84.   30651      1   6  ffff90f975b81080  IN   0.0    5092   1676  devlinked 
  85.   30655      1   5  ffff90f975b85280  IN   0.0     172     40  logrotated 
  86.   30779      1   3  ffff90f9757b8000  IN   0.0 2442608   3784  mountinfo 
  87.   30780      1   2  ffff90f975b86300  IN   0.0 2442608   3784  mountinfo 
  88.   30781      1   4  ffff90f975b82100  IN   0.0 2442608   3784  mountinfo 
  89.   30783      1   7  ffff90f975b84200  IN   0.0 2442608   3784  mountinfo 
  90.   30784      1   1  ffff90f90ebc1080  IN   0.0 2442608   3784  mountinfo 
  91.   30785      1   1  ffff90f8bb941080  IN   0.0 2442608   3784  mountinfo 
  92. > 31745      1   0  ffff90f90f7d3180  RU   0.0 2442608   3784  mountinfo 
  93. > 31746      1   2  ffff90f90f7d6300  RU   0.0 2442608   3784  mountinfo 
  94. > 31747      1   4  ffff90f90f7d0000  RU   0.0 2442608   3784  mountinfo 
  95. > 31748      1   6  ffff90f97b76a100  RU   0.0 2442608   3784  mountinfo 

 从输出看出,mountinfo明显是异常进程,是导致本次系统重启的罪魁祸首

5、这里再次bt 命令来看一下堆栈

  1. crash> bt 
  2. PID: 1362   TASK: ffff90f972365280  CPU: 5   COMMAND: "AliYunDun" 
  3.  #0 [ffff90f9767a77a0] machine_kexec at ffffffff922662c4 
  4.  #1 [ffff90f9767a7800] __crash_kexec at ffffffff923227a2 
  5.  #2 [ffff90f9767a78d0] crash_kexec at ffffffff92322890 
  6.  #3 [ffff90f9767a78e8] oops_end at ffffffff9298c798 
  7.  #4 [ffff90f9767a7910] no_context at ffffffff92275d14 
  8.  #5 [ffff90f9767a7960] __bad_area_nosemaphore at ffffffff92275fe2 
  9.  #6 [ffff90f9767a79b0] bad_area_nosemaphore at ffffffff92276104 
  10.  #7 [ffff90f9767a79c0] __do_page_fault at ffffffff9298f750 
  11.  #8 [ffff90f9767a7a30] trace_do_page_fault at ffffffff9298fa26 
  12.  #9 [ffff90f9767a7a70] do_async_page_fault at ffffffff9298efa2 
  13. #10 [ffff90f9767a7a90] async_page_fault at ffffffff9298b7a8 
  14. #11 [ffff90f9767a7b98] kmem_cache_alloc_trace at ffffffff92428a0c 
  15. #12 [ffff90f9767a7c98] mntput at ffffffff92471d94 
  16. #13 [ffff90f9767a7d88] kvm_sched_clock_read at ffffffff9226d3be 
  17. #14 [ffff90f9767a7ec8] putname at ffffffff9245fd3d 
  18. #15 [ffff90f9767a7f50] system_call_fastpath at ffffffff92994f92 
  19.     RIP: 00007f84fd928315  RSP: 00007f84fb011af8  RFLAGS: 00000206 
  20.     RAX: 000000000000004e  RBX: 000000000244e010  RCX: ffffffffffffffff 
  21.     RDX: 0000000000008000  RSI: 000000000244e010  RDI: 0000000000000012 
  22.     RBP: 000000000244e010   R8: 0000000000000020   R9: 0000000000008030 
  23.     R10: 0000000000000076  R11: 0000000000000246  R12: ffffffffffffff30 
  24.     R13: 0000000000000000  R14: 000000000244dfe0  R15: 000000000000052a 
  25.     ORIG_RAX: 000000000000004e  CS: 0033  SS: 002b 

 我们看到系统崩溃前的最后一个调用是“#15 [ffff90f9767a7f50] system_call_fastpath at ffffffff92994f92”,现在用 dis 命令来看一下该地址的反汇编结果

6、dis 反编译

  1. crash> dis -l ffffffff92994f92 
  2. /usr/src/debug/kernel-3.10.0-1160.15.2.el7/linux-3.10.0-1160.15.2.el7.x86_64/arch/x86/kernel/entry_64.S: 511 
  3. 0xffffffff92994f92 <system_call_fastpath+37>:   mov    %rax,0x50(%rsp) 

 7、查看源码

从上面的反汇编结果中,我们看到问题出在entry_64.S: 第511行代码,翻开源码的相应位置,如下;

  1. 492 system_call_fastpath: 
  2.  493 #if __SYSCALL_MASK == ~0 
  3.  494         cmpq $__NR_syscall_max+1,%rax 
  4.  495 #else 
  5.  496         andl $__SYSCALL_MASK,%eax 
  6.  497         cmpl $__NR_syscall_max+1,%eax 
  7.  498 #endif 
  8.  499         jae badsys 
  9.  500         ARRAY_INDEX_NOSPEC_SYSCALL clobber_reg=%rcx 
  10.  501         movq %r10,%rcx 
  11.  502  
  12.  503 #ifdef CONFIG_RETPOLINE 
  13.  504         movq sys_call_table(, %rax, 8), %rax 
  14.  505         call __x86_indirect_thunk_rax 
  15.  506 #else 
  16.  507         call *sys_call_table(, %rax, 8)  # XXX:  rip relative 
  17.  508 #endif 
  18.  509  
  19.  510         UNWIND_END_OF_STACK 
  20.  511         movq %rax,RAX(%rsp) 
  21.  512 /* 

 【编辑推荐】

 

责任编辑:姜华 来源: 今日头条
相关推荐

2017-08-02 14:37:31

LinuxKdump内核崩溃

2023-04-26 12:48:58

.NET程序类型

2024-03-28 12:56:36

2021-11-23 21:21:07

线上排查服务

2023-06-26 00:12:46

2021-03-29 12:35:04

Kubernetes环境TCP

2022-10-25 14:17:01

.NET代码程序

2023-06-29 17:55:00

.NET日志WinDbg

2023-03-26 20:24:50

ERP网站系统

2024-03-26 00:44:53

.NETCIM系统

2012-10-29 11:25:05

IBMdw

2019-08-26 09:50:09

2014-07-29 15:44:33

Linux内核Crash

2021-11-11 16:14:04

Kubernetes

2019-08-01 15:05:22

2022-01-07 11:48:59

RabbitMQGolang 项目

2017-07-07 16:07:41

2014-08-11 09:31:52

2023-04-06 07:53:56

Redis连接问题K8s

2013-04-01 10:27:37

程序员失业
点赞
收藏

51CTO技术栈公众号