[发明专利]一种栈溢出处理的方法及装置在审
申请号: | 201710502695.7 | 申请日: | 2017-06-27 |
公开(公告)号: | CN109144756A | 公开(公告)日: | 2019-01-04 |
发明(设计)人: | 刘自龙;朱亮亮;曾旭;陈凌君;王斌;蔡俊杰 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苏培华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 溢出 内存管理 内存访问 器件检测 问题排查 溢出检测 时效性 检测 触发 中断 申请 发现 | ||
本申请实施例提供了一种栈溢出处理的方法及装置,其中所述方法包括:采用内存管理器件检测指定栈是否发生栈溢出;当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。通过内存管理器件来检测栈溢出,可以有效提高栈溢出检测的时效性,及时发现栈溢出等偶现性问题,缩短栈溢出问题排查时间。
技术领域
本申请涉及内存处理技术领域,特别是涉及一种栈溢出处理的方法以及一种栈溢出处理的装置。
背景技术
在操作系统的运行过程中,栈溢出是导致操作系统不稳定的重要原因,由于栈溢出具有偶现的特点,往往很难找到导致问题的原因,导致产品研发周期的不确定性。
在现有技术中,通常采用如下方式进行栈溢出检测:
在进程的栈初始化的时候,按预设的字节对齐方式,用特定魔数(比如0x9527)将栈元素依次完成初始化;在系统运行的时候,通过守护进程,依次遍历各个进程的栈,检测栈元素的值是否等于初始化的魔数,求得被污染的元素个数所占栈大小的比例,即为栈使用量,根据栈使用量来判定是否发生栈溢出。
通过这种方法,虽然能检测到是否出现栈溢出,但由于需要在系统运行的时候通过检测魔数有没有改变来判定是否出现溢出,此时距离栈溢出已经有一段时间,因此,现有方案不能及时的检测出栈溢出,导致栈溢出的排查时间较长。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种栈溢出处理的方法和相应的一种栈溢出处理的装置。
为了解决上述问题,本申请实施例公开了一种栈溢出处理的方法,所述方法包括:
采用内存管理器件检测指定栈是否发生栈溢出;
当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。
优选地,在所述采用所述内存管理器件检测指定栈是否发生栈溢出的步骤之前,还包括:
获取所述指定栈的栈信息,所述栈信息包括所述指定栈的起始地址以及栈大小;
基于所述指定栈的起始地址以及栈大小,确定所述指定栈的栈底地址;
采用所述内存管理器件,设置所述栈底地址的访问权限。
优选地,所述指定栈包括任务栈,所述获取所述指定栈的栈信息的步骤包括:
当检测到所述任务栈进行任务切换时,获取所述任务栈的栈信息。
优选地,所述指定栈包括中断栈,所述获取所述指定栈的栈信息的步骤包括:
从编译链接脚本程序中获取所述中断栈的栈信息。
优选地,所述采用所述内存管理器件检测指定栈是否发生栈溢出的步骤包括:
当检测到对栈底的访问操作时,判定所述指定栈发生栈溢出。
优选地,所述方法还包括:
获取所述栈溢出对应的上下文信息;
基于所述上下文信息,进行栈溢出问题排查。
优选地,所述内存管理器件包括内存保护单元MPU或内存管理单元MMU。
本申请实施例还公开了一种栈溢出处理的装置,所述装置包括:
栈溢出检测模块,用于采用内存管理器件检测指定栈是否发生栈溢出;
中断处理模块,用于当检测到所述指定栈发生栈溢出时,由所述内存管理器件触发内存访问中断。
优选地,所述装置还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710502695.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:网页故障处理方法及设备
- 下一篇:具有固件保护功能的主板