国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

記一次 .NET某新能源MES 非托管泄露

開發(fā) 項目管理
這次事故主要是朋友用 CSharpCodeProvider 動態(tài)生成程序集導致的程序集泄露,猜測代碼是在哪里 copy 過來的,一定要搞清楚原理才能放心用,合理創(chuàng)建合理釋放。

一:背景

1. 講故事

前些天有位朋友找到我,說他們的程序有內(nèi)存泄露,跟著我的錯題集也沒找出是什么原因,剛好手頭上有一個 7G+ 的 dump,讓我?guī)兔聪率窃趺椿厥拢热徽业轿伊四蔷徒o他看看吧,不過他的微信頭像有點像 二道販子,不管到我這里是不是 三道,該分析的還得要分析呀。??????

二:WinDbg 分析

1. 到底是哪里的泄露

這個非常簡單,對用戶態(tài)內(nèi)存段做一個分組處理就明白了,可以用 windbg 的 !address -summary 觀察便知。

0:000> !address -summary
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                  44571     7ffc`f0900000 ( 127.988 TB)           99.99%
<unknown>                             77531        2`47cee000 (   9.122 GB)  74.52%    0.01%
Heap                                  16406        0`a45cf000 (   2.568 GB)  20.98%    0.00%
Image                                  2116        0`15ad7000 ( 346.840 MB)   2.77%    0.00%
Stack                                  2286        0`0d160000 ( 209.375 MB)   1.67%    0.00%
TEB                                     762        0`005f4000 (   5.953 MB)   0.05%    0.00%
Other                                    39        0`00207000 (   2.027 MB)   0.02%    0.00%
PEB                                       1        0`00001000 (   4.000 kB)   0.00%    0.00%

--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_FREE                              44571     7ffc`f0900000 ( 127.988 TB)           99.99%
MEM_COMMIT                            86575        1`e571e000 (   7.585 GB)  61.96%    0.01%
MEM_RESERVE                           12566        1`29fd2000 (   4.656 GB)  38.04%    0.00%

從卦中可以清晰的看到 MEM_COMMIT=7.5G 同時 Heap=2.5G,說明可能是托管內(nèi)存泄露,接下來用 !eeheap -gc 觀察下托管堆內(nèi)存。

0:000> !eeheap -gc
Number of GC Heaps: 1
generation 0 starts at 0x0000020F1BC03E80
generation 1 starts at 0x0000020F1AFE7BA0
generation 2 starts at 0x0000020D2E4B1000
ephemeral segment allocation context: none
Small object heap
         segment             begin         allocated         committed    allocated size    committed size
0000020D2E4B0000  0000020D2E4B1000  0000020D3E4B0000  0000020D3E4B0000  0xffff000(268431360)  0xffff000(268431360)
0000020D09830000  0000020D09831000  0000020D1982FFE0  0000020D19830000  0xfffefe0(268431328)  0xffff000(268431360)
0000020D9D9E0000  0000020D9D9E1000  0000020DAD9DFFB8  0000020DAD9E0000  0xfffefb8(268431288)  0xffff000(268431360)
0000020DD50C0000  0000020DD50C1000  0000020DE50BFFB0  0000020DE50C0000  0xfffefb0(268431280)  0xffff000(268431360)
0000020E10B90000  0000020E10B91000  0000020E20B8FF10  0000020E20B90000  0xfffef10(268431120)  0xffff000(268431360)
0000020E54C60000  0000020E54C61000  0000020E64C60000  0000020E64C60000  0xffff000(268431360)  0xffff000(268431360)
0000020E9C050000  0000020E9C051000  0000020EAC04FF70  0000020EAC050000  0xfffef70(268431216)  0xffff000(268431360)
0000020ED89B0000  0000020ED89B1000  0000020EE89AFF20  0000020EE89B0000  0xfffef20(268431136)  0xffff000(268431360)
0000020F11FF0000  0000020F11FF1000  0000020F1C20E0A8  0000020F1C21A000  0xa21d0a8(169988264)  0xa229000(170037248)
Frozen object heap
         segment             begin         allocated         committed    allocated size    committed size
Large object heap starts at 0x0000020D3E4B1000
         segment             begin         allocated         committed    allocated size    committed size
0000020D3E4B0000  0000020D3E4B1000  0000020D460B3F00  0000020D460D4000  0x7c02f00(130035456)  0x7c23000(130166784)
0000020D72620000  0000020D72621000  0000020D7A19C808  0000020D7A19D000  0x7b7b808(129480712)  0x7b7c000(129482752)
0000020D7CFD0000  0000020D7CFD1000  0000020D84B0CDF0  0000020D84B2D000  0x7b3bdf0(129220080)  0x7b5c000(129351680)
0000020E08B90000  0000020E08B91000  0000020E0FAC4350  0000020E0FAC5000  0x6f33350(116601680)  0x6f34000(116604928)
0000020F2A040000  0000020F2A041000  0000020F2DB4A738  0000020F2DB4B000  0x3b09738(61904696)  0x3b0a000(61906944)
Total Allocated Size:              Size: 0xabf0bd10 (2884680976) bytes.
Total Committed Size:              Size: 0xabf5a000 (2885001216) bytes.
------------------------------
GC Allocated Heap Size:    Size: 0xabf0bd10 (2884680976) bytes.
GC Committed Heap Size:    Size: 0xabf5a000 (2885001216) bytes.

從卦中數(shù)據(jù)看當前托管堆也才 2.8G,這就比較懵逼了,看樣子還是比較難搞的 非托管內(nèi)存泄露,內(nèi)存大概被 heap + VirtualAlloc/FileMap 合力吃掉了,接下來該怎么分析呢?有點迷茫。。。

2. 還有其他突破口嗎

一般來說這種問題看dump效果已經(jīng)很不好了,比較好的方式就是用 perfview 去監(jiān)控 VirtualAlloc,HeapAlloc 分配,但現(xiàn)在可惜的是我們只有一個dump,怎么辦呢?Windbg 命令除了可以看 ntheap,還可以看 clr 的私有堆,即 loader堆,或許有什么新的發(fā)現(xiàn),可以使用命令 !eeheap -loader 。

0:000> !dumpdomain
--------------------------------------
System Domain:      00007fffeb742af0
...
--------------------------------------
Domain 1:           0000020d2c794430
Assembly:           0000020d59298350 [mr4vbdbg, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
ClassLoader:        0000020D579778E0
SecurityDescriptor: 0000020D593DE320
  Module
  00007fff8f0a5af8    mr4vbdbg, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

Assembly:           0000020d5751b040 [51buoqnx, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
ClassLoader:        0000020D57974130
SecurityDescriptor: 0000020D593E0060
  Module
  00007fff8f059798    51buoqnx, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
...
Assembly:           0000020d5751c000 [r2bjpfrk, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
ClassLoader:        0000020D579741E0
SecurityDescriptor: 0000020D593DF340
  Module
  00007fff8f05aff8    r2bjpfrk, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
...
Assembly:           0000020d5929acf0 [qgt1j2cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
ClassLoader:        0000020D57976B20
SecurityDescriptor: 0000020D593DD6F0
  Module
  00007fff8f0a11d8    qgt1j2cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
...
Total size:      Size: 0x0 (0) bytes.
--------------------------------------
Total LoaderHeap size:   Size: 0x50f6d000 (1358352384) bytes total, 0x2f43000 (49557504) bytes wasted.
=======================================

我去,不看不知道,一看嚇一跳,刷了好久也沒刷完,,,看了下總大小是 1.35G,說明當前程序存在著程序集泄露,而且程序集的名字也是奇奇怪怪的比如上面的 r2bjpfrk , qgt1j2cs, 看樣子都是動態(tài)生成出來的。

這里要提醒一下的是,不要看這里面是 1.35G,它還會涉及到其他未被關(guān)聯(lián)到的內(nèi)存,比如 VirtualAlloc/MapFile/GCHeap 等等

接下來抽幾個 module 看看里面都定義了什么,使用 !dumpmodule -mt 命令即可。

0:000> !dumpmodule -mt 00007fff8f0a11d8
Name: qgt1j2cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Attributes:              PEFile 
Types defined in this module

              MT          TypeDef Name
------------------------------------------------------------------------------
00007fff8f0a1938 0x02000002 ServiceBase.WebService.DynamicWebLoad.xxxImplService

Types referenced in this module

              MT            TypeRef Name
------------------------------------------------------------------------------
00007fffc3232730 0x02000001 System.Web.Services.Protocols.SoapHttpClientProtocol
00007fffe81789e0 0x02000002 System.IAsyncResult
00007fffe81759d8 0x02000003 System.AsyncCallback
00007fffe15f42f8 0x02000004 System.Xml.Serialization.XmlElementAttribute
00007fffe57810a8 0x02000007 System.CodeDom.Compiler.GeneratedCodeAttribute
00007fffe80ee5f8 0x02000008 System.Diagnostics.DebuggerStepThroughAttribute
00007fffe5780210 0x02000009 System.ComponentModel.DesignerCategoryAttribute
00007fffc3239d60 0x0200000a System.Web.Services.WebServiceBindingAttribute
00007fffc323a2f8 0x0200000b System.Web.Services.Protocols.WebClientProtocol
00007fffc32322d8 0x0200000c System.Web.Services.Protocols.SoapDocumentMethodAttribute
00007fffe80f5dd8 0x0200000d System.Object
00007fffe80f59c0 0x0200000e System.String

經(jīng)過一頓搜索,發(fā)現(xiàn)模塊中都是這些內(nèi)容,仔細分析 TypeDef Name 和 TypeRef Name,大概就能猜測到,代碼中有 SoapHttpClient 去訪問這個 xxxImplService 類名的服務(wù)地址,有了這些信息就可以分析源碼了。

3. 尋找源碼

很快就定位到了代碼,原來是在請求 WebService 的過程中用 CSharpCodeProvider 動態(tài)生成了程序集,而且還塞了 4個 dll,截圖如下:

圖片圖片

到這里就知道了來龍去脈,最后就是讓朋友合理的去卸載這里的 程序集 ,或者干脆繞過去。

三:總結(jié)

這次事故主要是朋友用 CSharpCodeProvider 動態(tài)生成程序集導致的程序集泄露,猜測代碼是在哪里 copy 過來的,一定要搞清楚原理才能放心用,合理創(chuàng)建合理釋放。

責任編輯:武曉燕 來源: 一線碼農(nóng)聊技術(shù)
相關(guān)推薦

2023-10-07 13:28:53

.NET軟件賬本

2022-10-09 10:47:37

NET視覺軟件

2022-09-13 17:46:19

STA模式內(nèi)存

2023-07-06 10:11:38

.NET模式dump

2023-05-08 08:25:52

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調(diào)試

2023-05-12 17:42:22

CPUMES系統(tǒng)

2024-03-28 12:56:36

2023-04-06 10:52:18

2023-09-27 07:23:10

.NET監(jiān)控軟件

2023-03-26 20:24:50

ERP網(wǎng)站系統(tǒng)

2024-05-20 09:39:02

.NETurl線程池

2022-10-13 18:40:05

.NETOA后端

2024-03-26 00:44:53

.NETCIM系統(tǒng)

2024-07-12 11:20:34

.NET崩潰視覺程序

2024-07-01 13:00:24

.NET網(wǎng)絡(luò)邊緣計算

2024-11-29 10:06:59

2023-05-15 11:15:50

.NET門診語句

2024-07-09 11:51:20

Windows線程池源碼
點贊
收藏

51CTO技術(shù)棧公眾號

日本精品一区二区三区不卡无字幕| 亚洲不卡系列| 亚洲精品在线免费观看视频| 中文字幕av一区二区三区人| 色姑娘综合网| 欧美性色黄大片| 成人羞羞网站入口免费| 成人中文字幕av| 中文字幕久热精品视频在线| 亚洲一区成人| 91视频在线观看| 国产精品视频26uuu| 国产精品久久三| 懂色av一区二区| 欧美成人免费在线观看视频| 日韩有码中文字幕在线| 日韩一区二区欧美| 国产一区二区在线电影| 91av久久| 亚洲一区二区在| 亚洲人成网站777色婷婷| 日韩深夜视频| 久久亚洲中文字幕无码| 久久精品国产亚洲精品2020| 91香蕉视频污在线| 国产剧情一区| 小泽玛利亚视频在线观看| 国内外成人免费激情在线视频网站 | 亚洲色图35p| 韩国成人在线视频| 99久久免费精品国产72精品九九| 国产网站观看9久| 久久日韩精品| 亚洲人成啪啪网站| 亚洲国产精品av| 欧美永久精品| jizz性欧美| 免费无遮挡无码永久视频| 欧美一级电影久久| 欧美三级日韩三级国产三级| 日韩福利电影在线观看| 中文成人在线| 视频国产在线观看| 黄黄视频在线观看| 欧洲亚洲女同hd| 欧美精品一区二区三区蜜桃视频| 久久综合狠狠综合久久激情| 欧美岛国激情| 狠狠久久综合| 男男激情在线| 国产又大又黄又猛| 污视频在线免费观看一区二区三区 | 日本亚洲免费观看| 三级精品视频| 蜜桃视频动漫在线播放| 人猿泰山h版在线观看| 亚洲国产一区二区精品视频| 亚洲aⅴ男人的天堂在线观看| 精品国产乱码久久久久久牛牛 | 国产成人高清| 99re久久| 成人区精品一区二区| 国产精品午夜电影| 日韩在线亚洲| 日韩精品一区中文字幕| 欧美激情xxxx| ...xxx性欧美| 不卡在线一区二区| 国产黄色在线| 日本成人三级电影网站| 亚洲色图50p| 欧美激情一区二区三区全黄| 亚洲人成精品久久久| 久久精品蜜桃| 亚洲日本欧美在线| 欧美精品日韩www.p站| 一区二区欧美国产| 一本久道久久综合婷婷鲸鱼| 国产污视频在线播放| 第四色婷婷基地| 国产一区高清视频| 国产精品资源在线观看| 高潮精品一区videoshd| 欧美精品aa| 亚洲午夜精品一区二区国产| heyzo一区| 18视频在线观看娇喘| 不卡的av一区| 日韩欧美一区二区视频| 亚洲成人免费观看| 亚洲尤物在线| 欧美午夜不卡| 欧美少妇性xxxx| 亚洲精品大全| 欧美精品中文字幕亚洲专区| 日韩在线成人| 在线男人天堂| 日韩网站中文字幕| 欧美a级成人淫片免费看| 香蕉av一区| 成人在线视频成人| 欧美xxxx免费虐| 亚洲电影一级片| 99高清视频有精品视频| 国产精品夫妻自拍| 久久99成人| 国产极品在线视频| 一本一道久久a久久精品逆3p| 亚洲毛片av| a天堂在线资源| 97人人干人人| 欧美午夜视频在线观看| 欧美3p在线观看| 蜜桃av成人| 国产在线视频欧美| 精品成人久久av| 香蕉精品视频在线观看| 性欧美精品孕妇| 亚洲一区二区三区成人在线视频精品| 亚洲精品福利视频网站| 全球av集中精品导航福利| 亚洲欧美视频二区| 97国产suv精品一区二区62| 国产三级一区二区| 57pao国产一区二区| 91极品视频在线观看| 国产最新精品视频| 亚洲欧美色图小说| 99久久亚洲精品蜜臀| 国产精品免费播放| 精品综合久久久| 欧美mv日韩mv国产网站| 国产一区二三区| 日韩久久一区| 国产九九热视频| 国产欧美一区二区三区在线看| 岛国av一区二区三区| 激情欧美丁香| 999av小视频在线| 青青青青草视频| 欧美成人免费视频| 伊人婷婷欧美激情| 国产精品大片| gogo高清午夜人体在线| 妞干网在线观看视频| 欧美极品少妇xxxxⅹ免费视频| 亚洲精品日产精品乱码不卡| 911精品美国片911久久久| 亚洲小说区图片区都市| 国产亚洲黄色片| 日韩免费观看高清| 欧美精品黑人性xxxx| 久久电影网站中文字幕| 色综合一区二区日本韩国亚洲| 亚洲an天堂an在线观看| 国产精品免费一区二区三区观看| 亚洲成avwww人| 国产色91在线| 在线看片不卡| 欧美人与性动交xxⅹxx| 国产黄色高清在线| 欧美一区二区三区四区夜夜大片| 亚洲新中文字幕| 亚洲美女精品一区| 免费精品视频| 日韩成人视屏| 韩国中文免费在线视频| 日本香蕉视频在线观看| 国产精品扒开腿爽爽爽视频| 日韩一区二区精品葵司在线| 久久无码av三级| 伊人狠狠色j香婷婷综合| 日日夜夜综合| 国内在线免费高清视频| 免费看的黄色大片| 国产偷国产偷亚洲高清97cao| 色偷偷888欧美精品久久久 | 97国产一区二区精品久久呦| 在线观看免费亚洲| 成人av在线播放网站| 午夜精品久久久久久久四虎美女版| 在线看的毛片| 亚洲mv在线| 无码人妻少妇伦在线电影| 成人a在线观看| 国产亚洲欧洲在线| 欧美午夜电影在线| 成人免费高清在线| 欧美婷婷在线| 中文无码日韩欧| 日本高清成人vr专区| 理论视频在线观看| 2021国产视频| 国产成人精品免费视频大全最热 | 国产欧美一区二区在线| av成人黄色| 精品国产精品国产偷麻豆| 亚洲播播91| 国产午夜精品久久久久免费视| 成人黄色激情网站|