[發明專利]一種檢測應用中死鎖的方法與設備有效
| 申請號: | 201610402975.6 | 申請日: | 2016-06-08 |
| 公開(公告)號: | CN107479980B | 公開(公告)日: | 2021-02-12 |
| 發明(設計)人: | 趙樹起 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52 |
| 代理公司: | 上海百一領御專利代理事務所(普通合伙) 31243 | 代理人: | 陳貞健;周建華 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 檢測 應用 死鎖 方法 設備 | ||
1.一種檢測應用中死鎖的方法,其中,該方法包括:
對目標應用執行鎖跟蹤配置操作;
獲取所述目標應用運行期間的多個鎖操作信息;
通過檢測所述多個鎖操作信息確定所述目標應用中是否存在死鎖;
其中,所述對目標應用執行鎖跟蹤配置操作包括:
獲取目標應用中待跟蹤函數的入口地址信息;
將從所述待跟蹤函數的入口地址信息開始的大于或等于預定長度的指令集備份至目標地址;
將從所述待跟蹤函數的入口地址信息開始的第一條指令修改為預定長度的遷移指令,其中,所述遷移指令的目的地址為所述目標地址;
將額外指令添加至位于所述目標地址的所述指令集。
2.根據權利要求1所述的方法,其中,所述通過檢測所述多個鎖操作信息確定所述目標應用中是否存在死鎖包括:
通過檢測所述多個鎖操作信息中是否存在潛在死鎖條件,確定所述目標應用中是否存在死鎖。
3.根據權利要求2所述的方法,其中,所述潛在死鎖條件包括以下至少任一項:
所述多個鎖操作信息中存在鎖依賴環;
同物理線程內發生協程任務切換時,切換前協程任務存在未釋放的鎖。
4.根據權利要求1所述的方法,其中,所述方法還包括:
當所述目標應用存在死鎖,報告對應死鎖的觸發條件。
5.根據權利要求1所述的方法,其中,所述獲取所述目標應用運行期間的多個鎖操作信息包括:
獲取所述目標應用運行期間的多個鎖操作信息;
根據所述多個鎖操作信息構建所述目標應用對應的鎖依賴拓撲圖;
其中,所述通過檢測所述多個鎖操作信息確定所述目標應用中是否存在死鎖包括:
通過遍歷所述鎖依賴拓撲圖確定所述目標應用中是否存在死鎖。
6.根據權利要求5所述的方法,其中,所述根據所述多個鎖操作信息構建所述目標應用對應的鎖依賴拓撲圖包括:
對于每個鎖操作信息,若該鎖操作信息為所述目標應用中所屬線程的第一個鎖操作信息,在線程本地存儲中記錄該鎖操作信息;否則,從所述線程本地存儲持鎖棧中獲取上一個鎖操作信息,在所述目標應用對應的鎖依賴拓撲圖中添加一條從上一個鎖操作信息至該鎖操作信息的有向邊,并在所述線程本地存儲持鎖棧中記錄該鎖操作信息。
7.根據權利要求1所述的方法,其中,所述鎖操作信息包括以下至少任一項:
加鎖操作信息;
嘗試加鎖操作信息;
放鎖操作信息。
8.根據權利要求1所述的方法,其中,所述將從所述待跟蹤函數的入口地址信息開始的大于或等于預定長度的指令集備份至目標地址包括:
動態反匯編從所述待跟蹤函數的入口地址信息開始的預定長度的指令集,以確定所述指令集的完整長度,其中,所述完整長度大于或等于所述預定長度;
將所述完整長度的所述指令集備份至目標地址。
9.根據權利要求1所述的方法,其中,所述將從所述待跟蹤函數的入口地址信息開始的大于或等于預定長度的指令集備份至目標地址包括:
若所述指令集中有指令包括位置偏移信息,在將所述指令集備份至所述目標地址之前,相應地修改所述位置偏移信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610402975.6/1.html,轉載請聲明來源鉆瓜專利網。





