CN101515242B - 一种查找改写内存的任务的方法和系统 - Google Patents
一种查找改写内存的任务的方法和系统 Download PDFInfo
- Publication number
- CN101515242B CN101515242B CN2009101061444A CN200910106144A CN101515242B CN 101515242 B CN101515242 B CN 101515242B CN 2009101061444 A CN2009101061444 A CN 2009101061444A CN 200910106144 A CN200910106144 A CN 200910106144A CN 101515242 B CN101515242 B CN 101515242B
- Authority
- CN
- China
- Prior art keywords
- internal memory
- memory
- task
- measured
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种查找改写内存的任务的方法和系统,该方法包括:依据预定的分配策略依次分配一辅助内存和一待测内存;给所述待测内存里的内容赋一校验字;监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;判断任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,执行步骤1。本发明通过动态的分配待测内存,检测待测内存内容是否被改写,定位改写所述待测内存的任务,从而捕获野指针,提高了产品在市场中的稳定性。
Description
技术领域
本发明涉及了通信产品在市场应用或实验室环境中定位非法改写内存的一种手段,特别涉及一种查找改写内存的任务的方法和系统。
背景技术
在通信领域中,产品在市场应用或实验室环境中会遇到由于内存被非法改写导致系统功能异常甚至死机了。如果是定位野指针随机改写不固定的内存就更加困难了,在通信领域中野指针改写内存的问题是个难题,一般没有系统性的方法定位,通常情况下是靠不停的复现问题,然后分析流程,再不停的加入调试手段来一步一步分析和定位。
发明内容
本发明所要解决的技术问题是,提供一种查找改写内存的任务的方法和系统,从而为定位系统故障提供有效的记录信息以便于定位系统问题,提高产品在市场中的稳定性。
本发明提出了一种查找改写内存的任务的方法,包括:
步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存;
步骤2、赋值模块给所述待测内存里的内容赋一校验字;
步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;
步骤4、查找模块判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,执行步骤1。
当所述分配模块需要重新分配辅助内存和待测内存时,所述步骤1中预定的分配策略是,每次分配给所述辅助内存的内存容量都比上一次分配的多,或每次分配给所述辅助内存的内存容量都比上一次分配的少,或者是随机分配的;每次分配给所述待测内存的内存容量固定。
所述步骤2中的校验字是一个固定数值。
另,本发明还提出了一种查找改写内存的任务的系统,包括:
分配模块,用于初始化时或根据接收到的分配消息,依次分配一辅助内存和一待测内存;
赋值模块,用于给所述待测内存里的内容赋一校验字;
任务切换钩子模块,用于监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;
查找模块,用于判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,发送所述分配消息给所述分配模块。
所述系统还包括分配模式存储模块,所述分配模式存储模块,用于存储第一分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的多,每次分配给所述待测内存的内存容量固定,或用于存储第二分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的少,每次分配给所述待测内存的内存容量固定,或用于存储第三分配模式,即随机分配给所述辅助内存的内存容量,每次分配给所述待测内存的内存容量固定。
所述分配模式存储模块存储了所述三种分配模式中的任一种分配模式,所述分配模块根据所述分配模式存储模块中的所述分配模式,分配一辅助内存和一待测内存。
基于上述技术方案,本发明通过动态的分配待测内存,检测待测内存内容是否被改写,定位改写所述待测内存的任务,从而捕获野指针,提高了产品在市场中的稳定性。
附图说明
图1是本发明查找改写内存的任务的方法流程图。
图2是本发明查找改写内存的任务的系统框图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案作详细说明。
图1是本发明查找改写内存的任务的方法流程图,该方法包括:
步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存;
当所述分配模块需要重新分配辅助内存和待测内存时,所述步骤1中预定的分配策略是,每次分配给所述辅助内存的内存容量都比上一次分配的多,或每次分配给所述辅助内存的内存容量都比上一次分配的少,或者是随机分配的;每次分配给所述待测内存的内存容量固定。
分配待测内存是有一定策略的,原则上就是要待测内存在内存中的位置不停的变化并且有一定的随机性,利用这种策略让野指针改写待测内存,从而捕获住野指针改写内存的任务。例如可以采取如下策略:
(1)按照内容容量从少到多的顺序分配一块辅助内存,紧接着辅助内存的地址之后分配一块内存容量固定的待测内存:
如按照内容容量64、128、256、512、1K、2K、4K、…、256M、512M、1G的顺序分配一块辅助内存,然后分配用于检测的2K容量的待测内存;
(2)按照内容容量从多到少的顺序分配一块辅助内存,紧接着辅助内存的地址之前分配一块内存容量固定的待测内存:
如按照内容容量1G、512M、256M、…、2K、1K、512、256、128、64的顺序分配一块辅助内存,然后分配用于检测的2K容量的待测内存;
(3)在系统允许的大小下,随机大小分配一块辅助内存,然后分配用于检测的2K容量的待测内存;
当然还有其它方法,但原则上一定不要影响系统功能的运行和降低系统运行效率。
步骤2、赋值模块给所述待测内存里的内容赋一校验字;
为了方便校验,这个校验字的每一位与相邻位的值最好不同,从而易于发现待测内存是否被改写,例如可以是0xa5。
因为待测内存可能需要不断分配,每次赋给待测内存的校验字可以是同一个数值,也可以是不同的数值,只要能够校验待测内存是否被改写,所有数值均在本发明的保护范围内。
步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;
任务切换钩子模块会在当前任务向下一个任务发生切换时检测所述待测内存的内容是否被改写,检测的方法是:判断所述待测内存的内容是否与所述校验字相同,如果不相同,则所述待测内存的内容被改写,即可获知改写该待测内存的任务是当前任务,当前任务中包括野指针,只要找到修改待测内存的任务便可找到野指针,记录当前任务标识,并更改标志位的初值。任务标识包括任务名和任务地址,该标志位初始值为0,如果待测内存被改写,则标志位置为1。
利用任务切换钩子模块判断待测内存是否被改写了,由于任务切换钩子模块只对随机分配的待测内存做检测,而初始化是在调用不频繁的任务里做的,所以这样不会因为加入任务切换钩子模块导致系统性能大幅下降,提高了监控的高效性。
步骤4、查找模块判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,执行步骤1。
如果任务切换钩子模块中的标志位为1,则待测内存的内容被改写,通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,即发生切换的当前任务标识,从而可以找到野指针。
如果任务切换钩子模块中的标志位为0,则待测内存的内容没被改写,需要继续查找,所以需要释放所述待测内存和辅助内存,重新分配新的待测内存和辅助内存,然后再查找,直到找到待测内存内容被修改,找出修改待测内存的任务。
图2是本发明查找改写内存的任务的系统框图,该系统,包括:
分配模块,用于初始化时或根据接收到的分配消息,依次分配一辅助内存和一待测内存;
初始化时先分配辅助内存,然后分配待测内存。如果待测内存的内容没被改写,当接收到的分配消息后,需要重新分配新的待测内存和辅助内存。
赋值模块,用于给所述待测内存里的内容赋一校验字;
为了方便校验,所述校验字的每一位与相邻位的值最好不同,从而易于发现待测内存是否被改写,例如可以是0xa5。
因为待测内存可能需要不断分配,每次赋给待测内存的校验字可以是同一个数值,也可以是不同的数值,只要能够校验待测内存是否被改写,所有数值均在本发明的保护范围内。
任务切换钩子模块,用于监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;
任务切换钩子模块会在当前任务向下一个任务发生切换时检测所述待测内存的内容是否被改写,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则所述待测内存的内容被改写,即可获知改写该待测内存的任务是当前任务,当前任务中包括野指针,只要找到修改待测内存的任务便可找到野指针,记录当前任务标识,并更改标志位的初值,该标志位初始值为0,如果待测内存被改写,则标志位置为1。
查找模块,用于判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,发送所述分配消息给所述分配模块;
如果任务切换钩子模块中的标志位为1,则待测内存的内容被改写,查找模块通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,即发生切换的当前任务标识,从而可以找到野指针。
如果任务切换钩子模块中的标志位为0,则待测内存的内容没被改写,查找模块需要继续查找,所以需要释放所述待测内存和辅助内存,发送分配消息给所述分配模块,重新分配新的待测内存和辅助内存。
分配模式存储模块,所述分配模式存储模块,用于存储第一分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的多,每次分配给所述待测内存的内存容量固定,或用于存储第二分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的少,每次分配给所述待测内存的内存容量固定,或用于存储第三分配模式,即随机分配给所述辅助内存的内存容量,每次分配给所述待测内存的内存容量固定。
所述分配模式存储模块存储了所述三种分配模式中的任一种分配模式,所述分配模块根据所述分配模式存储模块中的所述分配模式,分配一辅助内存和一待测内存。
Claims (6)
1.一种查找改写内存的任务的方法,其特征在于,包括:
步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存;
步骤2、赋值模块给所述待测内存里的内容赋一校验字;
步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;
步骤4、查找模块判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,执行步骤1。
2.按照权利要求1所述查找改写内存的任务的方法,其特征在于,当所述分配模块需要重新分配辅助内存和待测内存时,所述步骤1中预定的分配策略是,每次分配给所述辅助内存的内存容量都比上一次分配的多,或每次分配给所述辅助内存的内存容量都比上一次分配的少,或者是随机分配的;每次分配给所述待测内存的内存容量固定。
3.按照权利要求1所述查找改写内存的任务的方法,其特征在于,所述步骤2中的校验字是一个固定数值。
4.一种查找改写内存的任务的系统,其特征在于,包括:
分配模块,用于初始化时或根据接收到的分配消息,依次分配一辅助内存和一待测内存;
赋值模块,用于给所述待测内存里的内容赋一校验字;
任务切换钩子模块,用于监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值;
查找模块,用于判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,发送所述分配消息给所述分配模块。
5.按照权利要求4所述查找改写内存的任务的系统,其特征在于,所述系统还包括分配模式存储模块,所述分配模式存储模块,用于存储第一分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的多,每次分配给所述待测内存的内存容量固定,或用于存储第二分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的少,每次分配给所述待测内存的内存容量固定,或用于存储第三分配模式,即随机分配给所述辅助内存的内存容量,每次分配给所述待测内存的内存容量固定。
6.按照权利要求5所述查找改写内存的任务的系统,其特征在于,所述分配模式存储模块存储了所述三种分配模式中的任一种分配模式,所述分配模块根据所述分配模式存储模块中的所述分配模式,分配一辅助内存和一待测内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101061444A CN101515242B (zh) | 2009-03-16 | 2009-03-16 | 一种查找改写内存的任务的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101061444A CN101515242B (zh) | 2009-03-16 | 2009-03-16 | 一种查找改写内存的任务的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101515242A CN101515242A (zh) | 2009-08-26 |
CN101515242B true CN101515242B (zh) | 2011-08-10 |
Family
ID=41039706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101061444A Expired - Fee Related CN101515242B (zh) | 2009-03-16 | 2009-03-16 | 一种查找改写内存的任务的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101515242B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567160B (zh) * | 2011-12-31 | 2014-05-21 | 公安部第三研究所 | 一种隔离卡内存清空检测测试工具 |
CN103246608A (zh) * | 2012-02-01 | 2013-08-14 | 联想(北京)有限公司 | 用于分配一存储空间的方法和设备 |
CN103885852B (zh) * | 2013-03-01 | 2017-03-15 | 上海富欣智能交通控制有限公司 | 通过校核字来检查ram的方法 |
CN106300493B (zh) * | 2015-06-26 | 2019-04-19 | 北京宝沃汽车有限公司 | 动力电池的管理系统、控制方法及车辆 |
CN106557300B (zh) * | 2015-09-24 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 一种野指针的函数栈信息确定方法、装置及电子设备 |
CN108255746A (zh) * | 2017-12-29 | 2018-07-06 | 北京元心科技有限公司 | 内存改写检测方法及装置 |
CN108762920A (zh) * | 2018-05-18 | 2018-11-06 | 四川斐讯信息技术有限公司 | 一种动态内存中野指针的确定及定位方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3570388B2 (ja) * | 2001-04-17 | 2004-09-29 | 日本電気株式会社 | メモリ診断装置及び診断方法 |
CN1808402A (zh) * | 2005-01-17 | 2006-07-26 | 华为技术有限公司 | 一种内存访问监控方法 |
CN1929034A (zh) * | 2006-09-07 | 2007-03-14 | 华为技术有限公司 | 一种内存故障测试的方法及系统 |
CN101231599A (zh) * | 2008-02-02 | 2008-07-30 | 中兴通讯股份有限公司 | 一种定位特定内存被函数非法改写的方法 |
-
2009
- 2009-03-16 CN CN2009101061444A patent/CN101515242B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3570388B2 (ja) * | 2001-04-17 | 2004-09-29 | 日本電気株式会社 | メモリ診断装置及び診断方法 |
CN1808402A (zh) * | 2005-01-17 | 2006-07-26 | 华为技术有限公司 | 一种内存访问监控方法 |
CN1929034A (zh) * | 2006-09-07 | 2007-03-14 | 华为技术有限公司 | 一种内存故障测试的方法及系统 |
CN101231599A (zh) * | 2008-02-02 | 2008-07-30 | 中兴通讯股份有限公司 | 一种定位特定内存被函数非法改写的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101515242A (zh) | 2009-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101515242B (zh) | 一种查找改写内存的任务的方法和系统 | |
CN101599046B (zh) | 一种内存检测方法及装置 | |
CN102222015B (zh) | 检测多线程程序中的死锁的方法及系统 | |
US8627293B2 (en) | Detecting applications in a virtualization environment | |
CN103109276B (zh) | 系统测试方法 | |
KR101459867B1 (ko) | 시스템 테스트 장치 | |
CN1834950A (zh) | 具有活动和非活动执行核心的多核处理器 | |
CN101145129A (zh) | 一种嵌入式系统内存写越界的检测方法及系统 | |
CN105659208A (zh) | 处理多个线程的数据处理装置及方法 | |
JP2019523952A (ja) | ストリーミングデータ分散処理方法及び装置 | |
CN103488563A (zh) | 并行程序的数据竞争检测方法、装置及多核处理系统 | |
CN103257898A (zh) | 嵌入式系统中资源分配方法和系统 | |
CN102681938A (zh) | 一种内存泄漏检测方法及装置 | |
CN100392606C (zh) | 一种定位虚拟操作系统内存泄漏的方法 | |
CN104679645A (zh) | 一种栈空间余量实时检测方法 | |
CN111881014A (zh) | 一种系统测试方法、装置、存储介质及电子设备 | |
CN102053868A (zh) | 一种内存泄露检测方法和装置 | |
CN114996064A (zh) | 内存检测方法、装置、设备及存储介质 | |
CN104461880A (zh) | 一种嵌入式系统中自动检测内存越界的方法及系统 | |
CN111400199B (zh) | 软件老化的检测方法及其装置和计算机可读存储介质 | |
CN109522184A (zh) | 一种服务器系统安全监控方法、装置及终端 | |
CN102521132A (zh) | 实时输出日志的自动化测试方法和系统 | |
CN102799523B (zh) | 动态探测程序执行路径的方法、装置和计算机系统 | |
CN103176897B (zh) | 一种软件回归测试的方法及系统 | |
CN100487657C (zh) | 嵌入式系统中自动监测内存泄漏与内存越界的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110810 Termination date: 20190316 |