程序死鎖不響應訊號

2021-09-25 07:45:41 字數 1264 閱讀 4024

程序死鎖不響應訊號

問題現象

線上發現乙個程序的某個埠沒有監聽,程序很久沒有重啟了。

排查過程

線上程序會每日重啟,傳送重啟訊號有漏掉該程序?

使用strace 命令跟蹤重啟命令,發現命令有kill 重啟訊號至該程序,只是該程序沒有響應該訊號

檢視程序 statuscat /proc/pid/status

程序沒有處於不可中斷睡眠狀態 d,

檢視程序 stackcat /proc/pid/stack 處於futex_wait 狀態

程序 訊號掩碼集也正常

kill -15 該程序也沒有響應,直接使用gdb -p 該程序, 發現產生了程序死鎖,在訊號處理函式裡面呼叫了thread_unsafe 函式 有可能死鎖 也有可能coredump

#0  0x00007f19d72c4eec in __lll_lock_wait_private () from /lib64/libc.so.6

#1 0x00007f19d724205d in _l_lock_14730 () from /lib64/libc.so.6

#2 0x00007f19d723f163 in malloc () from /lib64/libc.so.6

#3 0x00007f19d724594a in strdup () from /lib64/libc.so.6

#4 0x00007f19d726ec51 in tzset_internal () from /lib64/libc.so.6

#5 0x00007f19d726f613 in __tz_convert () from /lib64/libc.so.6

#6 0x000000000043b3b8 in _db_print ()

#7 0x0000000000493dfa in *** ()

#8 0x000000000049dad8 in death ()

#9 #10 0x00007f19d723c4e2 in _int_malloc () from /lib64/libc.so.6

#11 0x00007f19d723fb64 in calloc () from /lib64/libc.so.6

#12 0x00000000004bd57a in xcalloc ()

Qt訊號槽不響應訊號的幾種情況

用qt進行訊號與訊號槽連線後,會出現訊號槽不響應訊號的情況,原因可能是以下的情況 1 類沒有宣告q object 2 訊號槽沒有定義為pubic private slots 3 事件被子控制項過濾掉了。比如qlistwidget,當qlistwidgetitem已經處理keypress事件後,qli...

vue資料不響應

一 在開發有時會遇到乙個問題,明明寫的沒問題,為啥資料就不響應呢處?template div div span 使用者名稱 span span 使用者性別 span span v if userinfo.officialaccount span div button click handleaddo...

C 解決介面不響應

在我們的程式中,經常會有一些耗時較長的運算,為了保證使用者體驗,不引起介面不響應,我們一般會採用多執行緒操作,讓耗時操作在後台完成,完成後再進行處理或給出提示,在執行中,也會時時去重新整理介面上的進度條等顯示,必要時還要控制後台執行緒中斷當前操作。實際應用 可以選擇乙個很大的資料夾,統計的時候可以進...