CN112631893B - 面向异构平台的多层次存储结构内存检测方法 - Google Patents
面向异构平台的多层次存储结构内存检测方法 Download PDFInfo
- Publication number
- CN112631893B CN112631893B CN201910903842.0A CN201910903842A CN112631893B CN 112631893 B CN112631893 B CN 112631893B CN 201910903842 A CN201910903842 A CN 201910903842A CN 112631893 B CN112631893 B CN 112631893B
- Authority
- CN
- China
- Prior art keywords
- memory
- variable
- shadow
- core
- heap
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:S1、实现自定义动态运行时库;S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;S3、主核、从核分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理;S4、编译器将S3中处理过的中间代码,编译、汇编、链接,生成可执行代码,进而生成可执行文件并运行。本发明在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。
Description
技术领域
本发明涉及一种面向异构平台的多层次存储结构内存检测方法,属于编译优化技术领域。
背景技术
内存错误是C和C++程序员常见的编程问题之一。内存错误不仅仅会引起运行结果错误、运行程序崩溃,甚至会被黑客恶意利用。内存错误检测可以提高程序正确性、稳定性和安全性。
通用芯片的编译器将内存划分为三个逻辑区域:堆、栈和静态存储区。而国产异构众核处理器是多层次的存储结构,分为数据共享区、代码只读区、动态空间区等,在同一内存空间中,不同功能区空间编址不连续,编址空间范围大,存在多块堆、栈和静态存储区。异构众核处理器编程较为复杂,在C和C++异构代码中,所有内存的操作都要由程序员负责,程序员既要考虑存储结构还需要自己管理各层次内存使用,所以,如果处理不好,就会发生内存问题,并且难以发现定位。如果分配了堆对象,却忘记了释放,就会产生内存泄漏;而如果已释放了对象,却没有将相应的指针置为 NULL,该指针就是所谓的“悬挂指针”,再度使用此指针时,就会出现非法访问,严重时就导致程序崩溃;不正确的内存使用也会产生内存溢出,从而导致程序运行错误或者被黑客利用。一旦产生这些问题,对于程序员来说是致命的,因为代码极其复杂很难准确定位到具体的错误现场。
目前结合编译技术进行的内存错误检测大多专注于静态检测,但静态检测漏报率低但误报率很高,动态检测无法支持多层次的存储空间。通用处理器静态内存检测只是简单的对源码进行词法分析、语法分析等通过简单判断就完成错误检测功能,错误类型不全面,大量检测工具只能检测某一类的内存错误,对于其他类型的错误就束手无策,然而这些错误很可能是影响软件安全的重要一环。通用处理器的动态检测机制效果较好,但是由于动态检测与架构息息相关,因此在内存划分,阴影区映射,功能区区分等方面不能有效支持复杂的多层次存储结构,不适用在拥有多指令集、多层次存储结构的异构众核处理器上。结合编译技术且应用在国产异构众核处理器上的动态内存错误检测工具处于空白,成为本领域技术人员努力的方向。
发明内容
本发明的目的是提供一种面向异构平台的多层次存储结构内存检测方法,该面向异构平台的多层次存储结构内存检测方法在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,为基于国产异构众核处理器的编译器实现动态内存错误检测提供了方法,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。
为达到上述目的,本发明采用的技术方案是:一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:
S1、实现自定义动态运行时库,提供接口函数,主核、从核通过接口函数,调用自定义动态运行时库,在该自定义动态运行时库中实现内存检测及相关工作,具体过程如下:
S11、在内存映射的过程中,建立阴影内存,阴影内存与主存之间的关系是:N=ChooseBlock(mem);shadow=((mem-membeg[N])>>3)+shadowbeg[N],即阴影内存与主存之间存在一一对应的映射关系;
S12、基于多层次存储结构,自定义动态运行时库按访问权限和功能特性,对主存和阴影内存的虚拟空间进行重新划分,把虚拟空间分为只读数据和共享数据段、动态空间段、私有空间段;
S13、毒化和去毒化阴影内存区,即定义阴影内存中每个字节存取一个数字k,k小于0表示该阴影内存对应的主存空间地址会发生非法内存访问错误;k等于0表示该阴影内存对应的8个字节内存可以访问;k大于0小于7表示该阴影内存对应的8个字节内存中前k个字节内存可以访问;
S14、使用自定义动态运行时库中的__asan_memset、__asan_memmove、__asan_memcpy、asan_malloc、asan_calloc、asan_realloc、asan_free接口分别替换标准c库中的memset、memmove、memcpy、malloc、calloc、realloc、free接口;
用户通过上述替换后的接口申请堆变量和释放堆变量;
当申请堆变量时,将堆变量的隔离区毒化,并使用数据结构,记录哪些堆变量可以分配、哪些堆变量不可以分配,形成trunk记录;
当释放堆变量时,将堆变量去毒化,并去除数据结构中对应的trunk记录;
释放掉的堆变量可以继续分配;
S15、根据毒化值及trunk记录,生成内存错误检测报告;
S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;
S3、主核、从核各自的编译器分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理,具体过程如下:
S31、编译分析源程序,根据访存指令,发现需要检测的变量数据,在访存指令前后对需要检测的变量数据进行插桩,所述需要检测的变量数据包括全局变量、栈变量和堆变量;
S32、编译器对全局变量进行插桩,对全局变量前后插入隔离区,将原全局变量与隔离区打包成新的结构体全局变量,并用新的结构体全局变量替换原全局变量,编译器判断所述新的结构体全局变量是否可访问,如果可以访问,将打包后的新的结构体全局变量对应的阴影内存去毒化,如果不可以访问,将打包后的新的结构体全局变量对应的阴影内存毒化,在全局变量读写操作时,将用于判定该全局变量是否可以访问的代码,分别插入主核、从核的访存指令前;
S33、对栈变量前后插入隔离区,在函数入口处,编译器判断该栈变量是否可访问,如果可以访问,将该栈变量和隔离区对应的阴影内存去毒化,如果不可以访问,将该栈变量和隔离区对应的阴影内存毒化,在栈变量读写操作时,将用于判定该栈变量空间是否可访问的代码,分别插入主核、从核的访存指令前,在函数返回前,编译器将该栈变量去毒化;
S34、编译器对堆变量进行去毒化,编译器将内存操作相关的标准库接口,替换为运行时库中对应的库接口,自定义动态运行时库中的库接口在实现标准库接口功能的同时,增加对阴影区内存值的设置与判定功能,从而实现对堆变量的内存访问检测;
S4、编译器将S3中处理过的中间代码,编译、汇编、与自定义动态运行时库链接,生成可执行代码,进而生成可执行文件并运行,运行时通过插桩的接口调用自定义运行时库中功能模块实现动态内存检测。
上述技术方案中进一步改进的方案如下:
1. 上述方案中,所述全局变量空间由编译器一次性分配,所述栈变量是函数局部变量的内存空间,该内存空间由编译器进行动态分配和释放,所述堆变量必须通过标准库中内存操作函数进行分配空间和释放空间。
2. 上述方案中,在S11中,阴影内存与主存之间的映射关系,指主存和阴影内存的对应关系,根据主存地址计算出阴影内存相应的地址,给定主存地址shadow后,首先根据shadow值的范围确定其功能区N,然后将shadow值除以8,表示每8bit主存需要1bit阴影内存表示,然后将计算的结果与功能区对应的阴影内存首地址shadowbeg[N]相加,得到最终的阴影内存地址。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向异构平台的多层次存储结构内存检测方法,其在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,为基于国产异构众核处理器的编译器实现动态内存错误检测提供了方法,可以针对C和C++异构代码中内存溢出、无效释放、内存泄露等十余种内存错误进行检测,在异构众核处理器上执行可执行文件就可以对内存错误进行检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好;通过自定义的映射机制,建立异构众核处理器中主存不同部分空间与阴影内存达到划分虚拟地址空间的目的,进而使检测操作发生在阴影内存区,不会对主存数据产生任何影响;通过调用自定义的运行时库在程序执行时进行堆栈信息检测,误报漏报率低,可以方便程序调试,增强程序的稳定性。
附图说明
附图1为本发明面向异构平台的多层次存储结构内存检测方法流程示意图;
附图2为本发明面向异构平台的多层次存储结构内存检测方法流程图。
具体实施方式
实施例:一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,基于异构众核处理器的编译器和运行时库,包括以下步骤:
S1、实现自定义动态运行时库,提供接口函数,主核、从核通过接口函数,调用自定义动态运行时库,在该自定义动态运行时库中实现内存检测及相关工作,具体过程如下:
S11、在内存映射的过程中,建立阴影内存,阴影内存与主存之间的关系是:N=ChooseBlock(mem);shadow=((mem-membeg[N])>>3)+shadowbeg[N],即阴影内存与主存之间存在一一对应的映射关系;
S12、基于多层次存储结构,自定义动态运行时库按访问权限和功能特性,对主存和阴影内存的虚拟空间进行重新划分,把虚拟空间分为只读数据和共享数据段、动态空间段、私有空间段;
S13、毒化和去毒化阴影内存区,即定义阴影内存中每个字节存取一个数字k,k小于0表示该阴影内存对应的主存空间地址会发生非法内存访问错误;k等于0表示该阴影内存对应的8个字节内存可以访问;k大于0小于7表示该阴影内存对应的8个字节内存中前k个字节内存可以访问;
S14、使用自定义动态运行时库中的__asan_memset、__asan_memmove、__asan_memcpy、asan_malloc、asan_calloc、asan_realloc、asan_free接口分别替换标准c库中的memset、memmove、memcpy、malloc、calloc、realloc、free接口,从而可以实现对内存的自定义管理,解决标准c库中无法控制内存检测的问题,增加对阴影区内存值的设置与判定功能,内存操作主要对堆变量的操作;
用户通过上述替换后的接口申请堆变量和释放堆变量;
当申请堆变量时,将堆变量的隔离区毒化,并使用数据结构,记录哪些堆变量可以分配、哪些堆变量不可以分配,形成trunk记录;
当释放堆变量时,将堆变量去毒化,并去除数据结构中对应的trunk记录;
释放掉的堆变量可以继续分配;
S15、根据毒化值及trunk记录,生成内存错误检测报告;
S2、在自定义动态运行时库中,同时提供异常处理功能,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;
S3、主核、从核各自的编译器分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理,具体过程如下:
S31、编译分析源程序,根据访存指令,发现需要检测的变量数据,在访存指令前后对需要检测的变量数据进行插桩,所述需要检测的变量数据包括全局变量、栈变量和堆变量;
S32、编译器对全局变量进行插桩,对全局变量前后插入隔离区,将原全局变量与隔离区打包成新的结构体全局变量,并用新的结构体全局变量替换原全局变量,编译器判断所述新的结构体全局变量是否可访问,如果可以访问,将打包后的新的结构体全局变量对应的阴影内存去毒化,如果不可以访问,将打包后的新的结构体全局变量对应的阴影内存毒化,在全局变量读写操作时,将用于判定该全局变量是否可以访问的代码,分别插入主核、从核的访存指令前;
S33、对栈变量前后插入隔离区,在函数入口处,编译器判断该栈变量是否可访问,如果可以访问,将该栈变量和隔离区对应的阴影内存去毒化,如果不可以访问,将该栈变量和隔离区对应的阴影内存毒化,在栈变量读写操作时,将用于判定该栈变量空间是否可访问的代码,分别插入主核、从核的访存指令前,在函数返回前,编译器将该栈变量去毒化;
S34、编译器对堆变量进行去毒化,编译器将内存操作相关的标准库接口,替换为运行时库中对应的库接口,自定义动态运行时库中的库接口在实现标准库接口功能的同时,增加对阴影区内存值的设置与判定功能,从而实现对堆变量的内存访问检测;
S4、编译器将S3中处理过的中间代码,编译、汇编、与自定义动态运行时库链接,生成可执行代码,进而生成可执行文件并运行,运行时通过插桩的接口调用自定义运行时库中功能模块实现动态内存检测。
上述全局变量空间由编译器一次性分配,所述栈变量是函数局部变量的内存空间,该内存空间由编译器进行动态分配和释放,所述堆变量必须通过标准库中内存操作函数进行分配空间和释放空间。
在S11中,阴影内存与主存之间的映射关系,指主存和阴影内存的对应关系,根据主存地址计算出阴影内存相应的地址,给定主存地址shadow后,首先根据shadow值的范围确定其功能区N,然后将shadow值除以8,表示每8bit主存需要1bit阴影内存表示,然后将计算的结果与功能区对应的阴影内存首地址shadowbeg[N]相加,得到最终的阴影内存地址。
实施例进一步解释如下:
本发明提出的内存错误检测方法是基于国产异构众核处理器的编译器和运行时库实现的,该方法通过划分不同指令集处理器内存空间分布,结合异构众核融合代码编译流程、调用约定和运行机制,编译时分别完成插桩,进而调用相对应的运行时库完成检测功能并且输出检测信息。
本发明实现流程图如图1所示。
本发明的详细描述:
1.主从核两套编译器分别对源程序进行编译分析,对需要插桩的位置进行相应的插桩处理,具体过程如下。
1)编译分析源代码文件,发现需要检测的变量数据,定位需要进行插桩的位置;
2)对全局变量插桩完成变量替换,将原变量与隔离区打包为结构体变量,根据其是否可访问将新变量对应的阴影区毒化,全局变量写操作时分别插入主从核对应运行时检测接口;
3)对栈变量前后插入隔离区,函数入口根据其是否可访问将变量和隔离区对应的阴影区毒化,在栈变量写操作时分别插入主从核对应的运行时检测接口,在函数返回前,栈空间去毒化;
4)对堆变量空间进行去毒化,函数劫持内存操作函数。
2. 生成可执行文件并运行。
3. 程序通过插桩的主从核运行时库接口调用自定义动态运行时库。在运行时库中实现了内存检测的相关功能,原理如下:
1)建立内存映射。在内存映射的过程中,建立阴影内存。阴影内存与主存之间的关系是:N=ChooseBlock(mem);shadow=((mem-membeg[N])>>3)+shadowbeg[N],即阴影内存与主存之间存在一个映射关系,这个关系根据不同的功能区有所区分,以保证多层次存储结构每个层次有自己对应的实现机制;
2)对虚拟空间进行重新划分。根据访问权限、功能特性,把虚拟空间分为只读数据和共享数据段、动态空间段、私有空间段;
3)毒化(poison)/去毒化(unpoison)阴影内存区。定义阴影内存中每个字节存取一个数字k,k小于0表示栈溢出、堆溢出等错误;k等于0表示该阴影内存对应的8个字节内存都可以去毒化;k大于0小于7表示前k个字节可以去毒化;
4)劫持相关的malloc、free等内存操作函数。申请堆空间时,将堆变量隔离区毒化,并且记录分配的堆空间trunk,释放堆空间时,将堆变量去毒化,并去除记录中该trunk;
5)根据毒化值及trunk记录,生成内存错误检测报告。
4. 从核可以向主核发送异常中断,主核代理从核异常处理、部分内存分配、多从核同步与通信功能。
采用上述面向异构平台的多层次存储结构内存检测方法时,其在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,为基于国产异构众核处理器的编译器实现动态内存错误检测提供了方法,可以针对C和C++异构代码中内存溢出、无效释放、内存泄露等十余种内存错误进行检测,在异构众核处理器上执行可执行文件就可以对内存错误进行检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好;通过自定义的映射机制,建立异构众核处理器中主存不同部分空间与阴影内存达到划分虚拟地址空间的目的,进而使检测操作发生在阴影内存区,不会对主存数据产生任何影响;通过调用自定义的运行时库在程序执行时进行堆栈信息检测,误报漏报率低,可以方便程序调试,增强程序的稳定性。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
异构众核处理器:处理器中包含多个架构的CPU,且CPU数量达到数十个以上。
毒化/去毒化:毒化是指将内存空间设置为不可写,去毒化是将内存空间设置为可写。
毒化值:设置毒化时使用的标志数值。
隔离区:是设置为不可访问的内存空间。
阴影区:是专门的内存空间,该空间使用1bit来表示用户程序空间1byte是否可访问。
段违例异常:指访问非法地址导致的异常。
终止异常:指通过系统调用终止程序的异常。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (3)
1.一种面向异构平台的多层次存储结构内存检测方法,其特征在于:基于异构众核处理器的编译器和运行时库,包括以下步骤:
S1、实现自定义动态运行时库,提供接口函数,主核、从核通过接口函数,调用自定义动态运行时库,在该自定义动态运行时库中实现内存检测及相关工作,具体过程如下:
S11、在内存映射的过程中,建立阴影内存,阴影内存与主存之间的关系是:N=ChooseBlock(mem);shadow=((mem-membeg[N])>>3)+shadowbeg[N],即阴影内存与主存之间存在一一对应的映射关系;
S12、基于多层次存储结构,自定义动态运行时库按访问权限和功能特性,对主存和阴影内存的虚拟空间进行重新划分,把虚拟空间分为只读数据和共享数据段、动态空间段、私有空间段;
S13、毒化和去毒化阴影内存区,即定义阴影内存中每个字节存取一个数字k,k小于0表示该阴影内存对应的主存空间地址会发生非法内存访问错误;k等于0表示该阴影内存对应的8个字节内存可以访问;k大于0小于7表示该阴影内存对应的8个字节内存中前k个字节内存可以访问;
S14、使用自定义动态运行时库中的__asan_memset、__asan_memmove、__asan_memcpy、asan_malloc、asan_calloc、asan_realloc、asan_free接口分别替换标准c库中的memset、memmove、memcpy、malloc、calloc、realloc、free接口;
用户通过上述替换后的接口申请堆变量和释放堆变量;
当申请堆变量时,将堆变量的隔离区毒化,并使用数据结构,记录哪些堆变量可以分配、哪些堆变量不可以分配,形成trunk记录;
当释放堆变量时,将堆变量去毒化,并去除数据结构中对应的trunk记录;
释放掉的堆变量可以继续分配;
S15、根据毒化值及trunk记录,生成内存错误检测报告;
S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;
S3、主核、从核各自的编译器分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理,具体过程如下:
S31、在程序头部插入S1中提供的内存初始化接口,在程序尾部插入S1中提供的释放阴影内存空间接口;
S32、编译分析源程序,根据访存指令,发现需要检测的变量数据,在访存指令前后对需要检测的变量数据进行插桩,所述需要检测的变量数据包括全局变量、栈变量和堆变量;
S33、编译器对全局变量进行插桩,对全局变量前后插入隔离区,将原全局变量与隔离区打包成新的结构体全局变量,并用新的结构体全局变量替换原全局变量,编译器判断所述新的结构体全局变量是否可访问,如果可以访问,将打包后的新的结构体全局变量对应的阴影内存去毒化,如果不可以访问,将打包后的新的结构体全局变量对应的阴影内存毒化,在全局变量读写操作时,将用于判定该全局变量是否可以访问的代码,分别插入主核、从核的访存指令前;
S34、对栈变量前后插入隔离区,在函数入口处,编译器判断该栈变量是否可访问,如果可以访问,将该栈变量和隔离区对应的阴影内存去毒化,如果不可以访问,将该栈变量和隔离区对应的阴影内存毒化,在栈变量读写操作时,将用于判定该栈变量空间是否可访问的代码,分别插入主核、从核的访存指令前,在函数返回前,编译器将该栈变量去毒化;
S35、编译器对堆变量进行去毒化,编译器将内存操作相关的标准库接口,替换为运行时库中对应的库接口,自定义动态运行时库中的库接口在实现标准库接口功能的同时,增加对阴影区内存值的设置与判定功能,从而实现对堆变量的内存访问检测;
S4、编译器将S3中处理过的中间代码,编译、汇编、链接,生成可执行代码,进而生成可执行文件并运行,运行时通过插桩的接口调用自定义运行时库中功能模块实现动态内存检测。
2.根据权利要求1所述的面向异构平台的多层次存储结构内存检测方法,其特征在于:所述全局变量空间由编译器一次性分配,所述栈变量是函数局部变量的内存空间,该内存空间由编译器进行动态分配和释放,所述堆变量必须通过标准库中内存操作函数进行分配空间和释放空间。
3.根据权利要求1所述的面向异构平台的多层次存储结构内存检测方法,其特征在于:在S11中,阴影内存与主存之间的映射关系,指主存和阴影内存的对应关系,根据主存地址计算出阴影内存相应的地址,给定主存地址shadow后,首先根据shadow值的范围确定其功能区N,然后将shadow值除以8,表示每8bit主存需要1bit阴影内存表示,然后将计算的结果与功能区对应的阴影内存首地址shadowbeg[N]相加,得到最终的阴影内存地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903842.0A CN112631893B (zh) | 2019-09-24 | 2019-09-24 | 面向异构平台的多层次存储结构内存检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903842.0A CN112631893B (zh) | 2019-09-24 | 2019-09-24 | 面向异构平台的多层次存储结构内存检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631893A CN112631893A (zh) | 2021-04-09 |
CN112631893B true CN112631893B (zh) | 2022-11-15 |
Family
ID=75282611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910903842.0A Active CN112631893B (zh) | 2019-09-24 | 2019-09-24 | 面向异构平台的多层次存储结构内存检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631893B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114218149B (zh) * | 2021-04-30 | 2024-03-22 | 无锡江南计算技术研究所 | 一种众核处理器上从核局存空间动态管理方法 |
CN113515412B (zh) * | 2021-06-25 | 2024-04-12 | 清华大学 | 非易失性内存检查点生成方法、装置和电子设备 |
CN113836023B (zh) * | 2021-09-26 | 2023-06-27 | 南京大学 | 一种基于体系结构交叉检查的编译器安全性测试方法 |
CN114036072B (zh) * | 2022-01-06 | 2022-04-08 | 湖南泛联新安信息科技有限公司 | 一种支持自动化检测程序缺陷的方法和系统 |
CN115080252B (zh) * | 2022-08-23 | 2022-11-08 | 智者四海(北京)技术有限公司 | iOS平台中基于无锁的非法内存访问检测方法和装置 |
CN115238297B (zh) * | 2022-09-23 | 2023-01-31 | 北京安帝科技有限公司 | 多层级权限控制内存保护方法和装置 |
CN115878405A (zh) * | 2023-03-08 | 2023-03-31 | 杭州拓数派科技发展有限公司 | PostgreSQL数据库内存检测方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8060869B1 (en) * | 2007-06-08 | 2011-11-15 | Oracle America, Inc. | Method and system for detecting memory problems in user programs |
CN104636256A (zh) * | 2015-02-17 | 2015-05-20 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
-
2019
- 2019-09-24 CN CN201910903842.0A patent/CN112631893B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8060869B1 (en) * | 2007-06-08 | 2011-11-15 | Oracle America, Inc. | Method and system for detecting memory problems in user programs |
CN104636256A (zh) * | 2015-02-17 | 2015-05-20 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
Non-Patent Citations (2)
Title |
---|
《Algorithmic approach to deadlock detection for resource allocation in heterogeneous platforms》;Ha Huy Cuong Nguyen 等;《2014 International Conference on Smart Computing》;20141231;全文 * |
《基于MIPS 架构的异构内存虚拟化方法研究》;蔡万伟 等;《髙技术通讯》;20130930;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112631893A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112631893B (zh) | 面向异构平台的多层次存储结构内存检测方法 | |
Nethercote et al. | Valgrind: A program supervision framework | |
US6009269A (en) | Detecting concurrency errors in multi-threaded programs | |
Jeon et al. | Hextype: Efficient detection of type confusion errors for c++ | |
US8762797B2 (en) | Method and apparatus for detecting memory access faults | |
US5583988A (en) | Method and apparatus for providing runtime checking features in a compiled programming development environment | |
US8578339B2 (en) | Automatically adding bytecode to a software application to determine database access information | |
US5911073A (en) | Method and apparatus for dynamic process monitoring through an ancillary control code system | |
US8887141B2 (en) | Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information | |
US6363467B1 (en) | Apparatus and method for allocating memory space for program use and management purposes | |
US7992146B2 (en) | Method for detecting race conditions involving heap memory access | |
CA2211505C (en) | Setting instance breakpoints in object oriented computer programs | |
US9183114B2 (en) | Error detection on the stack | |
CN107357666A (zh) | 一种基于硬件保护的多核并行系统处理方法 | |
CN103064784A (zh) | 面向Xen环境的运行时内存泄漏检测方法及其实现系统 | |
CN110598405B (zh) | 一种运行时访问控制方法及计算装置 | |
US20040172513A1 (en) | System and method for detecting memory management programming errors | |
Stilkerich et al. | Tailor‐made JVMs for statically configured embedded systems | |
CN113987507A (zh) | 堆内存漏洞检测方法、装置、存储介质及电子设备 | |
CN111143199B (zh) | 一种云平台中检测dpdk应用程序内存越界访问的方法 | |
Erickson | Memory leak detection in embedded systems | |
EP1653344A1 (en) | Embedded detection objects | |
Goebel et al. | Performance and Freedom From Interference-a contradiction in embedded automotive multi-core applications? | |
Stilkerich et al. | Team up: Cooperative memory management in embedded systems | |
CN112667514A (zh) | 一种微程序的调试方法及其调试装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |