CN102222015A - 检测多线程程序中的死锁的方法及系统 - Google Patents
检测多线程程序中的死锁的方法及系统 Download PDFInfo
- Publication number
- CN102222015A CN102222015A CN2010101465192A CN201010146519A CN102222015A CN 102222015 A CN102222015 A CN 102222015A CN 2010101465192 A CN2010101465192 A CN 2010101465192A CN 201010146519 A CN201010146519 A CN 201010146519A CN 102222015 A CN102222015 A CN 102222015A
- Authority
- CN
- China
- Prior art keywords
- thread
- resource
- data
- deadlock
- surveyed
- 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
Images
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
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种检测多线程程序中的死锁的方法及其系统,所述方法包括以下步骤:选定所要检测的线程;启动跟踪程序,以跟踪在内核中运行的线程;启动目标多线程程序;判断是否存在所选定的线程在运行;在线程库中动态地插入探测点,以通过探测函数对所述选定的线程进行探测;所述探测函数记录所探测的数据,并且当记录的数据超过内核的阀值时,将数据传输到用户空间并进行存储;对存储于用户空间中的数据进行分析,以判断是否产生死锁。根据本发明,在不需要目标程序的源代码的情况下,就可以有效地检测出死锁,因而有利于多线程的调试作业,而且还有利于多线程程序对资源使用情况的分析。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及在多任务情况下检测死锁的方法及系统。
背景技术
随着计算机技术的快速发展,多任务、多线程或者多处理器的技术应用目前已经非常广泛。所述多任务是指同一个程序能有几个并发执行的路径,这些任务共享内存地址空间,可以并发异步执行。死锁(Dead Lock)是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。然而,由于死锁只在涉及例如正在执行的线程的交错或时序的特定条件下才可能发生,它是难以检测的。
在目前的检测方法中,可以分为静态代码分析和运行时分析。静态代码分析,是指对目标源程序进行分析,找出目标线程和相关的资源,建立线程和资源之间的关系图,如果存在循环就认为存在死锁。
运行时分析需要增加额外的数据结构和软件模块,每当有线程使用资源(获取或者释放)加以记录分析,如果获取的资源和释放的资源不一致,或者其他异常,认为存在死锁。
在现有技术的情况下,都需要目标程序的源代码,这在比较大的程序进行联合开发的情况下,往往并不能得到所有的源代码,在源代码比较多的情况下,对源代码进行分析也是一件很困难的事情。
另外,现有动态死锁检测方法都需要增加额外的数据结构和软件模块,并且会修改目标程序的行为。比如,目标程序请求资源或者释放资源的时候,往往需要在增加的数据结构中填写对应的值。这样做,会影响目标程序的行为,导致得到的结果的可信度降低。
发明内容
本发明是为了解决上述问题而提出的,其目的在于提供一种采用动态插入探测点的方式,且不需要目标程序源代码,也不影响目标程序的运行的检测多线程程序中的死锁的方法及系统。
根据本发明的目的,提供一种检测多线程程序中的死锁的方法,其特征在于,包括以下步骤:选定所要检测的线程;启动跟踪程序,以跟踪在内核中运行的线程;启动目标多线程程序;判断是否存在所选定的线程在运行;在线程库中动态地插入探测点,以通过探测函数对所述选定的线程进行探测;记录所述探测函数所探测的数据,并且当记录的数据超过内核的阀值时,将数据传输到用户空间并进行存储;对存储于用户空间中的数据进行分析,以判断是否产生死锁。
所述探测函数进行探测的方式包括入口探测与返回探测,其中,所述入口探测是在资源函数进入时执行,所述返回探测是在资源函数返回的时候执行。
在记录所述探测函数所探测的数据的步骤中,记录线程号和资源标示。
在对存储到用户空间的数据进行分析的步骤中,当多个线程中的其中一个线程长时间请求资源,而所述线程请求的资源被另一个线程所拥有,且所述另一个线程所请求的资源由所述线程拥有时,判断为发生死锁。
在对存储到用户空间的数据进行分析的步骤中,当多个线程中的其中一个线程长时间请求资源,并且所述线程请求的资源被另一个线程所拥有,而所述另一个线程所请求的资源由所述线程拥有时,判断为发生死锁。
根据本发明的另一目的,提供一种检测多线程程序中的死锁的系统,包括:探测设置模块,其用于在线程库中动态插入探测点,以通过探测函数对线程进行探测,并且记录所述探测函数所探测的数据;数据传输模块,以用于当所述记录数据超过阀值时,将所述记录数据传输到用户空间并进行存储;分析模块,以用于对存储到用户空间的所述记录数据进行分析,以判断是否产生死锁。
所述探测函数的探测方式包括入口探测和返回探测,其中,所述入口探测是在资源函数进入时执行,所述返回探测是在资源函数返回的时候执行。
所述探测函数记录线程号和资源标示。
当多个线程中的其中一个线程长时间请求资源,而所述线程请求的资源被另一个线程所拥有,且所述另一个线程所请求的资源由所述线程拥有时,则所述分析模块判断为发生死锁。
根据本发明,在不需要目标程序的源代码的情况下,就可以有效地检测出死锁,因而有利于多线程的调试作业,而且还有利于多线程程序对资源使用情况的分析。
附图说明
通过下面的附图对本发明实施例进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1为根据本发明的检测多线程程序中的死锁的方法的流程图;
图2为根据本发明的动态插入用户空间的方法的简要示意图;
图3为根据本发明的死锁的分析方法的流程图;
图4为图3的中的死锁状态的简要示意图;
图5为根据本发明的检测多线程程序中的死锁的系统的方框图。
具体实施方式
以下,参照附图来详细说明根据本发明的实施例。
如图1所示,根据本发明的检测多线程程序中的死锁的方法包括以下步骤。在步骤S100,用户选定所要检测的线程。然后,在步骤S101启动跟踪程序,以跟踪在内核中运行的线程。接着,在步骤S102,启动目标多线程程序。此时,所述目标程序为用户空间的应用程序。用户空间的应用程序的探测相对于内核空间的探测的不同点在于,内核总是被加载于物理内存中,其有固定的地址,因此探测点可以在任何时候插入。但是用户空间的应用程序是按需要加载于内存里面去的,其没有固定的地址,因此探测点就不是在任何时候都可以插入。此时的解决方式是维护一个预先定义的探测点的列表,然后在内核函数do_page_fault插入一个探测点,从do_page_fault函数里面获取加载页面的信息,当do_page_fault返回的时候检查探测点列表,如果在内核中发现存在需要插入探测点的线程,则在新加载的页面里面插入探测点。即,当启动目标程序时,所启动的程序就会被加载于内核中运行,此时将产生页面错误。由此,在步骤S103中,用户根据页面错误判断是否存在用户所选定的线程在运行。当发现存在运行中的用户所选定的线程时,执行步骤S104,在线程库中动态插入探测点,以通过探测函数对用户所选定的线程进行探测。图2为根据本发明的动态插入探测点的方法的简要示意图。参照图2可知,由于用户空间的应用程序不同于内核程序,其并没有一次全部被加载到内存中,而是在运行时选择性地进行加载。因此,当用户设置动态探测指令,这些指令会被记录到探测数据中。当发生页面错误的时候,页面错误处理器会调用探测设置模块,该探测设置模块去搜索新加载的应用程序是否需要插入探测函数,如果需要,就动态插入探测函数。动态插入探测点的方法有很多方式,本发明中,动态插入探测点利用kprobes,具体的插入方式为:在需要插入探测点的地方插入一个中断指令,当执行到这个中断指令,会调用相应的中断函数,用户自己定义的探测函数在中断函数中执行。Kprobes向运行的内核中给定地址写入断点指令,插入一个探测函数。而执行探测的指令会导致断点错误,Kprobes钩住(hook in)断点处理器并收集调试信息。所述探测函数探测的方式提供两种探测种类,一是入口探测,另一种是返回探测。其中,所述入口探测是在资源函数进入时执行,所述返回探测是在资源函数返回的时候执行,记录下线程号和资源标示。因此,在资源函数入口点(entry)和出口点(return)分别插入探测函数。然后,执行步骤S105,所述探测函数记录所探测的数据。当目标程序启动时,就会调用资源请求函数和资源释放函数,此时对应的入口探测函数和返回探测函数就会被调用,线程号和资源标示将会被记录下来。因此,所述探测函数所探测的数据中包含线程号以及资源标示。所述资源请求函数包括资源请求入口函数和资源请求返回函数,所述资源释放函数包括资源释放入口函数和资源释放返回函数。当一个线程进入了资源请求函数,比如pthread_mutex_lock,表示这个线程正在请求一个资源,如果从pthread_mutex_lock成功返回,表示这个线程成功的获取资源,在进入这个函数到返回这个函数的时间段就是线程获取资源的时间。而线程进入pthread_mutex_unlock表示这个线程开始释放资源,并且从pthread_mutex_unlock成功返回,表示这个线程就释放掉了资源,此时别的线程就可以使用所述线程释放的资源,因为当一个线程继续占有某个资源时,别的线程是无法使用该资源的。
接着,执行步骤S106,判断所述探测函数所记录的数据是否超过阀值。当所述探测函数所记录的数据超过阀值时,执行步骤S107,将所述记录的数据转移到用户空间。此时,所述阀值为内核空间的阀值。由于内核空间的限制,探测函数记录下来的数据不会一直保存于内存的缓冲区,当记录的数据超过一定的阀值,数据将会被传输到用户空间,存入磁盘或者数据库系统,而相应的内核数据将会被清空。所述阀值是根据内存的大小来确定的,这个值不能太大,否则会影响到内核的运行,但也不能太小,否则频繁传输数据到用户空间,也一样会影响内核的性能。作为参考,1G的内存可以分配32MB的缓存。
接着,执行步骤S108,对于所述转到用户空间的所述探测函数所记录的数据进行分析,以判断是否产生了死锁。
图3为根据本发明的死锁的分析方法的流程图,图4为图3的中的死锁状态的简要示意图。参照图可知,根据本发明的死锁的分析方法如下:在步骤S301,通过资源请求入口函数判断各个线程是否在请求资源。然后执行步骤S302,以通过资源请求返回函数判断各个线程所拥有的资源。接着,执行步骤S303,以通过资源释放入口函数和资源释放返回函数判断各个线程是否释放掉所占有的资源。然后,执行步骤S304,根据所述探测函数所探测的线程号及资源标示进行死锁分析,即当所述多个线程中的其中一个线程长时间占有一资源,且并没有释放这一资源,同时该线程请求另一资源,而所述线程请求的另一资源被另一个线程长时间所占有,且另一线程并没有释放该另一资源时,判断为发生死锁。图4中,线程A长时间拥有资源R1,且同时请求资源R2;而在相同的时间内,线程B长时间拥有资源R2,且同时请求资源R1,此时就可以判断为发生了死锁。
图5为根据本发明的检测多线程程序中的死锁的系统的方框图。由图可知,根据本发明的检测多线程程序中的死锁的系统,包括探测设置模块600、数据传输模块601、分析模块602。所述探测设置模块600用于在线程库中动态插入探测点,以通过探测函数对用户所选定的线程进行探测,并且在探测函数里记录数据。而且,所述探测设置模块600还能够动态设置内核空间的探测函数。本发明中,所述探测设置模块600动态插入探测点利用kprobes,具体的插入方式为:在需要插入探测点的地方插入一个中断指令,当执行到这个中断指令,会调用相应的中断函数,用户自己定义的探测函数在中断函数中执行。Kprobes向运行的内核中给定地址写入断点指令,插入一个探测函数。而执行探测的指令会导致断点错误,Kprobes钩住(hook in)断点处理器并收集调试信息。所述探测函数的探测类型包括入口探测和返回探测,其中,所述入口探测是在资源函数进入时执行,所述返回探测是在资源函数返回的时候执行。所述探测函数记录函数线程号和资源标示。所述数据传输模块601用于当所述记录数据超过内核的阀值时,将数据传输到用户空间储存。此时,所述阀值是根据内存的大小来确定的,这个值不能太大,否则会影响到内核的运行,但也不能太小,否则频繁传输数据到用户空间,也一样会影响内核的性能。作为参考,1G的内存可以分配32MB的缓存。所述分析模块602用于对用户空间数据进行分析,以判断是否产生死锁。所述分析模块602的分析是通过比较所述探测函数所探测的线程号及资源标示而进行的。即,当所述多个线程中的其中一个线程长时间占有一资源,且并没有释放这一资源,同时该线程请求另一资源,而所述线程请求的另一资源被另一个线程长时间所占有,且另一线程并没有释放该另一资源时,则所述分析模块602判断为发生死锁。
本发明不限于上述实施例,在不脱离本发明范围的情况下,可以进行各种变形和修改。
Claims (10)
1.一种检测多线程程序中的死锁的方法,其特征在于,包括以下步骤:
选定所要检测的线程;
启动跟踪程序,以跟踪在内核中运行的线程;
启动目标多线程程序;
判断是否存在所选定的线程在运行;
在线程库中动态地插入探测点,以通过探测函数对所述选定的线程进行探测;
所述探测函数记录所探测的数据,并且当记录的数据超过内核的阀值时,将数据传输到用户空间并进行存储;
对存储于用户空间中的数据进行分析,以判断是否产生死锁。
2.根据权利要求1所述的方法,其特征在于,进行探测的方式包括入口探测与返回探测,其中,所述入口探测是在资源函数进入时执行,所述返回探测是在资源函数返回的时候执行。
3.根据权利要求2所述的方法,其特征在于,在记录所述探测函数所探测的数据的步骤中,记录线程号和资源标示。
4.根据权利要求1所述的方法,其特征在于,在对存储到用户空间的数据进行分析的步骤中,通过比较所述探测函数所探测的线程号和资源标示进行分析。
5.根据权利要求4所述的方法,其特征在于,当多个线程中的其中一个线程长时间请求资源,而所述线程请求的资源被另一个线程所拥有,且所述另一个线程所请求的资源由所述线程拥有时,判断为发生死锁。
6.一种检测多线程程序中的死锁的系统,其特征在于包括:
探测设置模块,其用于在线程库中动态插入探测点,以通过探测函数对线程进行探测,并且记录所述探测函数所探测的数据;
数据传输模块,以用于当所述记录数据超过阀值时,将所述记录数据传输到用户空间并进行存储;
分析模块,以用于对存储到用户空间的所述记录数据进行分析,以判断是否产生死锁。
7.根据权利要求6所述的系统,其特征在于,所述探测函数的探测方式包括入口探测和返回探测,其中,所述入口探测是在资源函数进入时执行,所述返回探测是在资源函数返回的时候执行。
8.根据权利要求7所述的系统,其特征在于,所述探测函数记录线程号和资源标示。
9.根据权利要求6所述的系统,其特征在于,所述探测模块通过比较所述探测函数所探测的线程号和资源标示进行分析。
10.根据权利要求9所述的系统,其特征在于,当多个线程中的其中一个线程长时间请求资源,而所述线程请求的资源被另一个线程所拥有,且所述另一个线程所请求的资源由所述线程拥有时,则所述分析模块判断为发生死锁。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010146519.2A CN102222015B (zh) | 2010-04-13 | 2010-04-13 | 检测多线程程序中的死锁的方法及系统 |
KR1020110012414A KR20110114432A (ko) | 2010-04-13 | 2011-02-11 | 멀티스레드 프로그램에서 교착을 감지하기 위한 방법 및 시스템 |
US13/077,051 US8713568B2 (en) | 2010-04-13 | 2011-03-31 | System and method for detecting deadlock in a multithread program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010146519.2A CN102222015B (zh) | 2010-04-13 | 2010-04-13 | 检测多线程程序中的死锁的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102222015A true CN102222015A (zh) | 2011-10-19 |
CN102222015B CN102222015B (zh) | 2016-04-27 |
Family
ID=44761862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010146519.2A Active CN102222015B (zh) | 2010-04-13 | 2010-04-13 | 检测多线程程序中的死锁的方法及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8713568B2 (zh) |
KR (1) | KR20110114432A (zh) |
CN (1) | CN102222015B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662742A (zh) * | 2012-04-11 | 2012-09-12 | 华为技术有限公司 | 一种基于锁的线程管理方法及装置 |
CN105446806A (zh) * | 2014-09-28 | 2016-03-30 | 广州市动景计算机科技有限公司 | 一种应用程序无响应的处理方法及装置 |
CN106201730A (zh) * | 2016-07-07 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种linux用户态互斥锁死锁检测方法及系统 |
CN106201731A (zh) * | 2016-07-07 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种用户态读写锁死锁检测方法及系统 |
CN106294137A (zh) * | 2016-08-01 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种linux用户态自旋锁死锁检测方法及系统 |
CN106528318A (zh) * | 2016-11-29 | 2017-03-22 | 迈普通信技术股份有限公司 | 线程死循环检测方法和装置 |
CN107077394A (zh) * | 2014-11-17 | 2017-08-18 | 国际商业机器公司 | 请求监视 |
WO2017167062A1 (zh) * | 2016-03-30 | 2017-10-05 | 阿里巴巴集团控股有限公司 | 一种应用程序接口死锁监控方法和装置 |
CN108052391A (zh) * | 2017-11-30 | 2018-05-18 | 努比亚技术有限公司 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
CN108959085A (zh) * | 2018-06-25 | 2018-12-07 | 清华大学 | 一种检测内核模块在原子上下文中休眠错误的方法及系统 |
CN109213576A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
CN110851286A (zh) * | 2019-11-12 | 2020-02-28 | 北京城市网邻信息技术有限公司 | 线程管理方法、装置、电子设备及存储介质 |
CN112433945A (zh) * | 2020-11-26 | 2021-03-02 | 百富计算机技术(深圳)有限公司 | 一种用于程序动态跟踪的方法、装置及电子设备 |
CN112612581A (zh) * | 2020-12-02 | 2021-04-06 | 北京和利时系统工程有限公司 | 线程主动退出方法和装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327336B2 (en) * | 2009-03-18 | 2012-12-04 | International Business Machines Corporation | Enhanced thread stepping |
CN102508715B (zh) * | 2011-11-23 | 2014-02-19 | 北京地拓科技发展有限公司 | 一种基于多线程的对象调用方法和装置 |
JP5648187B2 (ja) * | 2011-11-25 | 2015-01-07 | 株式会社日立製作所 | 計算機システム、および、監視方法 |
CN107678838B (zh) * | 2017-10-19 | 2021-07-02 | 郑州云海信息技术有限公司 | 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台 |
CN118193323A (zh) * | 2024-03-29 | 2024-06-14 | 重庆赛力斯凤凰智创科技有限公司 | 线程死锁监控方法、系统、客户端终端设备及车载系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1605987A (zh) * | 2004-11-17 | 2005-04-13 | 中兴通讯股份有限公司 | 一种多线程系统中实现实时监控各线程状态的方法 |
CN101067798A (zh) * | 2007-06-14 | 2007-11-07 | 华南理工大学 | 一种动态探针方法及其在嵌入式系统中的应用 |
CN101576830A (zh) * | 2009-06-04 | 2009-11-11 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
US7958512B2 (en) * | 2005-10-31 | 2011-06-07 | Microsoft Corporation | Instrumentation to find the thread or process responsible for an application failure |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714958B1 (en) * | 1999-07-28 | 2004-03-30 | International Business Machines Corporation | Detecting and causing latent deadlocks in multi-threaded programs |
US7478368B2 (en) * | 2001-04-24 | 2009-01-13 | International Business Machines Corporation | Organization and visualization of performance data in selected display modes |
US7293259B1 (en) * | 2003-09-02 | 2007-11-06 | Sun Microsystems, Inc. | Dynamically configuring selected methods for instrument-based profiling at application run-time |
-
2010
- 2010-04-13 CN CN201010146519.2A patent/CN102222015B/zh active Active
-
2011
- 2011-02-11 KR KR1020110012414A patent/KR20110114432A/ko not_active Application Discontinuation
- 2011-03-31 US US13/077,051 patent/US8713568B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1605987A (zh) * | 2004-11-17 | 2005-04-13 | 中兴通讯股份有限公司 | 一种多线程系统中实现实时监控各线程状态的方法 |
US7958512B2 (en) * | 2005-10-31 | 2011-06-07 | Microsoft Corporation | Instrumentation to find the thread or process responsible for an application failure |
CN101067798A (zh) * | 2007-06-14 | 2007-11-07 | 华南理工大学 | 一种动态探针方法及其在嵌入式系统中的应用 |
CN101576830A (zh) * | 2009-06-04 | 2009-11-11 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662742A (zh) * | 2012-04-11 | 2012-09-12 | 华为技术有限公司 | 一种基于锁的线程管理方法及装置 |
CN102662742B (zh) * | 2012-04-11 | 2014-09-17 | 华为技术有限公司 | 一种基于锁的线程管理方法及装置 |
CN105446806A (zh) * | 2014-09-28 | 2016-03-30 | 广州市动景计算机科技有限公司 | 一种应用程序无响应的处理方法及装置 |
CN105446806B (zh) * | 2014-09-28 | 2019-03-15 | 广州市动景计算机科技有限公司 | 一种应用程序无响应的处理方法及装置 |
US10496520B2 (en) | 2014-11-17 | 2019-12-03 | International Business Machines Corporation | Request monitoring to a code set |
CN107077394A (zh) * | 2014-11-17 | 2017-08-18 | 国际商业机器公司 | 请求监视 |
WO2017167062A1 (zh) * | 2016-03-30 | 2017-10-05 | 阿里巴巴集团控股有限公司 | 一种应用程序接口死锁监控方法和装置 |
CN106201730A (zh) * | 2016-07-07 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种linux用户态互斥锁死锁检测方法及系统 |
CN106201731A (zh) * | 2016-07-07 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种用户态读写锁死锁检测方法及系统 |
CN106294137A (zh) * | 2016-08-01 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种linux用户态自旋锁死锁检测方法及系统 |
CN106528318A (zh) * | 2016-11-29 | 2017-03-22 | 迈普通信技术股份有限公司 | 线程死循环检测方法和装置 |
CN109213576A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
CN109213576B (zh) * | 2017-07-01 | 2022-04-08 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
CN108052391A (zh) * | 2017-11-30 | 2018-05-18 | 努比亚技术有限公司 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
CN108959085A (zh) * | 2018-06-25 | 2018-12-07 | 清华大学 | 一种检测内核模块在原子上下文中休眠错误的方法及系统 |
CN108959085B (zh) * | 2018-06-25 | 2020-09-01 | 清华大学 | 一种检测内核模块在原子上下文中休眠错误的方法及系统 |
CN110851286A (zh) * | 2019-11-12 | 2020-02-28 | 北京城市网邻信息技术有限公司 | 线程管理方法、装置、电子设备及存储介质 |
CN110851286B (zh) * | 2019-11-12 | 2023-02-17 | 北京城市网邻信息技术有限公司 | 线程管理方法、装置、电子设备及存储介质 |
CN112433945A (zh) * | 2020-11-26 | 2021-03-02 | 百富计算机技术(深圳)有限公司 | 一种用于程序动态跟踪的方法、装置及电子设备 |
CN112612581A (zh) * | 2020-12-02 | 2021-04-06 | 北京和利时系统工程有限公司 | 线程主动退出方法和装置 |
CN112612581B (zh) * | 2020-12-02 | 2024-02-13 | 北京和利时系统工程有限公司 | 线程主动退出方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US8713568B2 (en) | 2014-04-29 |
KR20110114432A (ko) | 2011-10-19 |
CN102222015B (zh) | 2016-04-27 |
US20110252424A1 (en) | 2011-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102222015A (zh) | 检测多线程程序中的死锁的方法及系统 | |
EP2972885B1 (en) | Memory object reference count management with improved scalability | |
Flanagan et al. | Dynamic partial-order reduction for model checking software | |
JP4965081B2 (ja) | マルチスレッド化されたプログラムにおける潜在的な競合を検出するための方法およびシステム | |
Yu et al. | Maple: A coverage-driven testing tool for multithreaded programs | |
US10241894B2 (en) | Data-scoped dynamic data race detection | |
US8185874B2 (en) | Automatic and systematic detection of race conditions and atomicity violations | |
CN103399818B (zh) | 操作系统中的死锁检测方法 | |
US7844971B2 (en) | Method and apparatus for detecting cross-thread stack access in multithreaded programs | |
US7861118B2 (en) | Machine instruction level race condition detection | |
US8095921B2 (en) | Identifying code that wastes time switching tasks | |
CN109635568B (zh) | 一种基于静态分析和模糊测试相结合的并发漏洞检测方法 | |
CN103488563A (zh) | 并行程序的数据竞争检测方法、装置及多核处理系统 | |
EP2106588A1 (en) | Fast and accurate static data-race detection for concurrent programs | |
US8356284B2 (en) | Threading model analysis system and method | |
JP5435741B2 (ja) | 競合管理を容易にするための型固定性の使用 | |
CN104750459A (zh) | 带有事务功能以及报告事务操作的日志记录电路的处理器 | |
CN114428733A (zh) | 基于静态程序分析与模糊测试的内核数据竞争检测方法 | |
US7493615B2 (en) | Apparatus and method for synchronizing multiple threads in an out-of-order microprocessor | |
US8135690B2 (en) | Concurrency object classification | |
Huang et al. | Finding schedule-sensitive branches | |
CN101599042A (zh) | 程序跑飞检测方法及其设备 | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
CN109885489B (zh) | 驱动程序中数据竞争检测方法及装置 | |
Chiang et al. | Formal analysis of GPU programs with atomics via conflict-directed delay-bounding |
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 |