CN110427272A - 接口函数定位方法、装置及网络设备 - Google Patents
接口函数定位方法、装置及网络设备 Download PDFInfo
- Publication number
- CN110427272A CN110427272A CN201910680765.7A CN201910680765A CN110427272A CN 110427272 A CN110427272 A CN 110427272A CN 201910680765 A CN201910680765 A CN 201910680765A CN 110427272 A CN110427272 A CN 110427272A
- Authority
- CN
- China
- Prior art keywords
- semaphore
- stack
- thread
- interface function
- signal
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种接口函数定位方法、装置及网络设备。所述网络设备运行多个线程,多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过信号量访问数据,待访问数据的第二线程需等待信号量被释放后,获取信号量并访问数据,网络设备为每一个线程分配对应的信号栈,信号栈用于存放线程已获取的信号量,该方法包括:判断第一线程对应的信号栈的栈顶信号量是否死锁;若栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与栈顶信号量对应的接口函数;将栈顶信号量对应的接口函数,确定为问题接口函数。通过本发明可快速定位到问题接口函数。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种接口函数定位方法、装置及网络设备。
背景技术
网络设备普遍支持多线程处理。当多个线程同时访问同一数据时,会发生访问冲突。为了避免冲突,通常引入信号量机制。
线程通过接口函数获取信号量,并通过获取的信号量访问数据。在同一时刻,只允许一个线程获取信号量并访问数据,其它线程必须等到信号量释放后,才可以获取信号量并访问数据。
若获取到信号量的线程遗漏释放信号量,则其它线程将持续处于等待状态,无法继续执行。又或者,多个线程互相申请对方已获取到的信号量,也会导致线程无法继续执行。以上情况均称为信号量死锁。
在发生信号量死锁时,需要定位是哪一个接口函数出现问题。目前主要通过逐一排查需要使用该死锁信号量的接口函数来定位,该定位方式效率较低。
发明内容
有鉴于此,本发明为了解决现有信号量死锁时定位问题接口函数的效率较低的问题,提出一种接口函数定位方法、装置及网络设备,用以在信号量死锁时,快速定位到问题接口函数。
为实现上述发明目的,本发明提供了如下技术方案:
第一方面,本发明提供一种接口函数定位方法,应用于网络设备,所述网络设备运行多个线程,所述多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过所述信号量访问所述数据,待访问所述数据的第二线程需等待所述信号量被释放后,获取所述信号量并访问所述数据,所述网络设备为每一个线程分配对应的信号栈,所述信号栈用于存放线程已获取的信号量,所述方法包括:
判断所述第一线程对应的信号栈的栈顶信号量是否死锁;
若所述栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与所述栈顶信号量对应的接口函数;
将所述栈顶信号量对应的接口函数,确定为问题接口函数。
可选的,所述方法还包括:
若所述第一线程通过第一接口函数获取到第一信号量,记录所述第一信号量与所述第一接口函数的对应关系;
将所述第一信号量压入所述第一线程对应的信号栈中。
可选的,所述判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
以预设时间间隔,获取所述第一线程对应的信号栈的栈顶信号量;
若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,累计次数;
若所述次数大于预设的次数阈值,确定所述栈顶信号量死锁。
可选的,若所述第一线程释放已获取的第二信号量,所述判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
获取所述栈顶信号量;
若所述第二信号量与所述栈顶信号量不同,确定所述栈顶信号量死锁。
可选的,若所述第一线程释放已获取的第二信号量,所述方法还包括:
从本地记录的信号量与接口函数的对应关系中,查找第一对应关系,所述第一对应关系包括所述第二信号量;
删除所述第一对应关系;
将所述第二信号量从所述第一线程对应的信号栈弹出。
第二方面,本发明提供一种接口函数定位装置,应用于网络设备,所述网络设备运行多个线程,所述多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过所述信号量访问所述数据,待访问所述数据的第二线程需等待所述信号量被释放后,获取所述信号量并访问所述数据,所述网络设备为每一个线程分配对应的信号栈,所述信号栈用于存放线程已获取的信号量,所述装置包括:
死锁判断单元,用于判断所述第一线程对应的信号栈的栈顶信号量是否死锁;
接口函数查找单元,用于若所述栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与所述栈顶信号量对应的接口函数;
接口函数确定单元,用于将所述栈顶信号量对应的接口函数,确定为问题接口函数。
可选的,所述装置还包括:
对应关系记录单元,用于若所述第一线程通过第一接口函数获取到第一信号量,记录所述第一信号量与所述第一接口函数的对应关系;
信号量入栈单元,用于将所述第一信号量压入所述第一线程对应的信号栈中。
可选的,所述死锁判断单元判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
获取所述第一线程对应的信号栈的栈顶信号量;
若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,累计次数;
若所述次数大于预设的次数阈值,确定所述栈顶信号量死锁。
可选的,所述死锁判断单元判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
若所述第一线程释放已获取的第二信号量,获取所述栈顶信号量;
若所述第二信号量与所述栈顶信号量不同,确定所述栈顶信号量死锁。
可选的,所述装置还包括:
对应关系查找单元,用于若所述第一线程释放已获取的第二信号量,从本地记录的信号量与接口函数的对应关系中,查找第一对应关系,所述第一对应关系包括所述第二信号量;
对应关系删除单元,用于删除所述第一对应关系;
信号量出栈单元,用于将所述第二信号量从所述第一线程对应的信号栈弹出。
第三方面,本发明提供一种网络设备,所述设备包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述接口函数定位方法。
第四方面,本发明提供一种机器可读存储介质,所述机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上述接口函数定位方法。
由以上描述可以看出,本发明中,网络设备为每一个线程分配对应的信号栈,信号栈用于存放线程已获取的信号量。若不存在信号量死锁,则信号栈中的信号量会依次出栈;若存在信号量死锁,则死锁信号量必定位于栈顶。为此,本发明对信号栈的栈顶信号量进行检测。若栈顶信号量死锁,则从本地记录的信号量与接口函数的对应关系中,查找与栈顶信号量对应的接口函数。该接口函数为当前正在使用该栈顶信号量的接口函数。技术人员通过检测该接口函数对应代码,找到信号量死锁的原因。可见,本发明无需对所有需要使用该信号量的接口函数进行排查,即可快速定位到问题接口函数,定位效率明显提升。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例示出的一种接口函数定位方法流程图;
图2是本发明实施例示出的一种信号量获取实现流程;
图3是本发明实施例示出的一种步骤101的实现流程;
图4是本发明实施例示出的另一种步骤101的实现流程;
图5是本发明实施例示出的一种信号量释放流程;
图6是本发明实施例示出的一种接口函数定位装置的结构示意图;
图7是本发明实施例示出的一种网络设备的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
在本发明实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明实施例。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本发明实施例提供一种接口函数定位方法。该方法中,网络设备为每一个线程分配对应的信号栈,该信号栈用于存放线程已获取的信号量。若网络设备存在信号量死锁,则死锁信号量必定位于栈顶。为此,本发明实施例对信号栈的栈顶信号量进行检测。若栈顶信号量死锁,则从本地记录的信号量与接口函数的对应关系中,查找与栈顶信号量对应的接口函数。将该接口函数确定为问题接口函数。
为了使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明实施例执行详细描述:
参见图1,为本发明实施例提供的接口函数定位方法流程图。该流程应用于网络设备。该网络设备同时运行多个线程。
多个线程中的第一线程通过接口函数获取访问数据的信号量。这里,获取信号量即获取数据的访问权限。第一线程通过获取的信号量访问数据。
待访问该数据的第二线程需要等到第一线程释放信号量后,才能获取信号量并访问数据。
这里,第一线程、第二线程只是为便于区分而进行的命名,并非用于限定。
如图1所示,该流程可包括以下步骤:
步骤101,网络设备判断第一线程对应的信号栈的栈顶信号量是否死锁。
本发明实施例中,网络设备为每一个线程分配对应的信号栈。利用信号栈存放线程已获取的信号量。
若不存在信号量死锁,则信号栈中的信号量会依次弹出。比如,信号量按照信号量1~信号量5的顺序依次入栈,则按照信号量5~信号量1的顺序依次出栈。
若存在信号量死锁,则该死锁信号量一定位于栈顶。为此,本发明实施例需要判断栈顶信号量是否死锁。
网络设备判断栈顶信号量是否死锁的过程,在下文中描述,这里暂不赘述。
步骤102,若栈顶信号量死锁,网络设备从本地记录的信号量与接口函数的对应关系中,查找与栈顶信号量对应的接口函数。
即,通过查询本地记录的信号量与接口函数的对应关系,快速找到当前获取该栈顶信号量的接口函数。
步骤103,网络设备将栈顶信号量对应的接口函数,确定为问题接口函数。
技术人员仅需排查该接口函数的代码,即可找到导致死锁的原因。
至此,完成图1所述流程。
通过图1所示流程可以看出,本发明实施例中,网络设备本地记录信号量与接口函数的对应关系,在发生信号量死锁时,通过查询信号量与接口函数的对应关系,找到当前使用该死锁信号量的接口函数。技术人员通过排查该接口函数的代码,找到死锁的原因。可见,本发明实施例可快速定位到问题接口函数。
可选的,作为一个实施例,网络设备还可执行如下信号量获取流程。参见图2,为本发明实施例示出的一种信号量获取实现流程。
如图2所示,该流程可包括以下步骤:
步骤201,若第一线程通过第一接口函数获取到第一信号量,网络设备记录第一信号量与第一接口函数的对应关系。
信号量与接口函数的对应关系可记录在待访问数据的数据结构中,如下所示,为一种数据结构示例:
其中,ulHashListSem字段记录用于访问数据的信号量,*pstFunList字段记录当前获取该信号量的接口函数,即信号量的持有者。
当然,信号量与接口函数的对应关系也可记录在网络设备可访问到的任意存储区域,本发明实施例对此不作限定。
通过本步骤,网络设备记录当前获取到第一信号量的接口函数。
这里,第一接口函数、第一信号量只是为便于区分而进行的命名,并非用于限定。
步骤202,网络设备将第一信号量压入第一线程对应的信号栈。
即,将第一线程获取到的信号量,压入第一线程对应的信号栈中。
需要说明的是,网络设备在为线程分配信号栈时,会预估线程正常运行时所需栈空间。在该预估的栈空间的基础上,再预留一部分冗余空间,以防止信号栈溢出。比如,某线程正常运行时,大致需要存放10个信号量的栈空间,则可为该线程分配存放20个信号量的栈空间,以充分满足该线程的使用需求。
至此,完成图2所述流程。
通过图2所示流程,网络设备完成信号量获取时的对应关系建立、以及信号量入栈处理。
可选的,作为一个实施例,下面对步骤101中网络设备判断第一线程对应的信号栈的栈顶信号量是否死锁进行描述。参见图3,为本发明实施例示出的一种步骤101的实现流程。
如图3所示,该流程可包括以下步骤:
步骤301,网络设备以预设时间间隔,获取第一线程对应的信号栈的栈顶信号量。
即,周期性获取栈顶信号量。
步骤302,若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,网络设备累计次数。
步骤303,若累计次数大于预设的次数阈值,网络设备确定栈顶信号量死锁。
如前所述,若不存在信号量死锁,信号栈中的信号量会正常出栈,不会长时间停留在信号栈中。
为此,本发明实施例统计连接获取到相同栈顶信号量的次数。若次数大于预设的次数阈值,说明栈顶信号量长时间未出栈,可能导致其它等待获取该信号量的线程无法继续执行,因此,确定该栈顶信号量死锁。
至此,完成图3所示流程。
通过图3所示流程,网络设备可周期性确定栈顶信号量是否死锁。
可选的,作为一个实施例,若第一线程释放已获取的第二信号量,网络设备可执行步骤101。参见图4,为本发明实施例示出的另一种步骤101的实现流程。这里,第二信号量只是为便于描述而进行的命名,并非用于限定。
如图4所示,该流程可包括以下步骤:
步骤401,网络设备获取第一线程对应的信号栈的栈顶信号量。
步骤402,若第二信号量与栈顶信号量不同,网络设备确定栈顶信号量死锁。
若第二信号量与栈顶信号量不同,说明第二信号量不满足出栈顺序要求,在第二信号量之后入栈的栈顶信号量未出栈,即,栈顶信号量被遗漏释放,则确定栈顶信号量死锁,转步骤102。
至此,完成图4所示流程。
通过图4所示流程,网络设备可在释放信号量时,确定栈顶信号量是否死锁。
可选的,作为一个实施例,网络设备还可执行如下信号量释放流程。参见图5,为本发明实施例示出的一种信号量释放流程。
如图5所示,该流程可包括以下步骤:
步骤501,若第一线程释放已获取的第二信号量,从本地记录的信号量与接口函数的对应关系中,查找第一对应关系。
该第一对应关系包括第二信号量。
这里,第一对应关系只是为便于区分而进行的命名,并非用于限定。
步骤502,网络设备删除第一对应关系。
即,在释放信号量时,删除本地记录的获取该信号量的接口函数的信息。
步骤503,网络设备将第二信号量从第一线程对应的信号栈弹出。
至此,完成图5所示流程。
通过图5所示流程,网络设备完成信号量释放时的对应关系删除、以及信号量出栈处理。
下面通过具体实施例对本发明实施例提供的方法进行描述:
网络设备存储有数据1~数据5,各数据需要通过信号量访问,分别记为信号量1~信号量5。网络设备并发运行线程1和线程2,并分别为线程1和线程2分配对应的信号栈,记为信号栈1和信号栈2。
当线程1通过接口函数11获取到信号量1时,网络设备记录信号量1与接口函数11的对应关系,如表1所示。
信号量 | 接口函数 |
信号量1 | 接口函数11 |
表1
网络设备将信号量1压入线程1对应的信号栈1,如表2所示。
线程1对应的信号栈1 |
信号量1 |
表2
当线程2通过接口函数21获取到信号量2时,网络设备记录信号量2与接口函数21的对应关系,并添加到表1中。添加后,如表3所示。
信号量 | 接口函数 |
信号量1 | 接口函数11 |
信号量2 | 接口函数21 |
表3
网络设备将信号量2压入线程2对应的信号栈2,如表4所示。
线程2对应的信号栈2 |
信号量2 |
表4
若线程1依次通过接口函数12、接口函数13、接口函数14分别获取到信号量3、信号量4、信号量5,则网络设备本地记录信号量与接口函数的对应关系,如表5所示。
信号量 | 接口函数 |
信号量1 | 接口函数11 |
信号量2 | 接口函数21 |
信号量3 | 接口函数12 |
信号量4 | 接口函数13 |
信号量5 | 接口函数14 |
表5
信号栈1中的信号量,如表6所示。
线程1对应的信号栈1 |
信号量5 |
信号量4 |
信号量3 |
信号量1 |
表6
当线程1释放信号量5时,网络设备根据信号量5,查询表5,找到包括信号量5的对应关系(表5中最后一条对应关系),删除该对应关系。删除后,如表7所示。
信号量 | 接口函数 |
信号量1 | 接口函数11 |
信号量2 | 接口函数21 |
信号量3 | 接口函数12 |
信号量4 | 接口函数13 |
表7
网络设备获取信号栈1(表6)的栈顶信号量(信号量5),该栈顶信号量与当前释放的信号量(信号量5)相同,网络设备将信号量5从线程栈1中弹出。弹出后信号栈1中的信号量,如表8所示。
线程1对应的信号栈1 |
信号量4 |
信号量3 |
信号量1 |
表8
网络设备周期性监测各信号栈的栈顶信号量,以确定栈顶信号量是否死锁。
以信号栈1为例,网络设备周期性获取信号栈1的栈顶信号量(表8中的信号量4)。若连续获取到信号量4的次数大于预设的次数阈值,说明信号量4长时间未释放,则认为信号量4死锁。若此时线程2等待获取信号量4,则线程2无法继续执行。
网络设备根据已确定死锁的信号量4,查询表7,找到当前使用信号量4的接口函数(接口函数13)。通过检测接口函数13的代码,可找到信号量4死锁的原因。
此外,在线程释放信号量时,网络设备也可能检测到信号量死锁。
仍以线程1为例,此时信号栈1中的信号量如表8所示。若线程1释放信号量3,则网络设备获取信号栈1的栈顶信号量(信号量4)。该栈顶信号量与当前释放的信号量不同,说明信号量4被遗漏释放,则认为信号量4死锁。若此时线程2等待获取信号量4,则线程2无法继续执行。
网络设备根据已确定死锁的信号量4,查询表7,找到当前使用信号量4的接口函数(接口函数13)。通过检测接口函数13的代码,找到信号量4死锁的原因。
至此,完成本发明实施例的描述。
以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述:
参见图6,为本发明实施例提供的装置的结构示意图。该装置包括:死锁判断单元601、接口函数查找单元602以及接口函数确定单元603,其中:
死锁判断单元601,用于判断所述第一线程对应的信号栈的栈顶信号量是否死锁;
接口函数查找单元602,用于若所述栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与所述栈顶信号量对应的接口函数;
接口函数确定单元603,用于将所述栈顶信号量对应的接口函数,确定为问题接口函数。
作为一个实施例,所述装置还包括:
对应关系记录单元,用于若所述第一线程通过第一接口函数获取到第一信号量,记录所述第一信号量与所述第一接口函数的对应关系;
信号量入栈单元,用于将所述第一信号量压入所述第一线程对应的信号栈中。
作为一个实施例,所述死锁判断单元601判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
获取所述第一线程对应的信号栈的栈顶信号量;
若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,累计次数;
若所述次数大于预设的次数阈值,确定所述栈顶信号量死锁。
作为一个实施例,所述死锁判断单元601判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
若所述第一线程释放已获取的第二信号量,获取所述栈顶信号量;
若所述第二信号量与所述栈顶信号量不同,确定所述栈顶信号量死锁。
作为一个实施例,所述装置还包括:
对应关系查找单元,用于若所述第一线程释放已获取的第二信号量,从本地记录的信号量与接口函数的对应关系中,查找第一对应关系,所述第一对应关系包括所述第二信号量;
对应关系删除单元,用于删除所述第一对应关系;
信号量出栈单元,用于将所述第二信号量从所述第一线程对应的信号栈弹出。
至此,完成图6所示装置的描述。在本发明实施例中,网络设备本地记录信号量与接口函数的对应关系,在发生信号量死锁时,通过查询信号量与接口函数的对应关系,找到当前使用该死锁信号量的接口函数。技术人员通过排查该接口函数的代码,找到死锁的原因。可见,本发明实施例可快速定位到问题接口函数。
下面对本发明实施例提供的网络设备进行描述:
参见图7,为本发明实施例提供的一种网络设备的硬件结构示意图。该网络设备可包括处理器701、存储有机器可执行指令的机器可读存储介质702。处理器701与机器可读存储介质702可经由系统总线703通信。并且,通过读取并执行机器可读存储介质702中与接口函数定位逻辑对应的机器可执行指令,处理器701可执行上文描述的接口函数定位方法。
本文提到的机器可读存储介质702可以是任何电子、磁性、光学或其他物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,所述机器可读存储介质702可以包括如下至少一个种存储介质:易失存储器、非易失性存储器、其它类型存储介质。其中,易失性存储器可为RAM(Random Access Memory,随机存取存储器),非易失性存储器可为闪存、存储驱动器(如硬盘驱动器)、固态硬盘、存储盘(如光盘、DVD等)。
本发明实施例还提供一种包括机器可执行指令的机器可读存储介质,例如图7中的机器可读存储介质702,所述机器可执行指令可由网络设备中的处理器701执行,以实现以上描述的接口函数定位方法。
至此,完成图7所示设备的描述。
以上所述仅为本发明实施例的较佳实施例而已,并不用以限制本发明,凡在本发明实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (12)
1.一种接口函数定位方法,应用于网络设备,其特征在于,所述网络设备运行多个线程,所述多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过所述信号量访问所述数据,待访问所述数据的第二线程需等待所述信号量被释放后,获取所述信号量并访问所述数据,所述网络设备为每一个线程分配对应的信号栈,所述信号栈用于存放线程已获取的信号量,所述方法包括:
判断所述第一线程对应的信号栈的栈顶信号量是否死锁;
若所述栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与所述栈顶信号量对应的接口函数;
将所述栈顶信号量对应的接口函数,确定为问题接口函数。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一线程通过第一接口函数获取到第一信号量,记录所述第一信号量与所述第一接口函数的对应关系;
将所述第一信号量压入所述第一线程对应的信号栈中。
3.如权利要求1所述的方法,其特征在于,所述判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
以预设时间间隔,获取所述第一线程对应的信号栈的栈顶信号量;
若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,累计次数;
若所述次数大于预设的次数阈值,确定所述栈顶信号量死锁。
4.如权利要求1所述的方法,其特征在于,若所述第一线程释放已获取的第二信号量,所述判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
获取所述栈顶信号量;
若所述第二信号量与所述栈顶信号量不同,确定所述栈顶信号量死锁。
5.如权利要求4所述的方法,其特征在于,若所述第一线程释放已获取的第二信号量,所述方法还包括:
从本地记录的信号量与接口函数的对应关系中,查找第一对应关系,所述第一对应关系包括所述第二信号量;
删除所述第一对应关系;
将所述第二信号量从所述第一线程对应的信号栈弹出。
6.一种接口函数定位装置,应用于网络设备,其特征在于,所述网络设备运行多个线程,所述多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过所述信号量访问所述数据,待访问所述数据的第二线程需等待所述信号量被释放后,获取所述信号量并访问所述数据,所述网络设备为每一个线程分配对应的信号栈,所述信号栈用于存放线程已获取的信号量,所述装置包括:
死锁判断单元,用于判断所述第一线程对应的信号栈的栈顶信号量是否死锁;
接口函数查找单元,用于若所述栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与所述栈顶信号量对应的接口函数;
接口函数确定单元,用于将所述栈顶信号量对应的接口函数,确定为问题接口函数。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
对应关系记录单元,用于若所述第一线程通过第一接口函数获取到第一信号量,记录所述第一信号量与所述第一接口函数的对应关系;
信号量入栈单元,用于将所述第一信号量压入所述第一线程对应的信号栈中。
8.如权利要求6所述的装置,其特征在于,所述死锁判断单元判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
获取所述第一线程对应的信号栈的栈顶信号量;
若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,累计次数;
若所述次数大于预设的次数阈值,确定所述栈顶信号量死锁。
9.如权利要求6所述的装置,其特征在于,所述死锁判断单元判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
若所述第一线程释放已获取的第二信号量,获取所述栈顶信号量;
若所述第二信号量与所述栈顶信号量不同,确定所述栈顶信号量死锁。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
对应关系查找单元,用于若所述第一线程释放已获取的第二信号量,从本地记录的信号量与接口函数的对应关系中,查找第一对应关系,所述第一对应关系包括所述第二信号量;
对应关系删除单元,用于删除所述第一对应关系;
信号量出栈单元,用于将所述第二信号量从所述第一线程对应的信号栈弹出。
11.一种网络设备,其特征在于,所述网络设备包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-5任一所述的方法步骤。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910680765.7A CN110427272B (zh) | 2019-07-26 | 2019-07-26 | 接口函数定位方法、装置及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910680765.7A CN110427272B (zh) | 2019-07-26 | 2019-07-26 | 接口函数定位方法、装置及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110427272A true CN110427272A (zh) | 2019-11-08 |
CN110427272B CN110427272B (zh) | 2022-07-01 |
Family
ID=68412552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910680765.7A Active CN110427272B (zh) | 2019-07-26 | 2019-07-26 | 接口函数定位方法、装置及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427272B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090528A (zh) * | 2019-12-25 | 2020-05-01 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128706A (en) * | 1998-02-03 | 2000-10-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Apparatus and method for a load bias--load with intent to semaphore |
CN1831779A (zh) * | 2005-03-11 | 2006-09-13 | 华为技术有限公司 | 一种信号量死锁的检测方法 |
CN101295266A (zh) * | 2008-06-05 | 2008-10-29 | 华为技术有限公司 | 检测和解除死锁的方法、装置和系统 |
CN109189582A (zh) * | 2018-07-20 | 2019-01-11 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN109918207A (zh) * | 2019-02-18 | 2019-06-21 | 天津麒麟信息技术有限公司 | 一种非侵入的c程序死锁定位方法 |
-
2019
- 2019-07-26 CN CN201910680765.7A patent/CN110427272B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128706A (en) * | 1998-02-03 | 2000-10-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Apparatus and method for a load bias--load with intent to semaphore |
CN1831779A (zh) * | 2005-03-11 | 2006-09-13 | 华为技术有限公司 | 一种信号量死锁的检测方法 |
CN101295266A (zh) * | 2008-06-05 | 2008-10-29 | 华为技术有限公司 | 检测和解除死锁的方法、装置和系统 |
CN109189582A (zh) * | 2018-07-20 | 2019-01-11 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN109918207A (zh) * | 2019-02-18 | 2019-06-21 | 天津麒麟信息技术有限公司 | 一种非侵入的c程序死锁定位方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090528A (zh) * | 2019-12-25 | 2020-05-01 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
CN111090528B (zh) * | 2019-12-25 | 2023-09-26 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110427272B (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102945278B (zh) | 一种数据库记录重做日志的方法和装置 | |
CN109358987B (zh) | 一种基于两级数据去重的备份集群 | |
CN103220352B (zh) | 终端、服务器、文件存储系统和文件存储方法 | |
CN109101516B (zh) | 一种数据查询方法和服务器 | |
US20080120271A1 (en) | Tracking entities during identity resolution | |
US20160041886A1 (en) | Data storage upon database failure | |
CN106850856A (zh) | 一种分布式存储系统及其同步缓存方法 | |
CN104484131B (zh) | 多磁盘服务器的数据处理装置及对应的处理方法 | |
CN104965835B (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN106648442A (zh) | 一种元数据节点的内存镜像方法、装置 | |
CN109669858A (zh) | 程序死锁的测试方法、装置和设备 | |
US9207877B1 (en) | Detection and avoidance of stalled filesystems to prevent stalling of virtual tape drives during tape mounts | |
CN109240607A (zh) | 一种文件读取方法和装置 | |
CN108958969B (zh) | 数据库灾备方法、装置及灾备系统 | |
CN107608885A (zh) | 内存泄漏点的定位方法、装置、系统及可读存储介质 | |
CN110442533A (zh) | 一种提高访问性能的方法、设备及存储介质 | |
CN104636218B (zh) | 数据恢复方法及装置 | |
CN110427272A (zh) | 接口函数定位方法、装置及网络设备 | |
WO2006095356A1 (en) | A method of logging transactions and a method of reversing a transaction | |
CN106227583A (zh) | 一种多线程视频数据实时处理方法和装置 | |
CA2440277A1 (en) | Managing checkpoint queues in a multiple node system | |
CN109213898A (zh) | 视频监控系统的录像检索方法及装置 | |
CN104115127B (zh) | 存储系统和数据管理方法 | |
JPS6044707B2 (ja) | バツフアメモリ制御回路の障害検出方式 | |
CN109144947A (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 |