日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

記一次 .NET 某質量檢測中心系統崩潰分析

來源: 責編: 時間:2024-06-05 17:44:13 144觀看
導讀一、背景1. 講故事這些天有點意思,遇到的幾個程序故障都是和Windows操作系統或者第三方組件有關系,真的有點無語,今天就帶給大家一例 IIS 相關的與大家分享,這是一家國企的.NET程序,出現了崩潰急需分析。二、WinDbg 分析1.

一、背景

1. 講故事

這些天有點意思,遇到的幾個程序故障都是和Windows操作系統或者第三方組件有關系,真的有點無語,今天就帶給大家一例 IIS 相關的與大家分享,這是一家國企的.NET程序,出現了崩潰急需分析。NlE28資訊網——每日最新資訊28at.com

二、WinDbg 分析

1. 為什么會崩潰

崩潰原因相對還是好找的,雙擊dump文件之后錯誤信息馬上就列出來了,參考如下:NlE28資訊網——每日最新資訊28at.com

This dump file has an exception of interest stored in it.The stored exception information can be accessed via .ecxr.(3950.1890): Stack overflow - code c00000fd (first/second chance not available)For analysis of this file, run !analyze -veax=72ae2290 ebx=00000000 ecx=72afa1c0 edx=00000000 esi=72afa1c0 edi=01cb1d7ceip=72afa1e6 esp=3e673000 ebp=3e673010 iopl=0         nv up ei pl zr na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246iiscore+0x1a1e6:72afa1e6 ff15a064b172    call    dword ptr [iiscore!GetProtocolManager+0x9370 (72b164a0)] ds:002b:72b164a0=72af5ab0

從卦中的 Stack overflow - code c00000fd 來看,這又是一個經典的棧溢出導致的崩潰,這里棧溢出崩潰的原理就不說了,接下來觀察下是什么代碼導致的,難道又是一個死循環嗎?NlE28資訊網——每日最新資訊28at.com

2. 到底是誰誘導的

要想找到是誰誘導的,肯定要看下頂層代碼是什么,使用 k 0xffff 即可。NlE28資訊網——每日最新資訊28at.com

2732 3e6adcc0 72afa1f0     iiscore+0x1a1f02733 3e6adcd8 72afa1f0     iiscore+0x1a1f02734 3e6adcf0 72afa1f0     iiscore+0x1a1f02735 3e6add08 72afa1f0     iiscore+0x1a1f02736 3e6add20 72afa1f0     iiscore+0x1a1f02737 3e6add38 72afa1f0     iiscore+0x1a1f0...273e 3e6ade8c 734e8a9b     webengine4!W3_MGD_HANDLER::ReadEntityBody+0x134273f 3e6adeac 60251594     webengine4!MgdReadEntityBody+0x5b...2762 3e6aed0c 601fecc3     System_Web_ni+0x2319412763 3e6aee00 601fe80f     System_Web_ni+0x1decc32764 3e6aee28 028fe29a     System_Web_ni+0x1de80f2765 3e6aee48 72cbfa41     0x28fe29a2766 3e6aeea8 72cbf972     clr!UM2MThunk_Wrapper+0x76...276a 3e6af024 7348ab83     webengine4!W3_MGD_HANDLER::ProcessNotification+0x62276b 3e6af038 72b3bc52     webengine4!ProcessNotificationCallback+0x33

從卦象看,它的走勢大概是 托管 -> webengine4 -> iiscore ,然后就死掉了,很顯然 iiscore 是 iis 的核心組件,可以用 lmvm 觀察下。NlE28資訊網——每日最新資訊28at.com

0:087> lmvm iiscoreBrowse full module liststart    end        module name72ae0000 72b1f000   iiscore    (export symbols)       iiscore.dll    Loaded symbol image file: iiscore.dll    Image path: C:/Windows/System32/inetsrv/iiscore.dll    Image name: iiscore.dll    Browse all global symbols  functions  data    Timestamp:        Fri Sep  8 11:04:45 2023 (64FA8F4D)    CheckSum:         00042ABA    ImageSize:        0003F000    File version:     8.5.9600.21613    Product version:  8.5.9600.21613    File flags:       0 (Mask 3F)    File OS:          40004 NT Win32    File type:        2.0 Dll    File date:        00000000.00000000    Translations:     0000.04b0    Information from resource tables:        CompanyName:      Microsoft Corporation        ProductName:      Internet Information Services        InternalName:     iiscore.dll        OriginalFilename: iiscore.dll        ProductVersion:   8.5.9600.21613        FileVersion:      8.5.9600.21613 (winblue_ltsb.230907-1700)        FileDescription:  IIS Web Server Core        LegalCopyright:   ? Microsoft Corporation. All rights reserved.

其實到這里就有很大的好奇心,到底是什么代碼這么厲害,能導致底層的 iiscore 死循環,可以使用 !clrstack 觀察下托管棧。NlE28資訊網——每日最新資訊28at.com

0:087> !clrstackOS Thread Id: 0x1890 (87)Child SP       IP Call Site3e6aded4 72afa1e6 [InlinedCallFrame: 3e6aded4] 3e6aded0 60251594 DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, Byte[], Int32, Int32, Boolean, Int32 ByRef, IntPtr ByRef)3e6aded4 60250906 [InlinedCallFrame: 3e6aded4] System.Web.Hosting.UnsafeIISMethods.MgdReadEntityBody(IntPtr, Byte[], Int32, Int32, Boolean, Int32 ByRef, IntPtr ByRef)3e6adf28 60250906 System.Web.Hosting.IIS7WorkerRequest.ReadEntityCoreSync(Byte[], Int32, Int32)3e6adf64 602508b9 System.Web.Hosting.IIS7WorkerRequest.ReadEntityBody(Byte[], Int32)3e6adf74 6020dcfc System.Web.HttpRequest.GetEntireRawContent()3e6adfa0 6020cc50 System.Web.HttpRequest.FillInFormCollection()3e6adfdc 6020ebb6 System.Web.HttpRequest.EnsureForm()3e6adfec 6020eb3e System.Web.HttpRequest.get_Form()3e6adff8 2e17391e xxx.RequestFilterModule.CheckRequest()

接下來觀察托管層的 CheckRequest() 的鏈路,截圖如下:NlE28資訊網——每日最新資訊28at.com

圖片圖片NlE28資訊網——每日最新資訊28at.com

這簡直太不可思議了,一句平常無奇的 base.Request.Form != null 代碼,居然把IIS給弄崩掉了,很顯然問題大概率不在 托管層。NlE28資訊網——每日最新資訊28at.com

3. iiscore 在執行什么死循環

托管層這條路斷了之后,接下來在回頭觀察 iiscore 處的匯編代碼,截圖如下:NlE28資訊網——每日最新資訊28at.com

圖片圖片NlE28資訊網——每日最新資訊28at.com

由于沒有 iiscore 的源代碼,也沒有做復原的必要,但不管怎么樣,可以看到這地方確實存在著死循環,我們在用戶態沒法去做修補,最后看下當前系統情況。NlE28資訊網——每日最新資訊28at.com

0:087> vertargetWindows 8.1 Version 9600 MP (8 procs) Free x86 compatibleProduct: Server, suite: TerminalServer SingleUserTSEdition build lab: 6.3.9600.18217 (winblue_ltsb.160124-0053)Debug session time: Tue Mar 19 10:00:33.000 2024 (UTC + 8:00)System Uptime: 46 days 1:32:14.541Process Uptime: 0 days 19:11:55.000  Kernel time: 0 days 0:06:09.000  User time: 0 days 0:14:38.000

可以看到當前是 Windows Server 2012 R2,跑的是 IIS 8.5 ,由于 IIS 是強綁到 Windows的,所以能給到的建議就是:NlE28資訊網——每日最新資訊28at.com

  1. 使用 SFC /SCANNOW 檢修下系統文件,這是某軟 CSS 的那幫人最喜歡用的命令 O(∩_∩)O
  2. 升級操作系統,提升 IIS 的版本。

三、總結

有時候程序崩潰往往不是你代碼寫的爛,極有可能是底層承載的bug導致的,甚至罪魁禍首是環境中的輻射,所以分析崩潰類的dump也挺玄學的,以后程序出問題第一時間不要大包大攬的往自己身上背,找出問題才是關鍵。NlE28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-92136-0.html記一次 .NET 某質量檢測中心系統崩潰分析

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用 Visual Studio 分析 .NET Dump

下一篇: Rust 開發到底用 RustRover 與還是 VS Code Rust 插件?

標簽:
  • 熱門焦點
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的“今天”,百度也很迷茫。“新業務到 2022 年底還是 0,希望 2023 年出來一個 1。”這是2022年底,李彥宏
  • 利用職權私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據外媒援引知情人士表示,過去一年時間內,Facebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內部系統以不當方式重置用戶帳號,其
Top 主站蜘蛛池模板: 宁南县| 舟曲县| 夏津县| 随州市| 疏勒县| 舒兰市| 农安县| 涿州市| 上思县| 罗田县| 惠安县| 手机| 招远市| 偃师市| 七台河市| 通城县| 瑞丽市| 新宾| 张家界市| 城固县| 高碑店市| 莎车县| 富宁县| 拉萨市| 青川县| 凤庆县| 会宁县| 阿合奇县| 印江| 罗江县| 高要市| 巩义市| 卢湾区| 张北县| 盐边县| 扎鲁特旗| 曲沃县| 美姑县| 怀远县| 林甸县| 大荔县|