Linux核心死鎖檢測

2021-09-12 21:51:19 字數 1725 閱讀 1020

其核心思想為建立乙個核心監測程序迴圈監測處於d狀態的每乙個程序(任務)。

核心配置:config_detect_hung_task

kernel hacking  --->

[*] detect hung tasks

(120) default timeout for hung task detection (in seconds) (new)

[ ] panic (reboot) on hung tasks (new)

程序進入d狀態時間超過120秒後列印

info: task sync:16015 blocked for more than 120 seconds.

"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.

sync d c0512378 0 16015 1807 0x00000000

(__schedule+0x1d0/0x414) from (io_schedule+0x64/0x8c)

(io_schedule+0x64/0x8c) from (sleep_on_page+0x8/0x10)

(sleep_on_page+0x8/0x10) from (__wait_on_bit+0x78/0xb0)

(__wait_on_bit+0x78/0xb0) from (wait_on_page_bit+0xb4/0xbc)

(wait_on_page_bit+0xb4/0xbc) from (filemap_fdatawait_range+0xd4/0x130)

(filemap_fdatawait_range+0xd4/0x130) from (filemap_fdatawait+0x38/0x40)

(filemap_fdatawait+0x38/0x40) from (sync_inodes_sb+0x108/0x13c)

(sync_inodes_sb+0x108/0x13c) from (iterate_supers+0xa4/0xec)

(iterate_supers+0xa4/0xec) from (sys_sync+0x34/0x9c)

(sys_sync+0x34/0x9c) from (ret_fast_syscall+0x0/0x30)

關閉列印:echo 0 > /proc/sys/kernel/hung_task_timeout_secs

也可手動檢測,top或者ps檢視程序狀態,然後使用命令cat /proc/pid/status檢視狀態:state:    d (disk sleep),檢視堆疊資訊:cat /proc/pid/stack

kernel hacking  ---> 

-*- kernel debugging

[*] detect hard and soft lockups

[ ] panic (reboot) on soft lockups

config_lockup_detector=y

暫沒有復現出r狀態的卡住狀態情況。

config_debug_spinlock=y 檢測spinlock的未初始化使用等問題。配合nmi watchdog使用,能發現spinlock死鎖。

config_debug_mutexes=y 檢測並報告mutex錯誤

linux死鎖檢測與除錯

死鎖是指多個程序 執行緒 因為長久等待已被其他程序占有的的資源而陷入阻塞的一種狀態。當等待的資源一直得不到釋放,死鎖會一直持續下去。死鎖一旦發生,程式本身是解決不了的,只能依靠外部力量使得程式恢復執行,例如重啟,開門狗復位等。linux 提供了檢測死鎖的機制,主要分為 d 狀態死鎖和 r 狀態死鎖。...

死鎖檢測演算法

一 實驗目的 3 二 實驗內容 3 1 資料輸入 3 2 處理要求 3 三 實現思路 4 死鎖檢測機制 4 四 主要的資料結構 4 標頭檔案與巨集定義 4 程序結構體定義 4 初始化函式 4 讀入資料檔案 4 輸出所讀入的資料 4 檢測 5 顯示資訊函式 5 主函式 5 五 演算法流程圖 5 六 執...

如何檢測Linux核心的Rootkit

最近一段時間搞了些rootkit攻略,每個方法都比較徹底,無論是隱藏程序,還是隱藏cpu利用率,隱藏tcp連線,隱藏檔案,甚至隱藏cpu風扇的狂轉,均採用了相對底層的方案,一般的rootkit檢測很難檢測到。所謂的一般的rootkit就是那些通常的hook,比方說hook系統呼叫,hook proc...