网站建设 中企动力宜昌李沧区城市建设管理局网站

张小明 2026/1/10 9:08:58
网站建设 中企动力宜昌,李沧区城市建设管理局网站,建站工作室 网站建设工作室,珍岛网站建设一#xff1a;背景1. 讲故事这段时间都在跑外卖#xff0c;感觉好久都没写文章了#xff0c;今天继续给大家带来一篇崩溃类的生产事故#xff0c;这是微信上有位老朋友找到我的#xff0c;让我帮忙看下为啥崩溃了#xff0c;dump也在手#xff0c;接下来就可以一顿分析。…一背景1. 讲故事这段时间都在跑外卖感觉好久都没写文章了今天继续给大家带来一篇崩溃类的生产事故这是微信上有位老朋友找到我的让我帮忙看下为啥崩溃了dump也在手接下来就可以一顿分析。二崩溃分析1. 为什么会崩溃双击打开dump文件会看到崩溃信息通览参考如下Executable search path is:Windows 10 Version 17763 MP (48 procs) Free x64Product: Server, suite: TerminalServer DataCenter SingleUserTSEdition build lab: 17763.1.amd64fre.rs5_release.180914-1434Debug session time: Fri Oct 31 17:38:42.000 2025 (UTC 8:00)System Uptime: 14 days 2:42:29.643Process Uptime: 0 days 0:00:58.000.......................................................................................................Loading unloaded module list.This dump file has an exception of interest stored in it.The stored exception information can be accessed via .ecxr.(5a74.6250): Unknown exception - code c0000374 (first/second chance not available)For analysis of this file, run !analyze -vntdll!NtWaitForMultipleObjects0x14:00007ffe57baf0e4 c3 ret从卦中看崩溃码是 c0000374即 ntheap 损坏哈哈到这里一下子就把范围给缩小了。2. 为什么ntheap 损坏那为什么ntheap会损坏呢可以使用 .ecxr 切到崩溃时的调用栈观察崩溃行为。0:032 .ecxr0:032 k*** Stack trace for last set context - .thread/.cxr resets it# Child-SP RetAddr Call Site00 000000b48503ede0 00007ffe57c0b313 ntdll!RtlReportFatalFailure0x901 000000b48503ee30 00007ffe57c13b9e ntdll!RtlReportCriticalFailure0x9702 000000b48503ef20 00007ffe57c13eaa ntdll!RtlpHeapHandleError0x1203 000000b48503ef50 00007ffe57bae109 ntdll!RtlpHpHeapHandleError0x7a04 000000b48503ef80 00007ffe57bbbb0e ntdll!RtlpLogHeapFailure0x4505 000000b48503efb0 00007ffe17d17b3f ntdll!RtlFreeHeap0x9d3ce06 000000b48503f050 00007ffe541392af AcLayers!NS_FaultTolerantHeap::APIHook_RtlFreeHeap0x41f07 000000b48503f0b0 00007ffe3773b17e KERNELBASE!LocalFree0x2f08 000000b48503f0f0 00007ffe37661d12 mscorlib_ni0x58b17e09 000000b48503f1a0 00007ffde49fe127 mscorlib_ni!System.Runtime.InteropServices.Marshal.FreeHGlobal0x22 [f:\dd\ndp\clr\src\BCL\system\runtime\interopservices\marshal.cs 1212]...0:032 !clrstackOS Thread Id: 0x6250 (32)Child SP IP Call Site000000b48503f118 00007ffe57baf0e4 [InlinedCallFrame: 000000b48503f118] Microsoft.Win32.Win32Native.LocalFree(IntPtr)000000b48503f118 00007ffe3773b17e [InlinedCallFrame: 000000b48503f118] Microsoft.Win32.Win32Native.LocalFree(IntPtr)000000b48503f0f0 00007ffe3773b17e DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr)000000b48503f1a0 00007ffe37661d12 System.Runtime.InteropServices.Marshal.FreeHGlobal(IntPtr) [f:\dd\ndp\clr\src\BCL\system\runtime\interopservices\marshal.cs 1212]000000b48503f1e0 00007ffde49fe127 b.BA.MoveNext()000000b48503f240 00007ffe376b3423 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\executioncontext.cs 954]000000b48503f310 00007ffe376b32b4 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\executioncontext.cs 902]...000000b48503f5c0 00007ffde49fb04e DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int32, Int32, Int64)从卦中可以清晰的看到是 b.BA.MoveNext 方法中调用了 FreeHGlobal 导致的NTHeap崩溃如果你经验比较足的话看到这个 FreeHGlobal 就应该想到 double free 问题这是一个经典的问题。3. 何为 double free双释放即对一个 block 块进行二次释放windows 的 RtlFreeHeap 方法会在业务逻辑中对这种情况直接判为异常接下来你或许想知道这个 block 的地址是什么这个可以用 !heap -s 观察参考代码如下0:032 !heap -s************************************************************************************************************************NT HEAP STATS BELOW************************************************************************************************************************Details:Heap address: 0000028c75bb0000Error address: 0000028c786018a0Error type: HEAP_FAILURE_BLOCK_NOT_BUSYDetails: The caller performed an operation (such as a freeor a size check) that is illegal on a free block.Follow-up: Check the errors stack trace to find the culprit.Stack trace:Stack trace at 0x00007ffe57c7284800007ffe57bae109: ntdll!RtlpLogHeapFailure0x4500007ffe57bbbb0e: ntdll!RtlFreeHeap0x9d3ce00007ffe17d17b3f: AcLayers!NS_FaultTolerantHeap::APIHook_RtlFreeHeap0x41f00007ffe541392af: KERNELBASE!LocalFree0x2f00007ffe3773b17e: mscorlib_ni0x58b17e00007ffe37661d12: mscorlib_ni!System.Runtime.InteropServices.Marshal.FreeHGlobal0x2200007ffde49fe127: 0xe49fe127LFH Key : 0x765363a7204cf973Termination on corruption : ENABLEDHeap Flags Reserv Commit Virt Free List UCR Virt Lock Fast(k) (k) (k) (k) length blocks cont. heap-------------------------------------------------------------------------------------0000028c75bb0000 00000002 17920 9256 16364 2120 214 5 1 a LFHExternal fragmentation 23 % (214 free blocks)0000028c75b40000 00008000 64 4 64 2 1 1 0 00000028c75de0000 00001002 2636 132 1080 20 5 2 0 0 LFH0000028c76190000 00001002 4680 2268 3124 1420 40 3 0 0 LFHExternal fragmentation 62 % (40 free blocks)0000028c76130000 00001002 2636 472 1080 5 27 2 0 0 LFH0000028c767f0000 00041002 60 8 60 5 1 1 0 00000028c77020000 00041002 60 16 60 2 2 1 0 0-------------------------------------------------------------------------------------从卦中可以看到 Heap address: 0000028c75bb0000 即为 block 地址接下来使用 !heap -x 0000028c786018a0 观察这个 block 块的状态可以看到此时确实是 free 的。0:032 !heap -x 0000028c786018a0Entry User Heap Segment Size PrevSize Unused Flags-------------------------------------------------------------------------------------------------------------0000028c786018a0 0000028c786018b0 0000028c75bb0000 0000028c785c80d0 e0 - 0 LFH;free到这里问题的成因我们是完全搞清楚了接下来就是反推问题代码的时候了。4. 问题代码在哪里应该有朋友知道问题是在 b.BA.MoveNext() 方法中从名字上看这个项目应该是混淆的有点搞哈。。。得要费点眼力截图如下从卦中的 IntPtr intPtr Interlocked.Exchange(ref b.A, IntPtr.Zero); 来看这个 intPtr 是一个类级别变量看样子是多个方法在操控类级别变量时没有合理的控制好为了一探究竟再次分析源代码果然是的截图如下到这里就真相大白了让朋友修改源码自己控制好这个变量。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

我的WordPress网站响应式网站建设资讯

Cobalt Strike(简称 CS)是一款专业的红队安全测试工具,核心用于模拟真实网络攻击,实现目标主机控制、权限提升、横向渗透等操作,是企业安全演练中常用的工具之一。以下是它的核心功能和基础使用流程(结合你…

张小明 2026/1/7 4:56:22 网站建设

永州网站建设收费情况破解版游戏盒子大全

题目描述 今天 Pari 和 Arya 正在玩一个叫做“余数”的游戏。 Pari 选择两个正整数 x 和 k,并将 k 告诉 Arya,但不告知 x。Arya 需要找出 xmodk 的值。有 n 个古老的数字 c1​,c2​,...,cn​,如果 Arya 想知道 xmodci​ 的值,Pa…

张小明 2026/1/9 9:00:51 网站建设

哪个网站可以卖自己的设计小白建站

告别高昂制作成本!Linly-Talker让数字人平民化 你有没有想过,只需一张照片和一段文字,就能生成一个会说话、有表情的“自己”?在不久之前,这种数字人还只属于电影特效或顶级直播间的专属配置——动辄几十万元的动作捕捉…

张小明 2026/1/8 20:07:07 网站建设

php大型网站开发书籍微信公众号商城网站开发

Media Extended B站插件为Obsidian笔记视频集成提供了创新性的解决方案,通过智能时间戳和高效播放控制,显著改善传统的学习笔记体验。这款Obsidian视频插件专为技术爱好者和效率追求者设计,让笔记视频集成变得简单高效。 【免费下载链接】mx-…

张小明 2026/1/8 12:27:55 网站建设

浙江建设职业技术学校网站登录wordpress 模版不能更新

SVG优化神器SVGOMG:5步快速压缩SVG文件体积 【免费下载链接】svgomg Web GUI for SVGO 项目地址: https://gitcode.com/gh_mirrors/sv/svgomg 在当今追求极致性能的网页设计时代,SVG矢量图形已成为提升用户体验的关键因素。然而,未经优…

张小明 2026/1/9 4:26:31 网站建设

常熟网站设计网站弹出咨询这个怎么做

鸿蒙 NEXT 桌面应用性能优化实战:从启动加速到内存控制的全链路调优指南 一、为什么鸿蒙桌面应用也需要性能优化? 尽管 HarmonyOS NEXT 基于微内核、采用 ArkCompiler AOT 编译,具备天然性能优势,但在实际开发中,我们…

张小明 2026/1/8 14:47:02 网站建设