Xác định nguyên nhân gây hoảng loạn nhân Linux


25

Tôi đang chạy một dẫn xuất Ubuntu 12.04 (amd64) và tôi đã gặp vấn đề thực sự kỳ lạ gần đây. Dường như hết màu xanh, X sẽ đóng băng hoàn toàn trong một thời gian (1-3 phút?) Và sau đó hệ thống sẽ khởi động lại. Hệ thống này được ép xung, nhưng rất ổn định như được xác minh trong Windows, điều này khiến tôi tin rằng tôi đang gặp phải sự hoảng loạn hạt nhân hoặc sự cố với một trong các mô-đun của mình. Ngay cả trong Linux, tôi có thể chạy LINPACK và sẽ không gặp sự cố mặc dù đã tải quá nhiều vào CPU. Sự cố dường như xảy ra vào những thời điểm ngẫu nhiên, ngay cả khi máy đang ngồi không.

Làm thế nào tôi có thể gỡ lỗi những gì làm hỏng hệ thống?

Theo linh cảm rằng đó có thể là trình điều khiển NVIDIA độc quyền, tôi đã chuyển hoàn toàn xuống phiên bản trình điều khiển ổn định, phiên bản 304 và tôi vẫn gặp sự cố.

Bất cứ ai có thể hướng dẫn tôi qua một quy trình sửa lỗi tốt sau khi gặp sự cố? Tôi rất vui khi được khởi động vào ổ đĩa ngón tay cái và đăng tất cả các tệp cấu hình sau sự cố của mình, tôi chỉ không chắc chúng sẽ là gì. Làm thế nào tôi có thể tìm ra những gì làm hỏng hệ thống của tôi?

Dưới đây là một loạt các bản ghi, thủ phạm thông thường.

.xsession-lỗi : http://pastebin.com/EEDtVkVm

/var/log/Xorg.0.log : http://pastebin.com/raftG5VAn

/var/log/kern.log : http://pastebin.com/Hsy7jcHZ

/ var / log / syslog : http://pastebin.com/9Fkp3FMz

Tôi thậm chí dường như không thể tìm thấy một kỷ lục về vụ tai nạn.

Kích hoạt sự cố không đơn giản như vậy, nó dường như xảy ra khi GPU đang cố gắng vẽ nhiều thứ cùng một lúc. Nếu tôi đưa video YouTube lên toàn màn hình và để video đó lặp lại một lúc hoặc cuộn qua hàng tấn GIF và thông báo Skype bật lên, đôi khi nó sẽ bị sập. Hoàn toàn gãi đầu trên cái này.

CPU được ép xung lên 4,8 GHz, nhưng nó hoàn toàn ổn định và đã sống sót sau các lần chạy LINPACK khổng lồ và 9 giờ của Prime95 ngày hôm qua mà không gặp sự cố.

Cập nhật

Tôi đã cài đặt kdump, crashlinux-crashdump, cũng như các ký hiệu gỡ lỗi kernel cho phiên bản kernel 3.2.0-35 của tôi. Khi tôi chạy apport-unpacktrên tệp kernel bị lỗi và sau đó crashtrên VmCorebãi chứa sự cố, đây là những gì tôi thấy:

      KERNEL: /usr/lib/debug/boot/vmlinux-3.2.0-35-generic
    DUMPFILE: Downloads/crash/VmCore
        CPUS: 8
        DATE: Thu Jan 10 16:05:55 2013
      UPTIME: 00:26:04
LOAD AVERAGE: 2.20, 0.84, 0.49
       TASKS: 614
    NODENAME: mightymoose
     RELEASE: 3.2.0-35-generic
     VERSION: #55-Ubuntu SMP Wed Dec 5 17:42:16 UTC 2012
     MACHINE: x86_64  (3499 Mhz)
      MEMORY: 8 GB
       PANIC: "[ 1561.519960] Kernel panic - not syncing: Fatal Machine check"
         PID: 0
     COMMAND: "swapper/5"
        TASK: ffff880211251700  (1 of 8)  [THREAD_INFO: ffff880211260000]
         CPU: 5
       STATE: TASK_RUNNING (PANIC)

Khi tôi chạy logtừ crashtiện ích, tôi thấy điều này ở dưới cùng của nhật ký:

[ 1561.519943] [Hardware Error]: CPU 4: Machine Check Exception: 5 Bank 3: be00000000800400
[ 1561.519946] [Hardware Error]: RIP !INEXACT! 33:<00007fe99ae93e54> 
[ 1561.519948] [Hardware Error]: TSC 539b174dead ADDR 3fe98d264ebd MISC 1 
[ 1561.519950] [Hardware Error]: PROCESSOR 0:206a7 TIME 1357862746 SOCKET 0 APIC 1 microcode 28
[ 1561.519951] [Hardware Error]: Run the above through 'mcelog --ascii'
[ 1561.519953] [Hardware Error]: CPU 0: Machine Check Exception: 4 Bank 3: be00000000800400
[ 1561.519955] [Hardware Error]: TSC 539b174de9d ADDR 3fe98d264ebd MISC 1 
[ 1561.519957] [Hardware Error]: PROCESSOR 0:206a7 TIME 1357862746 SOCKET 0 APIC 0 microcode 28
[ 1561.519958] [Hardware Error]: Run the above through 'mcelog --ascii'
[ 1561.519959] [Hardware Error]: Machine check: Processor context corrupt
[ 1561.519960] Kernel panic - not syncing: Fatal Machine check
[ 1561.519962] Pid: 0, comm: swapper/5 Tainted: P   M     C O 3.2.0-35-generic #55-Ubuntu
[ 1561.519963] Call Trace:
[ 1561.519964]  <#MC>  [<ffffffff81644340>] panic+0x91/0x1a4
[ 1561.519971]  [<ffffffff8102abeb>] mce_panic.part.14+0x18b/0x1c0
[ 1561.519973]  [<ffffffff8102ac80>] mce_panic+0x60/0xb0
[ 1561.519975]  [<ffffffff8102aec4>] mce_reign+0x1f4/0x200
[ 1561.519977]  [<ffffffff8102b175>] mce_end+0xf5/0x100
[ 1561.519979]  [<ffffffff8102b92c>] do_machine_check+0x3fc/0x600
[ 1561.519982]  [<ffffffff8136d48f>] ? intel_idle+0xbf/0x150
[ 1561.519984]  [<ffffffff8165d78c>] machine_check+0x1c/0x30
[ 1561.519986]  [<ffffffff8136d48f>] ? intel_idle+0xbf/0x150
[ 1561.519987]  <<EOE>>  [<ffffffff81509697>] ? menu_select+0xe7/0x2c0
[ 1561.519991]  [<ffffffff815082d1>] cpuidle_idle_call+0xc1/0x280
[ 1561.519994]  [<ffffffff8101322a>] cpu_idle+0xca/0x120
[ 1561.519996]  [<ffffffff8163aa9a>] start_secondary+0xd9/0xdb

bt xuất ra backtrace:

PID: 0      TASK: ffff880211251700  CPU: 5   COMMAND: "swapper/5"
 #0 [ffff88021ed4aba0] machine_kexec at ffffffff8103947a
 #1 [ffff88021ed4ac10] crash_kexec at ffffffff810b52c8
 #2 [ffff88021ed4ace0] panic at ffffffff81644347
 #3 [ffff88021ed4ad60] mce_panic.part.14 at ffffffff8102abeb
 #4 [ffff88021ed4adb0] mce_panic at ffffffff8102ac80
 #5 [ffff88021ed4ade0] mce_reign at ffffffff8102aec4
 #6 [ffff88021ed4ae40] mce_end at ffffffff8102b175
 #7 [ffff88021ed4ae70] do_machine_check at ffffffff8102b92c
 #8 [ffff88021ed4af50] machine_check at ffffffff8165d78c
    [exception RIP: intel_idle+191]
    RIP: ffffffff8136d48f  RSP: ffff880211261e38  RFLAGS: 00000046
    RAX: 0000000000000020  RBX: 0000000000000008  RCX: 0000000000000001
    RDX: 0000000000000000  RSI: ffff880211261fd8  RDI: ffffffff81c12f00
    RBP: ffff880211261e98   R8: 00000000fffffffc   R9: 0000000000000f9f
    R10: 0000000000001e95  R11: 0000000000000000  R12: 0000000000000003
    R13: ffff88021ed5ac70  R14: 0000000000000020  R15: 12d818fb42cfe42b
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
--- <MCE exception stack> ---
 #9 [ffff880211261e38] intel_idle at ffffffff8136d48f
#10 [ffff880211261ea0] cpuidle_idle_call at ffffffff815082d1
#11 [ffff880211261f00] cpu_idle at ffffffff8101322a

Có ý kiến ​​gì không?


3
Bạn đang sử dụng trình điều khiển đồ họa nhị phân blob?
jordanm

Vâng, NVIDIA. Có nơi nào tôi có thể nhận được nhật ký cho điều đó?
Naftuli Kay

Có bất kỳ thông điệp hoảng loạn nào trong /var/log/kern.log hoặc syslog sau khi khởi động lại không? Bạn có thể đăng nhập từ một máy tính khác và tail -f /var/log/kern.logchạy và cố gắng bắt nó theo cách đó.
ott--

Không có gì hiện lên /var/log/kern.log, nhưng bây giờ nhìn vào syslog.
Naftuli Kay

Tôi đã hạ cấp trình điều khiển NVIDIA của mình xuống 304 ổn định, một trình điều khiển khá cũ và tôi vẫn thấy sự cố. Cập nhật OP với các chi tiết.
Naftuli Kay

Câu trả lời:


35

Tôi có hai gợi ý để bắt đầu.

Đầu tiên bạn sẽ không thích. Cho dù bạn nghĩ hệ thống ép xung của mình ổn định đến mức nào, đó sẽ là nghi ngờ đầu tiên của tôi. Và bất kỳ nhà phát triển nào bạn báo cáo vấn đề sẽ nói điều tương tự. Khối lượng công việc kiểm tra ổn định của bạn không nhất thiết phải sử dụng cùng một hướng dẫn, nhấn mạnh hệ thống con bộ nhớ càng nhiều, bất cứ điều gì. Dừng ép xung. Nếu bạn muốn mọi người tin rằng vấn đề không được ép xung, thì hãy khắc phục sự cố khi không ép xung để bạn có thể nhận được báo cáo lỗi rõ ràng. Điều này sẽ tạo ra một sự khác biệt lớn trong việc những người khác sẽ đầu tư bao nhiêu vào việc giải quyết vấn đề này. Có phần mềm không có lỗi là một điểm đáng tự hào, nhưng báo cáo từ những người có thiết lập phần cứng đặc biệt đáng nghi ngờ đang làm nản lòng thời gian mà có lẽ không liên quan đến lỗi thực sự.

Thứ hai là để có được dữ liệu rất tiếc, như bạn đã nhận thấy không đi đến bất kỳ địa điểm nào bạn đã đề cập. Nếu sự cố chỉ xảy ra trong khi chạy X11, tôi nghĩ rằng bảng điều khiển cục bộ đã bị hỏng khá nhiều (dù sao đó cũng là một vấn đề), vì vậy bạn cần thực hiện việc này trên bảng điều khiển nối tiếp, qua mạng hoặc bằng cách lưu vào đĩa cục bộ (khó hơn nó có thể phát ra âm thanh vì bạn không muốn một hạt nhân không đáng tin cậy làm hỏng hệ thống tập tin của bạn). Dưới đây là một số cách để làm điều này:

  • sử dụng netdump để lưu vào máy chủ qua mạng. Tôi đã không làm điều này trong nhiều năm, vì vậy tôi không chắc phần mềm này vẫn hoạt động và làm việc với các nhân hiện đại, nhưng nó đủ dễ để nó đáng để thử.
  • khởi động bằng bàn điều khiển nối tiếp ; bạn sẽ cần một cổng nối tiếp miễn phí trên cả hai máy (dù là bộ chuyển đổi nối tiếp cũ hay bộ chuyển đổi USB) và cáp modem null; bạn định cấu hình máy khác để lưu đầu ra.
  • kdump dường như là những gì mà những đứa trẻ tuyệt vời sử dụng ngày nay, và có vẻ khá linh hoạt, mặc dù đó không phải là sở thích của tôi bởi vì nó có vẻ phức tạp để thiết lập. Nói tóm lại, nó liên quan đến việc khởi động một kernel khác có thể làm bất cứ điều gì và kiểm tra nội dung bộ nhớ của kernel cũ, nhưng về cơ bản bạn phải xây dựng toàn bộ quá trình và tôi không thấy nhiều tùy chọn đóng hộp ngoài kia. Cập nhật: Có một số điều distro tốt đẹp, thực sự; trên Ubuntu, linux-crashdump

Khi bạn nhận được thông tin gỡ lỗi, có một công cụ gọi là ksymoops mà bạn có thể sử dụng để biến địa chỉ thành tên biểu tượng và bắt đầu biết được hạt nhân của bạn bị hỏng như thế nào. Và nếu kết xuất được ký hiệu hóa không có ý nghĩa gì với bạn, thì ít nhất đây là điều hữu ích để báo cáo ở đây hoặc có lẽ trên danh sách gửi thư / trình theo dõi lỗi của bản phân phối Linux của bạn.


Từ crashtrên crashdump của bạn, bạn có thể thử gõ logbtđể có thêm một chút thông tin (những thứ được ghi lại trong lúc hoảng loạn và một backtrace stack). Fatal Machine checkDường như của bạn đang đến từ đây , mặc dù. Từ việc đọc mã, bộ xử lý của bạn đã báo cáo Ngoại lệ kiểm tra máy - một sự cố phần cứng. Một lần nữa, đặt cược đầu tiên của tôi sẽ là do ép xung. Có vẻ như có một thông điệp cụ thể hơn trong logđầu ra có thể cho bạn biết nhiều hơn.

Cũng từ mã đó, có vẻ như nếu bạn khởi động với mce=3tham số kernel, nó sẽ ngừng sự cố ... nhưng tôi thực sự không khuyến nghị điều này trừ khi là bước chẩn đoán. Nếu nhân Linux nghĩ rằng lỗi này đáng để khắc phục, thì có lẽ đúng.


Nếu ép xung là vấn đề, tôi sẽ có thể thấy một chu kỳ đồng hồ bị bỏ lỡ trong nhật ký sự cố, vì vậy vào cuối ngày, tôi sẽ biết vấn đề là gì. Đó là mục tiêu của tôi: tìm ra điều gì sai. Nếu đó là ép xung của tôi, thì tốt thôi, tôi chỉ muốn biết vấn đề là gì .
Naftuli Kay

1
Tôi không nghĩ rằng việc ép xung không thành công rõ ràng như điều đó được phát hiện trong nhật ký; Tôi không phải là chuyên gia về bộ xử lý, nhưng nó không giống như toàn bộ bộ xử lý xử lý chính xác chu kỳ xung nhịp hoặc chỉ ra cho HĐH bằng cách nào đó rằng nó đã bỏ lỡ nó. Hãy cho tôi biết nếu bạn gặp khó khăn khi nhận nhật ký, nhưng IMHO là cách dễ nhất để biết liệu đó có phải là vấn đề ép xung hay không là xem có xảy ra khi không ép xung hay không.
Scott Lamb

Được rồi, tôi sẽ làm điều đó sau khi sao lưu các thiết lập của tôi. Trước tiên tôi có thể xem liệu tôi có thể tái tạo sự cố trong Windows không.
Naftuli Kay

Mặc dù tôi rất biết ơn vì chưa bao giờ gặp BSOD trong Linux, nhưng có vẻ lạ đối với tôi rằng trong khi Windows sẽ đăng nhập và hiển thị một vấn đề, thì Linux sẽ không thể.
Naftuli Kay

1
Tôi đã cập nhật câu hỏi, vì tôi có thể làm sập máy trong khi chạy linux-crashdumpvà lấy tệp kết xuất sự cố với hy vọng có đủ thông tin để xác định nguyên nhân.
Naftuli Kay

5

a) Kiểm tra xem các thông điệp kernel có được ghi vào một tệp bằng rsyslog daemon không

vi /etc/rsyslog.conf

Và thêm vào như sau

kern.*                 /var/log/kernel.log

Khởi động lại rsyslogdịch vụ.

/etc/initd.d/rsyslog restart

b) Ghi chú các mô-đun được tải

`lsmod >/your/home/dir`

c) Vì sự hoảng loạn không thể tái tạo, hãy đợi nó xảy ra

d) Một khi sự hoảng loạn đã xảy ra, hãy khởi động hệ thống bằng đĩa CD trực tiếp hoặc khẩn cấp

e) Gắn hệ thống tập tin (thường là / sẽ đủ nếu / var và / home không hệ thống tập tin riêng biệt) của hệ thống bị ảnh hưởng ( pvs, vgs, lvslệnh cần phải được chạy nếu bạn đang sử dụng LVM trên hệ thống bị ảnh hưởng để đưa lên LV) mount -t ext4 /dev/sdXN /mnt

f) Đi đến /mnt/var/log/thư mục và kiểm tra kernel.logtập tin. Điều này sẽ cung cấp cho bạn đủ thông tin để tìm hiểu xem sự hoảng loạn đang xảy ra đối với một mô-đun cụ thể hay điều gì khác.


Kết quả đăng nhập từ đó khá không thuyết phục: pastebin.com/VdYAHgiH
Naftuli Kay

2
Theo kinh nghiệm của tôi, sự cố kernel hiếm khi xảy ra kernel.log, vì thông tin nhật ký cần phải đi một chặng đường khá dài thông qua syslog, trình điều khiển hệ thống tập tin, bộ đệm đĩa và trình điều khiển đĩa. Cách đơn giản và thanh lịch nhất là sử dụng netconsolemô-đun hạt nhân.
dma_k

2

Bộ xử lý của bạn có được ép xung không? Tôi đã gặp vấn đề tương tự ngày hôm nay khi tôi chơi với hệ số nhân trong menu quá giờ trong BIOS của mình; số nhân khác nhau khoảng 20 lần sẽ khiến điều này xảy ra. Tôi đã giảm xuống còn 18,5 lần (3,7 GHz) và vấn đề đã biến mất; Tôi nghĩ rằng đó là một vấn đề bo mạch chủ / năng lượng.


2
Vâng, nó có mọi thứ để làm với việc ép xung. Rõ ràng, Windows dường như có khả năng chịu lỗi cao hơn một chút với các lỗi bộ xử lý nhất định, nếu CPU có thể tiếp tục hoạt động. Tôi có thể bắt đầu khởi động mce=3để tránh sự cố, nhưng trong quá khứ, tôi chỉ đơn giản là tăng điện áp mỗi lần nó bị hỏng (điều này không thường xuyên xảy ra). Một điều cần lưu ý là tôi đang sử dụng một điện áp bù, nói chung là không ổn định hơn.
Naftuli Kay

1

Chắc chắn là sự cố bộ xử lý, hãy chú ý các dòng có nội dung: TSC 539b174dead ADDR 3fe98d264ebd MISC 1 [1561.519950] [Lỗi phần cứng]: PROCESSOR 0: 206a7 TIME 1357862746 SOCKET 0 APIC 1 vi xử lý. (vấn đề trong các hệ thống đa cpu) và socket 0 là bộ xử lý vi phạm (mặc dù tôi giả sử bạn chỉ có 1). Nó là xấu hoặc như bạn lưu ý là ép xung gây ra lỗi. Tôi biết bạn nói rằng bạn đã sử dụng nó qua Prime95 nhưng vì tôi không có thêm thông tin về việc hệ thống của tôi đang sử dụng bao nhiêu ống hút, nên cách dán nhiệt của bạn và bạn đã kiểm tra để đảm bảo LGA của bạn (bên dưới CPU) có vẻ ổn? Tôi nghĩ rằng có thể uốn cong chân hoặc một số dán dưới LGA. Một lần nữa chỉ cần root ở đây.

Nếu điều đó không khắc phục được sự cố, có một mẹo nhỏ bạn có thể làm để sử dụng SMBIOS của mình để tìm nơi hoảng loạn tấn công chính xác, một dòng khác (TSC 539b174de9d ADDR 3fe98d264ebd MISC 1) về cơ bản là dữ liệu SMBIOS có thể hiển thị nơi xảy ra sự cố. Khi máy của bạn hoạt động, trong dòng lệnh chạy, hãy lặp lại "TSC 539b174de9d ADDR 3fe98d264ebd MISC 1" | sudo mcelog --ascii --dmi để nhận đầu ra, điều này sẽ cho bạn biết đó là lỗi phần cứng và ngay cả DIMM mà nó đang xử lý, điều này có thể chỉ ra một đường dẫn DIMM hoặc bus bị lỗi, nếu lỗi DIMM nhảy xung quanh với mọi sự cố tuy nhiên, điều này chỉ ra CPU.


0

Chúng tôi đã có một bộ định tuyến mikrotik được cài đặt trên một giàn khoan cũ. Quạt ngừng quay và khiến bộ xử lý nóng lên. Các bộ định tuyến sau đó bắt đầu Kernel Panic mọi lúc. Sau khi thay đổi quạt CPU, mọi thứ đều ổn.

Vì bạn đang ép xung máy của bạn, nó có thể là một nguyên nhân có thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.