1、ntdll!ZwWaitForSingleObject

  线程被挂起,如果下面跟着是这样子:

RetAddr           : Args to Child                                                           : Call Site
`7766e518 : `ffffffff ` ` `1019d8e0 : ntdll!ZwWaitForSingleObject+0xa
`7766e40b : 000007fe` `09e7f300 ` 000007fe`f1a3d4e8 : ntdll!RtlpWaitOnCriticalSection+0xe8
000007fe`f140f174 : `0a0ab120 `0000000a 000007fe`f1a3d4e8 `0a0ab120 : ntdll!RtlEnterCriticalSection+0xd1
000007fe`f1821433 : ` `0a0ab120 ffffffff`fffffffe `09e7f300 : mscorwks!UnsafeEEEnterCriticalSection+0x20
000007fe`f128563b : 000007fe`f1a3d4e8 000007fe`f12a7266 000007fe`e7fafc23 `09e7f300 : mscorwks!CrstBase::Enter+0x123
000007fe`f1299f5a : ` `09e7f300 ` `09e7f300 : mscorwks!UnManagedPerAppDomainTPCount::DispatchWorkItem+0x1bb
000007fe`f124b3ac : ` ` `0ae0fbc0 ` : mscorwks!ThreadpoolMgr::WorkerThreadStart+0x1ba
`7751652d : ` ` ` ` : mscorwks!Thread::intermediateThreadProc+0x78
`7764c541 : ` ` ` ` : kernel32!BaseThreadInitThunk+0xd
` : ` ` ` ` : ntdll!RtlUserThreadStart+0x1d

  那么线程是在等待进入临界区,有可能是死锁引起的。

  如果下面跟着是这个样子:

RetAddr           : Args to Child                                                           : Call Site
000007fe`fd6d10dc : `09e7e7c8 `0b93384f ` ` : ntdll!ZwWaitForSingleObject+0xa
000007fe`f128d0e0 : `ffffffff `ffffffff ` ` : KERNELBASE!WaitForSingleObjectEx+0x79
000007fe`f128d1e3 : ` `09e7e760 ` `ffffffff : mscorwks!MethodTableBuilder::MethodSignature::GetMethodAttributes+0xa8
000007fe`f13c3cc1 : ` ` ` `0b8f87c1 : mscorwks!CLREvent::WaitEx+0x63
000007fe`f1820de1 : `0efe4a78 ` `1044ef60 `0a1dc670 : mscorwks!SVR::GCHeap::WaitUntilGCComplete+0x31

  那说明此线程在等待GC释放,极有可能是内出了问题导致GC如此猛烈。

  如果跟的是

:> ~* kb
...
Id: 7558.6914 Suspend: Teb: 000007ff`ffe56000 Unfrozen
RetAddr : Args to Child : Call Site
000007fe`fd6d10dc : `2f3cfe10 `5faa1eb0 ` 000007fe`fd6d64da : ntdll!ZwWaitForSingleObject+0xa
000007fe`f128d0e0 : `ffffffff `ffffffff ` ` : KERNELBASE!WaitForSingleObjectEx+0x79
000007fe`f128d1e3 : ` `09e7e190 ` `ffffffff : mscorwks!MethodTableBuilder::MethodSignature::GetMethodAttributes+0xa8
000007fe`f138e250 : `0b65c640 000007fe`f138e289 0000739d` ` : mscorwks!CLREvent::WaitEx+0x63
000007fe`f15a9596 : ` 000007fe`f129b6cb ffffffff`fffffffe 000007fe`f1286920 : mscorwks!SVR::gc_heap::wait_for_gc_done+0x80
000007fe`f17339cc : ` 000007fe`f129b6ef `1ff9e250 ` : mscorwks!SVR::GCHeap::GarbageCollectGeneration+0x206
000007fe`f13996a2 : ` `0b65c810 ` 000007fe` : mscorwks!SVR::gc_heap::try_allocate_more_space+0x1ac
000007fe`f136ecef : ` ` ` ` : mscorwks!SVR::gc_heap::allocate_more_space+0x32
000007fe`f12d7278 : ` ` `09e7e1f8 000007fe`f12d71b1 : mscorwks!SVR::gc_heap::allocate_large_object+0x5f
000007fe`f12d758e : `010b25e0 `838d92c8 `0006492c `0003248a : mscorwks!SVR::GCHeap::Alloc+0x198
000007fe`f17b9433 : `7f8ce378 `09e7e190 `0b65c9a8 `09e7e190 : mscorwks!SlowAllocateString+0x7e
000007fe`f051beec : ` ` ` ` : mscorwks!FramedAllocateString+0xd3
000007ff`00cf0313 : `5f3ecd98 `1ff9e098 ` ` : mscorlib_ni+0x2ebeec
000007ff`012b0ac5 : `5f3ecd98 `5f418988 `ff350370 `4f89cd50 : 0x7ff`00cf0313

  那么就是触发GC操作。

Windbg 线程状态笔记的更多相关文章

  1. C#线程学习笔记九:async & await入门二

    一.异步方法返回类型 只能返回3种类型(void.Task和Task<T>). 1.1.void返回类型:调用方法执行异步方法,但又不需要做进一步的交互. class Program { ...

  2. C#线程学习笔记一:线程基础

    本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/18/Thread.html,记录一下学习过程以备后续查用. 一.线程的介绍 进程(Proce ...

  3. JVM探秘:jstack查看Java线程状态

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. jstack命令可以打印Java进程的各个线程堆栈跟踪信息,可以用来查看Java中各个 ...

  4. C#线程学习笔记

    本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/18/Thread.html,记录一下学习,方便后面资料查找 一.线程的介绍 进程(Proce ...

  5. Java线程:线程状态的转换

    Java线程:线程状态的转换   一.线程状态   线程的状态转换是线程控制的基础.线程状态总的可分为五大状态:分别是生.死.可运行.运行.等待/阻塞.用一个图来描述如下:   1.新状态:线程对象已 ...

  6. C# Thread 线程状态知识

    .NET 基础类库的System.Threading命名空间提供了大量的类和接口支持多线程.这个命名空间有很多的类.System.Threading.Thread类是创建并控制线程,设置其优先级并获取 ...

  7. 转!!java线程状态

    一. 线程状态类型1. 新建状态(New):新创建了一个线程对象.2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,变得可运 ...

  8. C#线程状态简析

    在C# 语言世界中,当我们创建一个新的子线程,该线程状态为unstarted, 子线程开始之后,子线程状态为Running,IsAlive 为true: 线程响应 Thread.Start 并开始运行 ...

  9. [译]线程生命周期-理解Java中的线程状态

    线程生命周期-理解Java中的线程状态 在多线程编程环境下,理解线程生命周期和线程状态非常重要. 在上一篇教程中,我们已经学习了如何创建java线程:实现Runnable接口或者成为Thread的子类 ...

随机推荐

  1. Observer - IO (File Monitor)

    1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 2. ...

  2. activity属性_ _activity 属性说明

    activity是android中使用非常平凡的一种组件,我们除了需要掌握activity中的生命周期以外,还需要掌握activity中的其 他设置. 1.activity 中主题的设置   andr ...

  3. 使用WebStorm/Phpstorm实现remote host远程开发

    如果你的开发环境是在远程主机上,webstorm可以提供通过ftp/ftps/sftp等方式实现远程同步开发.这样我们可以就抛弃ftp. winscp等工具,通过webstorm编辑远程文件以及部署, ...

  4. strace命令

    简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...

  5. Eclipse UML插件Green UML、AmaterasUML

    一.Green UML插件 1.查看Eclipse版本 查看当前电脑上安装的Eclipse版本(Help-About Eclipse Platform),是3.3.2版本的. 2.查看相应插件版本 然 ...

  6. iOS 审核加急通道使用--转载来源--有梦想的蜗牛

    提交完成后进入加急审核页面. 链接:https://developer.apple.com/appstore/contact/appreviewteam/index.html 在i would lik ...

  7. Windows 10 中 Eclipse中无法添加Courier New字体的解决方法!

    1,打开"C:\Windows\Fonts\"文件夹. 2,鼠标右键"Courier New",随后点击"显示",这样你就可以在Eclips ...

  8. ZK框架的分析与应用

    前言:本文是在下的在学习ZK官方文档时整理出来的初稿.本来里面有很多的效果图片和图片代码的.奈何博客园中图片不能粘贴上去,所以感兴趣的筒子们就将就吧.内容中,如有不好的地方,欢迎斧正! ZK框架的分析 ...

  9. 90、 Android UI模板设计

    第一步:自定义xml属性 新建一个android项目,在values文件夹中新建一个atts.xml的文件,在这个xml文件中声明我们一会在使用自定义控件时候需要指明的属性.atts.xml < ...

  10. delphi的tserversocket控件如何接收16进制数

    http://bbs.csdn.net/topics/390473005 对方客户端发送数据如:68 00 00··········:接收完成后,数据长度没错(13),但是显示接收结果时,只显示一个字 ...