[發明專利]利用所應用的存儲器區域生命期的比特精確跟蹤分析有效
申請號: | 201880085906.4 | 申請日: | 2018-12-18 |
公開(公告)號: | CN111602121B | 公開(公告)日: | 2023-10-24 |
發明(設計)人: | H·加布里杰爾斯基;J·莫拉 | 申請(專利權)人: | 微軟技術許可有限責任公司 |
主分類號: | G06F11/36 | 分類號: | G06F11/36 |
代理公司: | 北京世輝律師事務所 16093 | 代理人: | 王俊 |
地址: | 美國華*** | 國省代碼: | 暫無信息 |
權利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關鍵詞: | 利用 應用 存儲器 區域 生命 比特 精確 跟蹤 分析 | ||
基于應用的執行的可重放跟蹤來檢測和提供在應用的先前執行期間的非故障存儲器訪問的通知。實施例包括從應用的先前執行的可重放跟蹤重放應用的先前執行的(多個)部分,同時跟蹤由應用使用的(多個)存儲器區域的生命期。基于跟蹤存儲器區域的生命期,檢測在應用的先前執行期間由應用進行的非故障但不適當的(多個)存儲器訪問。在用戶界面處和/或向軟件組件提供關于這些非故障但不適當的(多個)存儲器訪問的通知。
背景技術
常見的編程錯誤類別包括導致線程執行超出所分配存儲器的存儲器讀取和/或寫入操作(即,越界存儲器訪問)的錯誤。例如,一類編程錯誤是由存儲器分配函數保留的存儲器使用不當引起的。很多編程語言和/或庫提供使得進程能夠請求指定大小的存儲器塊的分配(例如,從可用存儲器池,諸如堆)的一個或多個存儲器分配函數調用(例如,C標準庫中的malloc())、以及用于稍后重新分配該存儲器的一個或多個存儲器重新分配函數調用(例如,C標準庫中的free())。通常,存儲器分配函數從存儲器池中定位和保留指定大小的連續的可用存儲器塊,并且在該塊的開始返回指向存儲器地址的指針。然后,線程可以基于距該指針的整數偏移來訪問該保留的存儲器塊中的存儲器位置。但是,很多編程語言可能很少或根本沒有提供保護以防止線程實際訪問保留塊之外的存儲器地址。如果線程向其保留塊之外的存儲器寫入,則存在可能會不適當地覆蓋有效的存儲器值(例如,作為不同數據結構的部分和/或由另一線程使用的值)的風險。如果線程從其保留塊之外的存儲器中讀取數據,則存在以下風險:可能讀取意外數據(例如,來自不同數據結構和/或由另一線程寫入的數據),讀取未定義數據(例如,尚未被寫入的存儲器位置),或通過嘗試訪問不可訪問存儲器而導致訪問沖突。
另一類常見的編程錯誤涉及導致線程在其有效性狀態已經轉變之后從存儲器位置不適當地訪問存儲器的錯誤。例如,在很多計算機架構中,每個執行線程與稱為“堆棧”的存儲器區域相關聯,該存儲器區域在線程執行時存儲臨時本地信息。通常,每次函數被調用時,新的“堆棧框架”被添加到堆棧,并且在該函數終止時,該函數的堆棧框架從堆棧中移除。因此,堆棧在線程的執行期間動態地增長和收縮。每個堆棧框架會為函數的任何局部變量分配一個或多個存儲器位置。這些存儲器位置在函數執行時對于要使用的函數是“有效”的,但是在從堆棧中移除堆棧框架時對于要使用的任何函數是“無效”的。但是,即使堆棧框架已經從堆棧中移除(并且存儲器位置已經變為無效),編碼錯誤也可能導致對這些存儲器位置的訪問(讀取和/或寫入)。編程語言可能很少或根本沒有提供保護以防止線程執行這些類型的基于堆棧的不適當的存儲器訪問。
這些類型的不適當的存儲器訪問可能特別難以定位和調試,因為它們實際上并不會在所有情況下都導致線程執行失敗(故障)。如本文中使用的,引起故障的不適當的存儲器訪問是導致錯誤(例如,分段故障、訪問沖突、未處理異常等)的訪問,該錯誤導致線程的執行終止。這與適當的存儲器訪問相反,適當的存儲器訪問可能會導致通常稱為“故障”(例如,頁面故障)的事件,但是該事件實際上并不會錯誤地導致線程的執行終止。導致執行失敗的錯誤可能在讀取和依賴無效數據并且無效數據以某種方式導致執行“失敗”時發生,或者在線程訪問不允許訪問或實際上不對應于合法存儲器地址的存儲器位置時發生。但是,超出所分配存儲器的每次訪問或對不再有效的存儲器的每次訪問都不一定會導致發生這些故障之一。例如,即使存儲器訪問可能不適當,它也可能讀取有效數據(例如,線程先前寫入的并且隨后未被覆蓋的數據),它可能是對線程被允許訪問的存儲器位置的訪問,等等。
因此,出于本說明書的目的,術語“非故障”包括非錯誤的頁面故障(諸如在大多數虛擬存儲系統中用于允許臨時“調出”存儲器的頁面故障)。類似地,術語“執行故障”(或其變體)通過排除非錯誤頁面故障而更具限制性,并且旨在涵蓋影響繼續執行能力的故障(例如,訪問沖突、分段故障、未處理異常等)。當然,術語“非執行故障”(或其變體)因此表示“執行故障”的反義詞。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于微軟技術許可有限責任公司,未經微軟技術許可有限責任公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201880085906.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:計算瞄準點信息的裝置和方法
- 下一篇:填充設備