CN101154180B - 一种任务栈溢出的监测方法 - Google Patents
一种任务栈溢出的监测方法 Download PDFInfo
- Publication number
- CN101154180B CN101154180B CN200610113533A CN200610113533A CN101154180B CN 101154180 B CN101154180 B CN 101154180B CN 200610113533 A CN200610113533 A CN 200610113533A CN 200610113533 A CN200610113533 A CN 200610113533A CN 101154180 B CN101154180 B CN 101154180B
- Authority
- CN
- China
- Prior art keywords
- task
- stack
- memory
- task stack
- pointer
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种任务栈溢出的监测方法,该监测方法包括步骤:确定一位于任务栈末端区域的内存空间,将其设置为只读属性;监听操作系统的地址访问异常中断;当监听到地址访问异常中断时,判断产生地址访问异常中断的任务是否栈溢出。通过上述的方法,可以实时监测到任务栈的溢出,并防止由于任务栈溢出而对其它任务造成破坏。
Description
技术领域
本发明涉及内存管理,特别涉及一种任务栈溢出的监测方法。
背景技术
一般而言,每个任务或线程都有自己独立的栈(stack)空间,用于分配任务或线程内局部变量占用的内存,保存任务或线程运行时的函数调用信息以及任务或线程切换时的上下文信息。
在一些实时操作系统中,如VxWorks、OSE等,为了提高系统效率,通常不进行虚拟内存管理,所有任务(包括内核)共享同一物理地址空间,任务之间没有地址保护机制。从而使任务切换时不需要进行虚拟地址空间切换,任务间可以直接共享变量,不需要通过内核在不同的地址空间之间复制数据,并且系统调用时不需要在核心态和用户态之间切换,相当于直接的函数调用。
但是由于所有的任务均在同一物理地址空间上运行,任务栈大小的设置必须合理。太大会浪费内存空间,太小时可能会引起栈溢出。而栈溢出又会引起连锁反应,出现纷繁复杂的异常现象。
如图1所示,由于任务A的栈溢出,导致任务B栈中的内容被改写。若改写的是任务B内局部变量,则可能造成地址访问异常,若改写的是任务B的函数调用指针信息,则可能造成指令访问异常。即任务A栈溢出,表现出来的现象却是任务B异常,严重干扰了问题的分析和定位。
为了避免栈溢出,一般会先凭经验预估每个任务所需的栈空间的大小,再根据测试反馈的结果去进行修正。但是无论是白箱测试,还是黑箱测试,代码的覆盖率均不可能达到100%,即总存在未测试到的分支。如果任务的各种边界条件以及可能引发的最深嵌套调用情况无法一一测到,则存在在产品阶段出现任务栈溢出的可能性。因此,即使在进入产品阶段,很多嵌入式设备仍会采用一些方案对任务栈的使用情况进行监测,以利于出现故障时的诊断及定位。
现有技术中,任务栈溢出监测通常采用两种方法是:
方法一,在任务切换钩子(Hook)函数中,查询发生切换时栈的使用情况。即由任务A切换到任务B时,查询任务A栈的使用情况,如果任务A的栈溢出,则将任务A挂起,并以任务B的身份,构造告警消息,上报管理站。
方法二,创建一个监测任务,该任务每隔一段时间,定时查询相关任务栈的使用情况。如果检测到某个任务栈溢出,则将该任务挂起,并以监测任务的身份,构造告警消息,上报管理站。
在上述的方法中,判断任务栈溢出的常用方法是记录任务栈的使用峰值,若使用峰值越界,即使用峰值超过了任务栈的边界,则判定栈溢出。
可以看出,采用上述的监测方法,当监测到任务栈溢出时错误已经产生,并很有可能已经对其它的任务的内存空间造成破坏.其次,无论是任务切换时检测任务栈溢出还是定时检测任务栈溢出,都不能保证当任务栈溢出被实时发现,从而进行相应的后续处理以防止错误继续.而且会因为任务栈的溢出而使进行任务栈溢出监测的任务本身收到破坏,而无法实现正常的监测功能.
发明内容
本发明要解决的一个技术问题是提供一种任务栈溢出的监测方法,通过该方法,可以及时检测到任务栈的溢出,并防止由于任务栈溢出而对其它任务造成破坏。
本发明提供的任务栈溢出的监测方法,应用于静态分配的任务栈,包括如下步骤:
A,在系统内存的静态数据区和动态数据区为任务栈分配的内存空间的情况下,在任务栈的末端区域选择一段大小为系统页表尺寸整数倍、且首地址与页表尺寸对齐的内存区域,然后对选定的内存区域进行页表映射,并将该页表设置为只读属性;在任务栈分配的内存空间位于静态数据区的情况下,在任务栈的末端区域选择一段内存空间,对选定的内存空间作为数据段进行保护,设置为只读属性;
B,监听操作系统的地址访问异常中断;
C,当监听到地址访问异常中断时,判断所述任务的栈指针是否达到栈的顶部,如果是,则栈溢出,否则,没有栈溢出。
进一步,步骤B包括如下步骤:
设置任务异常钩子函数,通过任务异常钩子函数监听地址访问异常中断。
或者
设置中断服务程序,通过对应于地址访问异常中断的中断服务程序监听地址访问异常中断。
进一步,在判定任务栈溢出后,还可以包括步骤:
获取该任务的当前信息,保存当前信息或者构造告警消息上报管理站。
上述任务的当前信息可以保存于不易失内存或者文件中,并包括如下信息:任务名称、寄存器信息和任务栈内函数调用信息。而寄存器信息包括程序指针、控制寄存器指针、机器状态寄存器指针、栈指针、数据访问寄存器指针。
进一步,在判定任务栈溢出后,还可以包括步骤:
重新启动发生栈溢出的任务。
通过本发明提供的任务栈溢出的监测方法,在任务栈的末端区域设置只读属性的隔离区,并监听操作系统的地址访问异常中断。当任务栈发生溢出时,将对任务栈内的只读属性的隔离区进行写操作,导致操作系统产生地址访问异常中断,该地址访问异常中断将被监听到并进一步判断任务栈是否发生溢出。所以任务栈溢出可以被及时发现,而且不会因为破坏栈之外的内存空间而对别的任务造成破坏。发生栈溢出的任务当前信息的保存,有助于问题的分析和定位。在监测到任务栈溢出时,通过将该任务重新启动,减小了对其后续处理流程的影响,增强了具备此功能产品的竞争力。
附图说明
图1所示为现有技术中任务栈溢出情况的示意图;
图2所示为本发明的一种任务栈溢出监测方法的流程图。
具体实施方式
本发明的基本思想是,在任务栈的末端区域确定一段内存区域并将其设置为只读属性,作为任务栈与其它内存区域的隔离区;并利用操作系统的如下特点:当操作系统发现存在“试图”对只读属性的内存区域进行写操作时,就产生一个地址访问异常中断,对任务栈的溢出进行监测并进行相应的处理。
如图2所示,本发明的一种任务栈溢出的监测方法,包括如下步骤:
步骤201,确定一位于任务栈末端区域的内存空间,将其设置为只读属性。
操作系统从系统内存中为任务分配任务栈需要的内存空间。在现有技术中,实时操作系统的系统内存一般包含静态数据区和动态数据区。在一些实时操作系统,如VxWoks、pSOS中,动态数据区包含分别用于堆和栈的区域。在这些系统中,用于任务栈的内存空间,既可以从静态数据区中分配,又可以从动态数据区用于栈的区域中分配。而在另外一些实时操作系统,如OSE、Pharos中,动态数据区只有用于堆的区域,没有用于栈的区域。在这些系统中,用于任务栈的内存空间只能从静态数据区中分配。
操作系统为从静态数据区或者动态数据区分配任务栈的内存空间提供API函数。例如,通过名称为taskInit的函数来创建任务,该函数的原型为:int taskInit(WIND_TCB*pTcb,char*name,int priority,int options,char*pStackBase,int stackSize,FUNCPTR entryPt,int arg1,...);
其中,参数name是该任务的名称,参数pStackBase是为任务栈指定的基地址,参数stackSize以字节为单位,是指定的任务栈内存空间的大小。如果参数pStackBase指定的地址位于静态数据区,则操作系统将从静态数据区中为该任务栈分配需要的内存空间。如果参数pStackBase指定的地址位于动态数据区,则操作系统将从动态数据区中为该任务栈分配需要的内存空间。
或者,也可以通过名称为taskSpawn的函数创建任务。对于通过调用该函数创建的任务,操作系统为该任务栈从动态数据区中分配其所需要的内存空间,该函数的原型为:int taskSpawn(char*name,int priority,int options,int stackSize,FUNCPTR entryPt,int arg1,...);
其中,参数name是该任务的名称,参数stackSize以字节为单位,是指定的内存空间的大小(该内存空间包括该任务栈需要内存空间和存储该任务名称需要的空间)。
在任务栈的内存空间已经分配的情况下,可以通过操作系统提供的API函数获得任务栈的首地址等信息,并获得任务栈的大小。
一种在任务栈中确定一段内存空间并将该空间设置为只读属性的方法是,在任务栈的末端区域选择一段大小为系统页表(page)尺寸整数倍、且首地址与页表尺寸对齐的内存区域。然后对选定的内存区域进行页表映射,并将该页表设置为只读属性。该方法适用于在系统内存的静态数据区和动态数据区为任务栈分配的内存空间。
另外一种在任务栈中确定一段内存空间并将其设置为只读属性的方法,应用于为任务栈分配的内存空间位于静态数据区的情况.该方法在任务栈的末端区域选择一段内存空间,对该内存空间的首地址和大小没有限制.其大小可以为1个字节、或一个页表大小或更多,也不需要限定为页表大小的整数倍.然后对选定的内存空间作为数据段进行保护,设置为只读属性.
通常来说,栈是从高地址往低地址方向变化的,表现为一种线形结构。所以,上述任务栈的“末端区域”,指的是任务栈中靠近最低地址的部分。虽然从节省内存空间的角度,上述作为隔离区的内存区域最好位于栈的最低内存地址部分,但是,即使最低地址的内存不包含在隔离区内,也可以实现本发明的方法。
步骤202,监听操作系统的地址访问异常中断。
由于已经在任务栈的末端区域设置了只读属性的内存空间,当任务栈溢出时,必然对任务栈的上述只读属性的内存空间进行写操作,而一旦对只读属性的内存空间进行写操作,操作系统就会产生一个地址访问异常中断。所以,可以通过监听操作系统的地址访问异常中断来捕获任务栈的溢出事件。
一种实现监听操作系统的地址访问异常中断的方法是通过任务异常钩子函数来实现。
首先,需要提供任务异常钩子函数。假定任务异常钩子函数名为excepHook,其函数的原型可以定义如下:
void excepHook(int task,int vecNum,ESFxx*pEsf);
其中,参数task用于指定产生异常的任务标识(ID),参数vecNum是产生异常的中断向量,而参数pEsf是指向产生异常时的寄存器信息的指针。
excepHook函数执行的功能包括,对异常中断向量进行判断,是否为地址访问异常中断,如果是,则获得与任务标识对应的任务,并进一步判定该任务的栈是否发生溢出。
其次,调用系统的钩子安装函数安装任务异常钩子函数。例如在VxWorks操作系统中,可以调用钩子安装函数void excHookAdd(FUNCPTRexcepHook)将任务异常钩子函数添加到系统中。
当一个任务栈溢出时,会对设置为只读属性的内存空间进行写操作,触发操作系统产生一个地址访问异常中断,通常地址访问异常中断向量对应于0x300,操作系统将自动调用用户安装的任务异常钩子函数excepHook,并将任务的标识、异常中断向量,以及当前寄存器指针作为输入参数传递给excepHook。从而实现对地址访问异常中断的监听。
另外一种实现监听操作系统的地址访问异常中断的方法是通过中断服务程序来实现。
首先,需要提供中断服务程序(ISR)。假定中断服务程序名为IntRoutine。
中断服务程序执行的功能包括:首先先清空该中断事件,若不清空该中断事件,则退出中断服务程序后,会再次进入,造成无法响应低优先级别的中断,以及所有的任务均无法获得运行机会。清空中断事件一般通过对中断寄存器的相关比特位进行读/写操作来完成。有些处理器是采用的读取寄存器的值,就立即清空的方式。有些处理器是采用的将寄存器写0或者写1清空的方式。然后查询所有任务的状态,若某个任务的状态为挂起(suspend),并且其任务控制块(TCB)中记录的栈指针(SP)达到栈顶部,则判定此任务的栈溢出。需要注意的是,为避免对任务栈溢出的重复检测,可以对已经发现栈溢出且处于挂起状态没有恢复的任务进行记录,如果一个任务已经被记录了,则可以不将该任务作为触发地址访问异常的任务的候选。
其次,安装中断服务程序。如调用intConnect(int IntVect,FUNCPTRIntRoutine,char*Arg),其中第一个参数为中断向量号,第二个参数为中断服务程序入口函数地址,第三个参数为传递给中断服务程序入口函数的参数。
这样,每当产生地址访问异常中断后,都将调用安装的中断服务程序,从而实现对地址访问异常中断的监听。
步骤203,当监听到地址访问异常中断时,判断对应的任务的栈是否发生溢出。
通过上述步骤的设置,在系统发生地址访问异常中断时,都将被监听到并进行后续的处理,下面分别对应于任务异常钩子函数和中断服务程序进行介绍。
对于任务异常钩子函数,正如上面所介绍的,将同时获得任务的标识,从而可以确定发生地址访问异常中断的任务。但是,也可能该任务的地址访问异常不是由于栈溢出导致的,而是对其他内存操作产生的。为了进一步确定该地址访问异常是由于任务栈溢出导致的,可以检查任务控制块中记录的栈指针达到栈顶部,如果是,则判定任务栈溢出,否则,则不是任务栈溢出。
对于中断服务程序,正如上面对其功能所介绍的,将通过查询任务的状态和栈指针确定发生栈溢出的任务。
在上述对本发明方法的描述中,作为任务栈隔离区的内存空间是在任务栈分配好之后选定的。但是,由于在创建任务的函数中可以指定任务栈的大小以及一些其它信息,所以,可以在创建任务前就根据需要设立隔离区内存空间来确定需要的任务栈的大小。例如,如果准备采用页表映射的方法来对任务栈内的作为隔离区的内存空间进行只读保护,则可以通过如下的步骤确定任务栈的大小以及作为隔离区的内存空间:
首先,将用户指定的任务栈的大小向上取整,调整为页表尺寸的整数倍。例如,用户指定的栈大小为5K字节,而一个页表大小为4K字节,则将该任务的栈大小调整为8K字节。
其次,将调整后的任务栈大小再加上一个页表尺寸的大小作为新的任务栈的大小,然后根据新的任务栈的大小分配内存pAddress,并且将pAddress按照页表尺寸对齐。也就是说分配内存时多分配一个页表尺寸大小的空间。
最后,将多分配的一个页表尺寸大小的空间进行页表映射,将该页表设置为只读属性。
通过上述步骤确定的任务栈的内存空间,既满足了任务运行的需要,又考虑到了在任务栈中设立隔离内存空间需要的内存,从而内存分配更合理。
对内存区域进行页表映射,需要启动系统的虚拟内存管理功能。由于实时操作系统支持仅对部分内存空间进行“虚拟”内存管理,并且内存管理单元(MMU)支持在映射时将虚拟内存和物理内存的编址范围保持一致。这样就可以做到既不产生地址冲突,同时在一定程度上提高内存映射的效率,从而提高了系统处理的性能。
在判定任务栈溢出后,还可以包括如下的步骤:
获取发生栈溢出的任务的当前信息。任务的当前信息可以包括任务名称、寄存器信息以及当前函数调用信息。
对于使用任务异常钩子函数的情况,任务标识、异常中断向量,以及当前寄存器指针作为输入参数传递给excepHook.而对于使用中断服务程序的情况,任务标识和寄存器信息是从是从TCB中获取得到.在获得任务标识和寄存器信息后,可以进一步获得任务的其它当前信息.例如,通过调用函数taskName(int task)获取任务标识所对应的任务的名称。通过当前寄存器指针,进一步获取程序指针、控制寄存器指针、机器状态寄存器指针、堆栈指针、数据访问寄存器指针等寄存器信息。通过调用函数trcStack(REG_SET*pregs,FUNCPTRtracelog,int task),以寄存器指针和任务标识为参数,解析栈溢出前的函数调用信息。
获得任务的当前信息后,可以将这些信息进行保存。可以将任务的当前信息保存在高端内存中或者以文件的方式保存。由于高端内存通常为不易失内存,这样在系统重启后,高端内存的内容仍会保留,从而用于问题的分析与定位。
在中断服务程序退出前,需要再次使能该中断。
为了对任务栈溢出后进行进一步的处理,可以运行一异常处理任务。异常处理任务平时处于阻塞状态,可以通过计数信号量或者发送消息将其激活。任务异常钩子函数或者中断服务程序通过设置计数信号量或者发送消息将其激活。对于中断服务程序,是不允许以阻塞的方式发送消息,必须发出消息后立即返回,这样才不会影响其他的处理。该异常处理任务运行后将栈溢出的任务重启。即先删除该任务后再重新创建该任务。在重新创建该任务时,为避免内存泄漏,可以不为重启的任务分配新的栈空间,而是使用删除前为该任务分配的栈空间,但需要将栈内的内容清空。
异常处理任务也可以在重新启动该任务前首先构造告警消息上报管理站。
但是,有时并不需要所有的任务在发生异常时都重新启动。为了提供更多的灵活性,可以根据任务的重要性来为其设置不同的重新启动门限值。管理站在收到该任务的告警消息后,根据该任务的重新启动门限值,来决定是否允许该任务重启,并将决定结果通知异常处理任务。异常处理任务在收到管理站的通知后,根据其决定结果进行相应的处理,如果需要重新启动该任务,则重新启动。
由于异常处理任务仅执行上述的操作,其分支在测试中可以全部遍历,从而能够准确的获得其任务栈需要的内存空间,在分配了足够大的栈空间后,其自身产生栈溢出的概率为0。
由上面的描述可以看出,本发明提供的任务栈溢出的监测方法,在任务栈的末端区域设置只读属性的隔离区,并监听操作系统的地址访问异常中断。当任务栈发生溢出时,将对任务栈内的只读属性的隔离区进行写操作,导致操作系统产生地址访问异常中断,该地址访问异常中断将被监听到并进一步判断任务栈是否发生溢出。所以任务栈溢出时,可以被及时发现。而且该错误并未对别的任务造成破坏。由于在任务的栈之间设置只读区域进行隔离,某个任务的堆栈溢出,不会造成连锁反应,引起相邻的一个或多个任务栈溢出,所以某个任务的栈溢出,肯定是由于其自身原因造成的,简化了分析定位问题的过程。在监测到任务栈溢出时,进一步将对应的任务重新启动,减小了对其后续处理流程的影响,增强了具备此功能产品的竞争力。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种任务栈溢出的监测方法,应用于静态分配的任务栈,其特征在于,包括如下步骤:
A,在系统内存的静态数据区和动态数据区为任务栈分配的内存空间的情况下,在任务栈的末端区域选择一段大小为系统页表尺寸整数倍、且首地址与页表尺寸对齐的内存区域,然后对选定的内存区域进行页表映射,并将该页表设置为只读属性;在任务栈分配的内存空间位于静态数据区的情况下,在任务栈的末端区域选择一段内存空间,对选定的内存空间作为数据段进行保护,设置为只读属性;
B,监听操作系统的地址访问异常中断;
C,当监听到地址访问异常中断时,判断所述任务的栈指针是否达到栈的顶部,如果是,则栈溢出,否则,没有栈溢出。
2.如权利要求1所述的方法,其特征在于,所述步骤B包括如下步骤:
设置任务异常钩子函数,通过该任务异常钩子函数监听地址访问异常中断。
3.如权利要求1所述的方法,其特征在于,所述步骤B包括如下步骤:
设置中断服务程序,通过中断服务程序监听地址访问异常中断。
4.如权利要求1所述的方法,其特征在于,所述步骤C在判定任务栈溢出后,还包括如下步骤:
获取所述任务的当前信息并保存。
5.如权利要求4所述的方法,其特征在于,所述任务的当前信息保存于不易失内存中或者以文件的形式保存。
6.如权利要求4所述的方法,其特征在于,所述任务的当前信息包括任务名称、寄存器信息和任务栈内函数调用信息中的一项或者多项。
7.如权利要求6所述的方法,其特征在于,所述的寄存器信息包括程序指针、控制寄存器指针、机器状态寄存器指针、栈指针、数据访问寄存器指针。
8.如权利要求1所述的方法,其特征在于,所述步骤C在判定任务栈溢出后,还包括如下步骤:
获取所述任务的当前信息,并构造告警消息上报管理站。
9.如权利要求1所述的方法,其特征在于,所述步骤C在判定任务栈溢出后,还包括如下步骤:
重新启动所述任务。
10.如权利要求9所述的方法,其特征在于,为每个任务分别设置一重新启动门限值,在所述重新启动所述任务前包括如下步骤:
根据所述任务的重新启动门限值确定是否重新启动该任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610113533A CN101154180B (zh) | 2006-09-29 | 2006-09-29 | 一种任务栈溢出的监测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610113533A CN101154180B (zh) | 2006-09-29 | 2006-09-29 | 一种任务栈溢出的监测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101154180A CN101154180A (zh) | 2008-04-02 |
CN101154180B true CN101154180B (zh) | 2010-05-12 |
Family
ID=39255853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610113533A Active CN101154180B (zh) | 2006-09-29 | 2006-09-29 | 一种任务栈溢出的监测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101154180B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102497606B (zh) * | 2011-12-23 | 2015-03-18 | 武汉烽火网络有限责任公司 | 下一代无源光网络中配置信息的下发方法 |
CN102629231B (zh) * | 2012-04-24 | 2016-04-13 | 迈普通信技术股份有限公司 | 一种检测任务堆栈的方法 |
CN103106111B (zh) * | 2013-01-30 | 2016-01-27 | 迈普通信技术股份有限公司 | 多任务操作系统中任务优先级反转的检测系统及方法 |
CN103870244B (zh) * | 2014-02-21 | 2017-01-11 | 北京神舟航天软件技术有限公司 | 一种sparc平台任务栈溢出检测算法 |
CN106776354A (zh) * | 2016-11-11 | 2017-05-31 | 深圳创维数字技术有限公司 | 一种动态堆栈内存管理方法和装置 |
CN107316132A (zh) * | 2017-06-09 | 2017-11-03 | 浪潮金融信息技术有限公司 | 流程控制方法及装置、计算机可读存储介质、终端 |
CN109144756A (zh) * | 2017-06-27 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 一种栈溢出处理的方法及装置 |
CN109240815B (zh) * | 2018-08-24 | 2021-07-23 | 珠海格力电器股份有限公司 | 一种共享堆栈的多任务运行方法、装置及设备 |
CN112395609B (zh) * | 2019-08-15 | 2023-06-09 | 奇安信安全技术(珠海)有限公司 | 应用层shellcode的检测方法及装置 |
CN112395610B (zh) * | 2019-08-15 | 2024-04-16 | 奇安信安全技术(珠海)有限公司 | 内核层shellcode的检测方法及装置 |
WO2021062798A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳市汇顶科技股份有限公司 | 栈溢出的检测方法、装置、电子设备及存储介质 |
CN111124921B (zh) * | 2019-12-25 | 2023-09-26 | 抖音视界有限公司 | 内存越界的检测方法、装置、设备和存储介质 |
CN111240880A (zh) * | 2020-01-10 | 2020-06-05 | 深圳震有科技股份有限公司 | 一种内存溢出的调试方法、智能终端及存储介质 |
CN111193954A (zh) * | 2020-03-05 | 2020-05-22 | 成都金麦客科技有限公司 | 一种Android MV视频后台播放系统 |
CN111428240B (zh) * | 2020-03-20 | 2021-10-15 | 安芯网盾(北京)科技有限公司 | 一种用于检测软件的内存违规访问的方法及装置 |
CN113246134B (zh) * | 2021-05-31 | 2021-11-09 | 上海思岚科技有限公司 | 机器人运动行为控制方法、设备及计算机可读介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578093B1 (en) * | 2000-01-19 | 2003-06-10 | Conexant Systems, Inc. | System for loading a saved write pointer into a read pointer of a storage at desired synchronization points within a horizontal video line for synchronizing data |
-
2006
- 2006-09-29 CN CN200610113533A patent/CN101154180B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578093B1 (en) * | 2000-01-19 | 2003-06-10 | Conexant Systems, Inc. | System for loading a saved write pointer into a read pointer of a storage at desired synchronization points within a horizontal video line for synchronizing data |
Non-Patent Citations (1)
Title |
---|
JP特开平10-105398A 1998.04.24 |
Also Published As
Publication number | Publication date |
---|---|
CN101154180A (zh) | 2008-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101154180B (zh) | 一种任务栈溢出的监测方法 | |
US6516429B1 (en) | Method and apparatus for run-time deconfiguration of a processor in a symmetrical multi-processing system | |
US8949671B2 (en) | Fault detection, diagnosis, and prevention for complex computing systems | |
US8612389B2 (en) | Method and apparatus for discovering application configuration files in a system | |
US8352940B2 (en) | Virtual cluster proxy to virtual I/O server manager interface | |
US7055071B2 (en) | Method and apparatus for reporting error logs in a logical environment | |
US6269478B1 (en) | Monitoring method for recognizing endless loops and blocked processes in a computer system using task state comparisons | |
US6182243B1 (en) | Selective data capture for software exception conditions | |
CN109164780B (zh) | 一种基于边缘计算的工业现场设备控制方法、装置及系统 | |
CN100405311C (zh) | 用于计算机系统中的多个分区的错误监视的方法 | |
CN102141947B (zh) | 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统 | |
CN102971715B (zh) | 处理器装置以及程序 | |
US8516462B2 (en) | Method and apparatus for managing a stack | |
CN108628740A (zh) | 一种文件描述符泄露检测方法及装置 | |
US7765434B2 (en) | Resource efficient software tracing for problem diagnosis | |
US6697971B1 (en) | System and method for detecting attempts to access data residing outside of allocated memory | |
US20090300434A1 (en) | Clearing Interrupts Raised While Performing Operating System Critical Tasks | |
CN114253825B (zh) | 内存泄漏检测方法、装置、计算机设备和存储介质 | |
CN113220495B (zh) | 一种进程异常事件处理方法、装置、电子设备及存储介质 | |
JP2012247937A (ja) | 情報処理装置、ログ記憶制御プログラムおよびログ記憶制御方法 | |
CN107085514A (zh) | 共享库升级方法及装置 | |
KR20050033327A (ko) | 실시간 운영체제 기반의 메모리 관리 시스템 | |
CN113381895B (zh) | 网络故障的检测方法及装置 | |
KR100206472B1 (ko) | 전전자교환기에서 시스템 장애관리 및 복구방법 | |
WO2009074778A1 (en) | Exception information collation |
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 |