- 博客(601)
- 收藏
- 关注
原创 聊一聊 C# 中让人惶恐的 Bitmap
Bitmap使用不当危害巨大,所以一定要谨记尽早释放的原则,如果真的不幸被吃了很多内存,也一定要明白那些未知的大内存段是不是被 Bitmap 所关联,从而尽早的找到真正的祸根。
2024-08-25 16:18:27
442
原创 GC终结标记 SuspendEE 是怎么回事
挖掘这个标记的前世今生回头看其实还是挺有意思的,coreclr 居然新增了 m_EETlsData 字段来给 sos 做妥协,哈哈,这彰显了 sos 一等公民的地位。
2024-08-21 11:20:05
294
原创 寻访中国100家.NET中大企业 —— 第二站:苏州行
我曾长期在互联网公司上班,没有人会喊工程师为xxx工,在我dump分析之旅中被人喊为xxx工,起初还挺不适应的,但也扛不住多呀,我就继续沿用这样的称谓吧,安工镜头感非常好,侃侃而谈,分享的经验让我受益匪浅,给人一个邻家大哥哥的感觉。正值暑假,出行的同时带着孩子一起去各地见见世面,扩大下孩子的眼界,苏州之行历时4天,逼迫着自己做了三场采访,广结良缘,乐在其中,哈哈,回头想想挺有意思,豁出去便是重生。而言,所以去的第一件事就是拍照,证明我真的来过,哈哈哈 🤣🤣🤣。到了会议室后,必须先来一场采访,人都有一颗。
2024-08-20 11:08:42
248
原创 记一次 .NET某环境监测系统 崩溃分析
这次生产事故挖了点新东西,有点好奇的是现在工控行业也开始用 Avalonia 替代 WPF 了吗?不过现阶段稳定性和 WPF 是没法比的,期待未来更健壮的版本吧。
2024-08-09 09:32:24
395
原创 记一次 .NET某智慧出行系统 CPU爆高分析
这次生产事故分析还是非常有意思的,一个看似阻塞的问题也会引发CPU爆高,超出了一些人的认知吧,对,其实它就是经典的现象,大家有任何dump问题可以找我,一如既往的免费分析。
2024-08-08 10:32:13
946
原创 如何用 WinDbg 调试Linux上的 .NET程序
最新版本 的WinDbg真的让人很兴奋,可以将自己伪装成 GDB 来和远程的 GDBServer 打通来实现对 Linux 上 .NET程序进行调试,这样就可以继续使用熟悉的WinDbg 命令,在这个版本中我觉得 WinDbg 不再是 WinDbg,而是 XDbg 了,画个简图如下:简图有了,接下来就要付出实践了。本想在 CentOS7 上安装 .NET8,不大好装,这里就用一个现存的 .NETCore 3.1 吧,测试代码如下:代码非常简单,就是1s输出一条记录,接下来编译成x64部署到 Centos
2024-07-22 10:23:58
336
原创 记一次 .NET某上位视觉程序 离奇崩溃分析
在大工控领域里,这是我见过第三例bit位翻转导致的程序崩溃,太无语了,恶魔到底是不是旁边的伺服电机?
2024-07-12 10:23:58
654
原创 记一次 .NET某酒业业务系统 崩溃分析
说实话这个dump分析起来还是挺有难度的,需要你对Windows线程池clr源码实现有一个基础了解,否则很难构造出完整证据链。
2024-07-09 11:42:07
701
1
原创 记一次 .NET某网络边缘计算系统 卡死分析
这个卡死事故还是蛮好解决的,如果有一些经验直接用也是能搞定的,重点在于这是一个 Linux的dump,同时又是 .NET上的一个很好玩的场景,故此分享出来。
2024-07-01 13:10:49
942
原创 聊一聊 C# 弱引用 底层是怎么玩的
WeakReference 的内部玩法有很多,更深入的理解还需要对进行深度挖掘,后面有机会再聊吧,有时候dump分析还是挺苦逼的,需要对相关领域底层知识有一个足够了解,否则谈何修复呢?
2024-06-28 11:44:08
925
原创 聊一聊 Monitor.Wait 和 Pluse 的底层玩法
花了半天研究这东西还是挺有意思的,重点还是要理解下那张图,理解了之后我相信你对方法注释中所指的会有一个新的体会。
2024-06-20 11:55:13
339
原创 记一次 .NET某机械臂上位系统 卡死分析
这次朋友的生产事故,对我们做分析的人来说还是有很大的教训意义,有时候主线程的一些抛错或者阻塞假象会诱导我们陷入分析误区,这就需要调试人员具有一双慧眼识别,及时的浪子回头。
2024-06-18 10:34:50
668
原创 记一次 .NET某工厂报警监控设置 崩溃分析
这次程序崩溃的原因很简单,就是空引用异常,但诡异就诡异在明明有 trycatch 在外部,硬是没接住,这个大概率是 CLR 的 bug,让我这个分析多年dump的老手都叹为观止,开了眼界,无语了无语了。。。
2024-06-13 16:19:46
950
原创 记一次 .NET某游戏币自助机后端 内存暴涨分析
前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机类型的程序,下次去大玩家看看他们出币的机器后端是不是C#写的?由于dump是linux上的程序,刚好windbg可以全平台分析,太爽了,直接用windbg开干吧。在 windows 平台上相信有很多朋友都知道用 命令看,但这是专属于windows平台的命令,在分析linux上的dump不好使,参考如下输出:卦中的内存段分类用处不大,也没
2024-06-12 08:54:28
489
原创 记一次 .NET某质量检测中心系统 崩溃分析
有时候程序崩溃往往不是你代码写的烂,极有可能是底层承载的bug导致的,甚至罪魁祸首是环境中的辐射,所以分析崩溃类的dump也挺玄学的,以后程序出问题第一时间不要大包大揽的往自己身上背,找出问题才是关键。
2024-06-04 10:52:08
527
2
原创 记一次 .NET某工控WPF程序被人恶搞的 卡死分析
这是一次人为的故意恶搞,大概率就是想看下我到底是骡子是马。。。我分析的结果对他和他所在的公司来说没有任何价值,只能白白的浪费我的时间,真是分析多了,什么样的人都能遇到,谨以此文告知后来者,免费但请不要滥用!
2024-05-28 10:10:09
463
原创 记一次 .NET某企业数字化平台 崩溃分析
这次程序崩溃主要是朋友的奇葩写法导致 SqlSugar 在拆解表达式树的时候抛了异常,个人觉得底层最好把递归改成循环之类的避免栈溢出,看了下SqlSugar版本还是比较新的,所以先建议朋友换写法观察看看。
2024-05-27 10:43:38
352
原创 记一次 .NET某酒店后台服务 卡死分析
很多时候分析下来发现是第三方组件拖垮了程序,自己又没有太多的介入能力,真的很无奈,框架都用了那么久,现在看到了一只苍蝇,已是食之无味,弃之可惜。
2024-05-20 09:37:47
476
原创 记一次 .NET某管理局检测系统 内存暴涨分析
这次分析之旅是典型的在绝望中寻找希望,调试者需要具备沉着冷静的心态,坚持不放弃最终在内存段的 TEB 上找到了寻找真相的突破口。
2024-04-07 12:43:29
487
原创 记一次 .NET某防伪验证系统 崩溃分析
说实话要想解释这个程序为什么会崩溃,需要分析者对GC的运作逻辑有一定的了解,否则真抓瞎了,所以.NET调试训练营中的GC理论知识一定是分析这些 dump 的基石。
2024-03-28 12:47:01
1051
原创 记一次 .NET某半导体CIM系统 崩溃分析
说实话在我的dump分析旅程中,这个dump的分析难度还是比较大的,它考验着你对bgc线程底层运作的理解,所幸的是我在调试训练营里用windbg让大家亲眼目睹了后台标记三阶段的详细过程,真是三生有幸!
2024-03-25 16:30:39
818
原创 记一次 .NET某游戏后端API服务 CPU爆高分析
这种将赋给静态变量的奇葩操作其实蕴含着巨大的安全隐患,会导致多个用户之间串cookie,但以服务器自爆的方式来避免客户端串cookie,真的是不幸中的万幸,哈哈,同时用bug去抑制另一个bug的神操作也真的是大自然的鬼斧神工!
2024-03-21 15:58:26
1046
原创 记一次 .NET某设备监控自动化系统 CPU爆高分析
CPU爆高的诱因非常多,高频的抛异常就属于其中一例,其实这种通信时发生了突发异常正是 Polly 这种弹性和瞬态故障处理库大显身手的地方。
2024-03-06 13:35:09
1376
原创 记一次 .NET某列控连锁系统 崩溃分析
有丰富经验的朋友肯定知道,bit翻转大多是辐射导致计算机数字信号偶发的紊乱,这也是为什么医院要加个铅版来阻隔,而这个程序所处的环境刚好是辐射比较多的高铁系。所以分析完之后,非我等调试师能为之,远离辐射。。。
2024-02-21 18:29:44
1233
原创 记一次 .NET某工控自动化系统 崩溃分析
说实话这个dump分析起来还是有一定难度的,它考验着你对GC标记阶段玩法的底层理解,即使这位朋友是C#编程高手,分析了个把星期找不出问题是能够理解的,毕竟术业有专攻,很开心的是这位朋友因此加了.NET高级调试训练营,哈哈,以dump会友。
2024-01-26 12:43:06
240
原创 C# AsyncLocal 是如何实现 Thread 间传值
说了这么多,其实精妙之处在于创建OS线程的时候,会把C# Thread实例(coreclr对应线程) 作为参数传递给新线程,即下面方法签名中的参数,新线程拿到了Thread实例,自然就能获取到被调用线程赋值的字段,所以这是完完全全的C#层面玩法,希望能给后来者解惑吧!
2024-01-25 16:10:55
586
原创 C# 线程本地存储 为什么线程间值不一样
在 C# 开发中经常会有一些疑惑,如果不了解汇编,C++ ,相信你会陷入到很多的魔法使用中而苦于不能独自解惑的遗憾。
2024-01-23 16:40:09
435
原创 记一次 .NET某道闸收费系统 内存溢出分析
这个事故非常有意思,一个简简单单的CanRead误用就对程序造成了毁灭性的打击,这也警示大家在用某个属性某个方法前,一定要先搞清楚它到底是怎么玩的。
2024-01-18 11:02:03
619
原创 记一次 .NET某MES自动化桌面程序 卡死分析
这次程序卡死还是挺有意思的,表象是主线程被GC卡住,实则是大SQL导致虚拟地址不足,分享出来让大家少踩坑吧!
2024-01-16 09:49:43
533
原创 聊一聊 C# 的线程本地存储TLS到底是什么
C# 属于一种业务高层抽象的语言,它的很多底层被C++再次隔离了,想要理解本篇的TLS,还得需要往下一层一层的击穿,作为C#程序员太难了。
2024-01-16 09:48:32
941
原创 记一次 .NET某股票交易软件 灵异崩溃分析
一个是辐射导致的bit位翻转,一个是不可能走到else的地方走了else,各个奇奇怪怪的事情,让我的高级调试之旅丰富多彩,大家觉得这个崩溃还有其他的可能性吗?期待大家的留言。
2024-01-05 13:05:22
1351
原创 记一次 .NET某工控 宇宙射线 导致程序崩溃分析
直到昨天看了这篇莫非我遇到了传说中的bug?宇宙射线太阳耀斑地磁暴电离辐射硬件故障杀毒软件内存超频我觉得内存超频引发的程序不稳定概率是最大的,不知道大家可有不同的看法?
2024-01-05 12:51:43
1449
原创 聊一聊 C# 线程切换后上下文都去了哪里
哈哈,是不是非常有意思,一个简单的 Sleep(1) 涉及到两块的寄存器上下文,并都保存在内核线程栈的区间,这也算是加深了自己对操作系统的理解,也帮一些朋友解答了一些困惑!
2024-01-05 12:51:11
704
原创 记一次 .NET 某药厂业务系统 CPU爆高分析
这次CPU的爆高还是挺有意思,不是业务方法导致的爆高,而是大量的 Sleep(1) 导致的高频上下文切换所致,有点意思,留下此文给大家避坑!
2024-01-05 12:50:34
1395
原创 聊一聊 .NET高级调试 内核模式堆泄露
在过往的dump分析中都是用户态程序的泄露,内核态模式堆的的泄露还是第一次分析,不是朋友提供的这次机会,真的就没缘分啦!在这次dump分析过程中,也让大家看到了 windbg 是多么的强大!
2024-01-05 12:50:04
1285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人