程序死鎖不響應訊號
問題現象
線上發現乙個程序的某個埠沒有監聽,程序很久沒有重啟了。
排查過程
線上程序會每日重啟,傳送重啟訊號有漏掉該程序?
使用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 解決介面不響應
在我們的程式中,經常會有一些耗時較長的運算,為了保證使用者體驗,不引起介面不響應,我們一般會採用多執行緒操作,讓耗時操作在後台完成,完成後再進行處理或給出提示,在執行中,也會時時去重新整理介面上的進度條等顯示,必要時還要控制後台執行緒中斷當前操作。實際應用 可以選擇乙個很大的資料夾,統計的時候可以進...