聊一聊 C#异步中的Overlapped是如何寻址的-牛翰网

聊一聊 C#异步中的Overlapped是如何寻址的

一:背景 1. 讲故事 前段时间训练营里的一位朋友提了一个问题,我用ReadAsync做文件异步读取时,我知道在Win32层面会传 lpOverlapped 到内核层,那在内核层回头时,它是如何通过这个 lpOverlapp...
为什么 .NET8线程池 容易引发线程饥饿-牛翰网

为什么 .NET8线程池 容易引发线程饥饿

一:背景 1. 讲故事 最近时间相对比较宽裕,多写点文章来充实社区吧,这篇文章主要还是来自于最近遇到的几例线程饥饿(Task.Result)引发的一系列的反思和总结,我觉得.NET8容易引发饥饿的原因,...
记一次 .NET某工业视觉软件 崩溃分析-牛翰网

记一次 .NET某工业视觉软件 崩溃分析

一:背景 1. 讲故事 前两天给训练营里的一位学员分析了一个dump,学员因为弄了一整天也没找到祸根,被我一下子弄出来了,极度想看看我是怎么分析的?由于在微信上不能一言两语表尽,干脆写一篇...
聊一聊 C# 的线程本地存储TLS到底是什么-牛翰网

聊一聊 C# 的线程本地存储TLS到底是什么

一:背景 1. 讲故事 有朋友在后台留言让我说一下C#的 ThreadStatic 线程本地存储是怎么玩的?这么说吧,C#的ThreadStatic是假的,因为C#完全是由CLR(C++)承载的,言外之意C#的线程本地存储,...
11个月前
0709
Linux系列:如何用perf跟踪.NET程序的mmap泄露-牛翰网

Linux系列:如何用perf跟踪.NET程序的mmap泄露

一:背景 1. 讲故事 如何跟踪.NET程序的mmap泄露,这个问题困扰了我差不多一年的时间,即使在官方的github库中也找不到切实可行的方案,更多海外大佬只是推荐valgrind这款工具,但这款工具底层...
记一次 .NET某电商医药网站 CPU爆高分析-牛翰网

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

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

.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整...
.NET外挂系列:6. harmony中一些实用的反射工具包-牛翰网

.NET外挂系列:6. harmony中一些实用的反射工具包

一:背景 1. 讲故事 本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧。 二:反射工具包 1. Acce...
记一次 .NET某企业数字化平台 崩溃分析-牛翰网

记一次 .NET某企业数字化平台 崩溃分析

一:背景 1. 讲故事 前些天群里有一个朋友说他们软件会偶发崩溃,想分析看看是怎么回事,所幸的是自己会抓dump文件,有了dump就比较好分析了,接下来我们开始吧。 二:WinDbg 分析 1. 程序为什...
11个月前
0309
MinHook 对.NET底层的 SendMessage 拦截真实案例反思-牛翰网

MinHook 对.NET底层的 SendMessage 拦截真实案例反思

一:背景 1. 讲故事 上一篇我们说到了 minhook 的一个简单使用,这一篇给大家分享一个 minhook 在 dump 分析中的实战,先看下面的线程栈。 0:044> ~~[138c]s win32u!NtUserMessageCall+0x14:...