聊一聊 C# 线程切换后上下文都去了哪里-牛翰网

聊一聊 C# 线程切换后上下文都去了哪里

一:背景 1. 讲故事 总会有一些朋友问一个问题,在 Windows 中线程做了上下文切换,请问被切的线程他的寄存器上下文都去了哪里?能不能给我挖出来?这个问题其实比较底层,如果对操作系统没有个...
12个月前
0548
记一次 .NET某收银软件 非托管泄露分析-牛翰网

记一次 .NET某收银软件 非托管泄露分析

一:背景 1. 讲故事 在我的分析之旅中,遇到过很多程序的故障和杀毒软件扯上了关系,有杀毒软件导致的程序卡死,有杀毒软件导致的程序崩溃,这一篇又出现了一个杀毒软件导致的程序非托管内存泄...
12个月前
05314
.NET 某券商论坛系统卡死问题分析-牛翰网

.NET 某券商论坛系统卡死问题分析

目录 一:背景 1. 讲故事 二:程序到底经历了什么 1. 在线程上找原因 2. 误入歧途 3. 迷途知返 三:总结 一:背景 1. 讲故事 前几个月有位朋友找到我,说他们的的web程序没有响应了,而且监控发...
GC终结标记 SuspendEE 是怎么回事-牛翰网

GC终结标记 SuspendEE 是怎么回事

一:背景 1. 讲故事 写这篇是起源于训练营里有位朋友提到了一个问题,在 !t -special 输出中有一个 SuspendEE 字样,这个字样在 coreclr 中怎么弄的?输出如下: 0:000> !t -special ThreadC...
12个月前
0525
记一次 .NET某电商医药网站 CPU爆高分析-牛翰网

记一次 .NET某电商医药网站 CPU爆高分析

一:背景 1. 讲故事 准备明年把.NET高级调试的训练营的课程进行重构,采用案例引导式,而CPU爆高类有不少是程序员在写代码的时候不注意时间复杂度,在数据量稍微大一点的情况直接幻化成了死循环...
聊一聊 C#线程池 的线程动态注入 (中)-牛翰网

聊一聊 C#线程池 的线程动态注入 (中)

一:背景 1. 讲故事 上一篇我们用 Thread.Sleep 的方式演示了线程池饥饿场景下的动态线程注入,可以观察到大概 1s 产生 1~2 个新线程,很显然这样的增长速度扛不住上游请求对线程池的DDOS攻击,...
聊一聊 C# 弱引用 底层是怎么玩的-牛翰网

聊一聊 C# 弱引用 底层是怎么玩的

一:背景 1. 讲故事 最近在分析dump时,发现有程序的卡死和WeakReference有关,在以前只知道怎么用,但不清楚底层逻辑走向是什么样的,借着这个dump的契机来简单研究下。 二:弱引用的玩法 1. ...
12个月前
0517
记一次 .NET某防伪验证系统 崩溃分析-牛翰网

记一次 .NET某防伪验证系统 崩溃分析

一:背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障,因为看小伙子昨天在群里问了一天也没搞定,干脆自己亲自上阵吧,抓取的dump也是我极力推荐的用 procdump 注册 AEDebu...
12个月前
05012
如何用 WinDbg 调试Linux上的 .NET程序-牛翰网

如何用 WinDbg 调试Linux上的 .NET程序

一:背景 1. 讲故事 最新版本 1.2402.24001.0 的WinDbg真的让人很兴奋,可以将自己伪装成 GDB 来和远程的 GDBServer 打通来实现对 Linux 上 .NET程序进行调试,这样就可以继续使用熟悉的WinDbg ...
12个月前
0495
聊一聊 Monitor.Wait 和 Pulse 的底层玩法-牛翰网

聊一聊 Monitor.Wait 和 Pulse 的底层玩法

一:背景 1. 讲故事 在dump分析的过程中经常会看到很多线程卡在Monitor.Wait方法上,曾经也有不少人问我为什么用 !syncblk 看不到 Monitor.Wait 上的锁信息,刚好昨天有时间我就来研究一下。 二...
12个月前
04914