一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种错误信息处理方法、装置及存储介质与流程

2021-10-24 06:16:00 来源:中国专利 TAG:
1.本技术涉及计算机信息处理领域,尤其涉及一种错误信息处理方法、装置及存储介质。
背景技术
::2.在系统引导程序启动过程中,会对计算机硬件进行检测,当某些区域的内存出现严重错误(fatalerror)时,后续操作仍会访问已经发生fatalerror的内存,从而不断产生中断,最终导致系统宕机。技术实现要素:3.本技术人创造性地提供一种错误信息处理方法、装置及存储介质。4.根据本技术实施例第一方面,提供一种错误信息处理方法,该方法包括在内存错误触发第一中断的情况下,执行以下操作:收集内存错误的错误信息,错误信息包括出现内存错误的第一内存区域;获取用于写入日志信息的第二内存区域,判断第二内存区域是否包含第一内存区域,若是,则跳过将日志信息写入第二内存区域的步骤。5.根据本技术一实施例,在收集内存错误的错误信息之前,该方法还包括:在内存错误触发第一中断的情况下,记录内存错误的错误信息。6.根据本技术一实施例,获取用于写入日志信息的第二内存区域,包括:从错误记录序列化表中定义的系统内存获取用于写入日志信息的第二内存区域。7.根据本技术一实施例,在跳过将日志信息写入第二内存区域的步骤之后,该方法还包括:将日志信息写入第二内存区域的备用内存区域。8.根据本技术一实施例,在将日志信息写入第一内存区域的备用内存区域之前,该方法还包括:在系统初始化时,预留第三内存区域作为第二内存区域的备用内存区域。9.根据本技术一实施例,该方法还包括:获取用于处理第一中断的第一处理程序需要使用的第四内存区域,判断第四内存区域是否包含第一内存区域,若是,则将第一内存区域标记为不可用。10.根据本技术一实施例,在将第一内存区域标记为不可用之后,该方法还包括:获取不包含第一内存区域的第五内存区域;将第五内存区域分配给第一处理程序使用。11.根据本技术一实施例,第一处理程序包崩溃内核程序,相应地,第一内存区域标记为不可用,包括:修改内核崩溃转储工具提供给崩溃内核程序的系统内存映射表,将系统内存映射表中的第一内存区域标记为不可用。12.根据本技术实施例第二方面,提供一种错误信息处理装置,该装置包括:错误信息收集模块,用于收集内存错误的错误信息,错误信息包括出现内存错误的第一内存区域;日志信息写入模块,用于获取用于写入日志信息的第二内存区域,判断第二内存区域是否包含第一内存区域,若是,则跳过将日志信息写入第二内存区域的步骤。13.根据本技术实施例第三方面,提供一种计算机可读存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项的错误信息处理方法。14.本技术实施例提供一种错误信息处理方法、装置及存储介质,该方法在内存错误触发系统中断(例如mce中断)后,会收集内存错误的错误信息,包括出现内存错误的内存区域;之后在需要写入日志信息时,会增加以下操作以避免因为相同的内存错误再次触发系统中断:获取用于写入日志信息的内存区域,判断该内存区域是否包出现内存错误的内存区域,若是,则跳过将日志信息写入该内存区域的步骤。如此,就不会在将日志信息写入出现内存错误的内存区域时又再次触发系统中断,从而避免了因不断产生中断而导致的系统宕机。15.需要理解的是,本技术的实施并不需要实现上面的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本技术的其他实施方式还能够实现上面未提到的有益效果。附图说明16.通过参考附图阅读下文的详细描述,本技术示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本技术的若干实施方式,其中:17.在附图中,相同或对应的标号表示相同或对应的部分。18.图1为本技术错误信息处理方法一实施例的实现流程示意图;19.图2为本技术错误信息处理方法另一实施例的实现流程示意图;20.图3为本技术错误信息处理装置一实施例的组成结构示意图。具体实施方式21.为使本技术的目的、特征、优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。22.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。23.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。24.图1示出了本技术错误信息处理方法一实施例的实现流程。参考图1,该方法包括在内存错误触发第一中断的情况下,执行以下操作:操作s110,收集内存错误的错误信息,错误信息包括出现内存错误的第一内存区域;操作s120,获取用于写入日志信息的第二内存区域,判断第二内存区域是否包含第一内存区域,若是,则跳过将日志信息写入第二内存区域的步骤。25.其中,第一中断主要指内存错误触发的操作系统中断,而本技术错误信息处理方法也主要是由操作系统来执行的。26.进一步地,本技术错误信息处理方法通常是由操作系统中与第一中断对应的中断处理程序来执行。例如,假设第一中断是机器检测异常(machinecheckexception,mce)中断,则本技术错误信息处理方法则是通过与mce中断对应的mce中断处理程序来执行的。27.在操作s110中,内存错误的错误信息通常是在触发第一中断的情况下,由固件(firmware)通过中断处理器(interrupthandler)等工具从相关的cpu寄存器中取到并放入与第一中断对应的寄存器中的,例如,mce寄存器(mcebank)中的。其中,常用的固件包括:统一可扩展固件接口(unifiedextensiblefirmwareinterface,uefi),或基本输入输出系统(basicinputoutputsystem,bios)等。28.如此,当操作系统中通过第一中断处理程序对第一中断进行处理时就可以从与第一中断对应的寄存器中收集到内存错误的错误信息,包括出现内存错误的第一内存区域。29.出现内存错误的第一内存区域通常是一个内存地址范围或某个具体的内存页号。30.一旦获得了出现内存错误的第一内存区域就可以与后续要操作的内存区域进行比对,若后续要操作的内存区域包含第一内存区域,则可以采取某些措施避免后续操作再次访问第一内存区域,从而避免再次触发第一中断。31.在操作s120中,之所以获取用于写入日志信息的第二内存区域,是因为在操作系统对第一中断进行处理时,通常都需要在指定的第二内存区域中写入相关的日志信息,特别是引起该中断的错误信息以便维修人员分析引发中断的原因并修复相关问题。若第二内存区域中包含出现内存错误的第一内存区域,则在写入日志信息时会再次触发第一中断。32.因此,在本技术实施例提供的错误信息处理方法中,会在写入日志信息之前,首先获取用于写入日志信息的第二内存区域并与出现内存错误的第一内存区域进行比对,并增加以下判断:若第二内存区域包含第一内存区域,则可跳过将日志信息写入第二内存区域的步骤,从而可以避免再次访问第一内存区域,从而避免再次触发第一中断。33.不难看出,本实施例错误信息处理方法在内存错误触发系统中断(例如mce中断)后,通过操作s110获取出现内存错误的第一内存区域;之后在需要写入日志信息之前,先获取用于写入日志信息的第二内存区域,并增加判断第二内存区域是否包含出现内存错误的第一内存区域的处理逻辑,一旦发现第二内存区域是包含出现内存错误的第一内存区域,则跳过将日志信息写入该内存区域的步骤。34.如此,就可以避免因处理第一中断时所进行的日志信息写入操作而不断触发第一中断,进而导致的系统宕机的问题。35.需要说明的是图1所示的本实施例仅为本技术一种错误信息处理方法最基本的一个实施例,实施者还可在其基础上进行进一步细化和扩展。36.根据本技术一实施例,在收集内存错误的错误信息之前,该方法还包括:在内存错误触发第一中断的情况下,记录内存错误的错误信息。37.为了确保操作系统在处理第一中断时,可以获取到出现内存错误的第一内存区域,需要确保在收集内存错误的错误信息之前,记录内存错误的错误信息。38.如前所述,通常在内存错误触发第一中断的情况下,固件会通过中断处理器(interrupthandler)等工具从相关的cpu寄存器中取到并放入与第一中断对应的寄存器中。当然,不同的操作系统或固件也可能会存在差异或发生变化,实施者也可以通过其他方式,例如,修改固件中的中断处理器,或增加自定义的中断处理步骤,将内存错误的错误信息(包括出现内存错误的第一内存区域)记录到操作系统中与第一中断对应的中断处理程序可以访问到的寄存器或其他数据存储介质中。39.根据本技术一实施例,获取用于写入日志信息的第二内存区域,包括:从错误记录序列化表(errorrecordserializationtable,erst)中定义的系统内存获取用于写入日志信息的第二内存区域。40.操作系统和固件进行交互的时候,通常会使用到erst表中定义的系统内存去传送信息,也就是用于写入日志信息的第二内存区域。因此,在本实施例中,使用erst中定义的系统内存来获取用于写入日志信息的第二内存区域。如此,可方便快捷地获取用于写入日志信息的第二内存区域41.根据本技术一实施例,在跳过将日志信息写入第二内存区域的步骤之后,该方法还包括:将日志信息写入第二内存区域的备用内存区域。42.通常在跳过将日志信息写入第二内存区域的步骤之后,可能就无法再获取与第一中断相关的日志信息了,这对于修复引发第一中断的相关问题非常不利。43.在本技术实施中,在跳过将日志信息写入第二内存区域的步骤之后,会获取备用的内存区域,并将日志信息写入该内存区域,从而确保既不会再次触发第一中断,还可以保留日志信息以便分析引发第一中断的原因和修复问题。44.备用的内存区域可以是动态随机确定的,但要确保将随机分配的备用内存区域传递给后续的处理过程,以便可以从该备用的内存区域获取日志信息;备用的内存区域也可以是预先设定的,如此则无需传递备用内存区域,可直接使用预先设定的备用内存区域获取日志信息。45.根据本技术一实施例,在将日志信息写入第一内存区域的备用内存区域之前,该方法还包括:在系统初始化时,预留第三内存区域作为第二内存区域的备用内存区域。46.在本实施例中,第二内存区域的备用内存区域就是在系统初始化时预留的一个内存区域,并可在初始化时将该内存区域设置为第二内存区域的备用内存区域。47.如此,在第二内存区域中包含出现错误的第一内存区域的情况下,就可以将日志信息写入该备用的内存区域。48.根据本技术一实施例,该方法还包括:获取用于处理第一中断的第一处理程序需要使用的第四内存区域,判断第四内存区域是否包含第一内存区域,若是,则将第一内存区域标记为不可用。49.在处理第一中断的过程中还可能会调用到其他处理程序,例如,如果第一中断是由一个错误等级较高并会触发系统重启(panic)的错误引发的,则可能除了要记录日志信息之外还需要执行系统重启,而系统重启程序就是这种情况下需要调用到的其他处理程序,即第一处理程序。50.若第一处理程序也需要访问内存区域,而该内存区域恰好包含了内存出错的第一内存区域,则会再次访问第一内存区域,进而再次触发第一中断。51.因此,在本实施例中,除了会检测写入日志信息的第二内存区域,还会获取第一处理程序需要使用的内存区域,即第四内存区域。之后,增加判断第四内存区域是否包含出现内存错误的第一内存区域的逻辑,一旦发现第四内存区域是包含出现内存错误的第一内存区域,则采取相应措施,使得第一处理程序不会使用内存错误的第一内存区域,例如,将第一内存区域标记为不可用。52.如此,就可以避免因处理第一中断时调用第一处理程序而再次访问发生错误的第一内存区域,而不断触发第一中断,进而导致的系统宕机的问题。53.根据本技术一实施例,在将第一内存区域标记为不可用之后,该方法还包括:获取不包含第一内存区域的第五内存区域;将第五内存区域分配给第一处理程序使用。54.如前所述,一旦将第一内存区域标记为不可用,可能包含第一内存区域的第四内存区域就无法满足第一处理程序存储数据的需要而导致第一处理程序无法成功执行。55.在本技术实施例中会在这种情况下,获取不包含第一内存区域的第五内存区域;将第五内存区域分配给第一处理程序使用以确保第一处理程序能顺利执行。56.根据本技术一实施例,第一处理程序包崩溃内核程序,相应地,第一内存区域标记为不可用,包括:修改内核崩溃转储工具提供给崩溃内核程序的系统内存映射表,将系统内存映射表中的第一内存区域标记为不可用。57.其中,内核崩溃转储工具指在系统发生崩溃时,可及时将奔溃时系统状态和重要信息保存下来的系统工具,例如kdump。58.崩溃内核程序指主内核程序已经奔溃的情况下可以使用的备用内核程序,例如,linux操作系统中的crashkernel。59.系统内存映射表指将虚拟内存或分配用于某一特定用途的内存映射到实际物理内存地址的表,例如,kdump提供给crashkernel的e820table。60.需要说明的是,以上本技术错误信息处理方法各实施例只是在图1所示的基础实施例之上进行细化和扩展的示例性说明。实施者还可根据具体实施需求和实施条件对上述实施方式进行灵活组合形成新的实施例。61.图2示出了本技术错误信息处理方法的另一具体实施例,该实施例应用于计算机在硬件检测的过程中发现内存错误后触发操作系统异常mce的场景下。62.如图2所示,假设硬件管理平台21(hardwareplatform),例如,内存控制器,对内存页帧20(pageframe)进行检测,发现有两个内存页:内存页201(地址为0x2a3ed018)和内存页202(0xc400)发生错误,于是向处理器22(processor)发送中断号18的mce中断(int18mce);处理器22通过拉低msmi管脚产生msmi中断发送给固件23(firmware);固件23内设置有系统管理中断(systemmanagementinterrupt,smi)处理器,例如,smihandler231。smihandler231会收集出错的内存地址等错误信息,并将收集到的错误信息存储到mce寄存器中;之后,固件23发送代表mce的中断请求(interruptrequest,irq)给操作系统内核24(oskernel);操作系统内核24收到该mceirq后,从中断向量表25(idttable)中查找与mce对应的中断向量(x86_trap_mc),并从中获取mce中断处理程序26(mceinterruptflow)的入口地址;然后,调用mce中断处理程序26执行相应的处理过程。从程序调用关系和执行顺序来讲,mce中断处理程序主要执行:machine_check‑>do_mce‑>machine_check_vector‑>do_machine_check。当执行到do_machine_check时,mce中断处理程序26会调用中断处理器27(interrupthandler)执行以下操作:63.操作s210,从mce寄存器中读取出错的内存地址;64.其中,出错的内存地址就smihandler231在收集出错信息时放入mce寄存器中的。65.操作s220,判断错误等级是否会触发系统panic,若会触发,则继续操作s230,若不会触发,则进行其他相应处理;66.其中,错误等级主要指触发mce中断的错误等级,不同系统可能会有不同定义。但通常系统会定义哪些错误等级会触发系统panic。67.若错误等级较低,可以自动纠正,系统仍然可以继续运行。此时,在使用相应的内存区域时,很可能已没有之前所出现的错误,也就不会再次触发相应的中断。因此,可不进行额外处理,只需等待该错误的自行修复以减少处理环节,并最大可能地保持内存区域的可用性。68.若错误等级较高,使得系统无法继续运行,则通常会将该错误等级定义为触发系统panic的错误等级。此时,一旦发现这一等级的错误,就会触发紧急预案,例如操作s230所执行的mce_panic程序,进行挽救。69.在操作s230所执行的mce_panic程序中,包括两个操作,1)调用apeiwrite接口在内存页201中写入日志信息;2)往内存中复制出错信息。70.为了避免上述两个操作再次触发内存页201和内存页202发生错误的异常而造成无限循环,本实施例在执行这两个操作之前,增加了以下的检测和判断逻辑:71.操作s240,判断待操作的内存地址是否是出错的内存地址,若否,则继续操作s250,若是,则继续操作s260;72.其中,对于“apeiwrite”操作来说,待操作的内存地址可通过erst中定义的用于处理mce的系统内存来获取;对于“复制出错信息”的操作来说,待操作的内存地址可通过kdump服务提供给crashkernel的e820table中来获取。73.操作s250,调用apeiwrite接口写入日志信息;74.操作s260,跳过写入日志信息,修改e820table,把发生严重错误的内存页设置为不可用;75.之后,就可执行操作s270,启动kdump系统,调用crashkernel复制出错信息。76.如此,当apeiwrite接口写入日志信息所使用的内存区域包含发生错误的内存页时,就不再往该内存页写入日志信息,而后续启动kdump系统,调用crashkernel复制出错信息时也不会再使用到发生严重错误的内存页,进而避免了再次触发中断号18的mce异常。77.需要说明的是,图2所示的实施例仅为本技术错误信息处理方法的示例性说明,而非对本技术错误信息处理方法实施方式和应用场景的限定。实施者可根据具体的实施条件,采用任何适用的实施方式,应用于任何适用的应用场景中。78.进一步地,本技术实施例还提供一种错误信息处理装置。如图3所示,该装置30包括:错误信息收集模块301,用于收集内存错误的错误信息,错误信息包括出现内存错误的第一内存区域;日志信息写入模块302,用于获取用于写入日志信息的第二内存区域,判断第二内存区域是否包含第一内存区域,若是,则跳过将日志信息写入第二内存区域的步骤。79.根据本技术一实施例,该装置30还包括:错误信息记录模块,用于在内存错误触发第一中断的情况下,记录内存错误的错误信息。80.根据本技术一实施例,日志信息写入模块302具体用于从错误记录序列化表中定义的系统内存获取用于写入日志信息的第二内存区域。81.根据本技术一实施例,日志信息写入模块302还用于将日志信息写入第二内存区域的备用内存区域。82.根据本技术一实施例,该装置30还包括:备用内存区域预留模块,用于在系统初始化时,预留第三内存区域作为第二内存区域的备用内存区域。83.根据本技术一实施例,该装置30还包括:内存区域处理模块,用于获取用于处理第一中断的第一处理程序需要使用的第四内存区域,判断第四内存区域是否包含第一内存区域,若是,则将第一内存区域标记为不可用。84.根据本技术一实施例,该装置30还包括:内存区域获取模块,用于获取不包含第一内存区域的第五内存区域;内存区域分配模块,将第五内存区域分配给第一处理程序使用。85.根据本技术一实施例,第一处理程序包崩溃内核程序,相应地,内存区域处理模块具体用于修改内核崩溃转储工具提供给崩溃内核程序的系统内存映射表,将系统内存映射表中的第一内存区域标记为不可用。86.根据本技术实施例第三方面,提供一种计算机可读存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项错误信息处理方法。87.这里需要指出的是:以上针对错误信息处理装置实施例的描述和以上针对计算机可读存储介质实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本技术对错误信息处理装置实施例的描述和对计算机可读存储介质实施例的描述尚未披露的技术细节,请参照本技术前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。88.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。89.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。90.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。91.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。92.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。93.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、rom、磁碟或者光盘等各种可以存储程序代码的介质。94.以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜