精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

記一次 .NET某工廠報警監控設置崩潰分析

開發 前端
前些天有位朋友在微信上丟了一個崩潰的dump給我,讓我幫忙看下為什么出現了崩潰,在 Windows 的事件查看器上顯示的是經典的 訪問違例 ,即 c0000005 錯誤碼,不管怎么說有dump就可以上windbg開干了。

一、背景

1. 講故事

前些天有位朋友在微信上丟了一個崩潰的dump給我,讓我幫忙看下為什么出現了崩潰,在 Windows 的事件查看器上顯示的是經典的 訪問違例 ,即 c0000005 錯誤碼,不管怎么說有dump就可以上windbg開干了。

二、WinDbg 分析

1. 程序為誰崩潰了

在 Windows 平臺上比較簡單,可以用 !analyze -v 命令查看,輸出結果如下:

0:120> !analyze -v
...
CONTEXT:  (.ecxr)
rax=0000000000000000 rbx=000000d5140fcf00 rcx=0000000000000000
rdx=000001d7f61cf1d8 rsi=000001d7d3635a10 rdi=000000d5140fc890
rip=00007ff80e17d233 rsp=000000d5140fc760 rbp=000000d5140fc8a0
 r8=000001d7d3308144  r9=0000000000000000 r10=0000000000000000
r11=000001d96736b620 r12=000000d5140fca08 r13=00007ff80d326528
r14=000000d5140fcf00 r15=0000000000000000
iopl=0         nv up ei pl nz na po nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010206
00007ff8`0e17d233 3909            cmp     dword ptr [rcx],ecx ds:00000000`00000000=????????
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00007ff80e17d233
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000000
   Parameter[1]: 0000000000000000
Attempt to read from address 0000000000000000

ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%p            0x%p                    %s

EXCEPTION_CODE_STR:  c0000005

STACK_TEXT:  
000000d5`140fc760 00007ff8`6bcc6d93     : 000001d7`d3635a10 000000d5`140fcb80 00007ff8`6bcfda57 00007ff8`695acc92 : 0x00007ff8`0e17d233
000000d5`140fc8b0 00007ff8`6bcc6c48     : 00000000`00000004 00007ff8`6be5ba73 00000000`00000000 00000000`00000000 : clr!CallDescrWorkerInternal+0x83
000000d5`140fc8f0 00007ff8`6be5bf66     : 000001d7`d3635a10 00000000`00000000 000000d5`140fcad8 00000000`00000000 : clr!CallDescrWorkerWithHandler+0x4e
000000d5`140fc930 00007ff8`6be5c41f     : 00000000`00000000 000000d5`140fca30 00000000`00000000 000000d5`140fcb60 : clr!CallDescrWorkerReflectionWrapper+0x1a
000000d5`140fc980 00007ff8`69993ee4     : 00000000`00000000 00000000`00000000 000001d7`d3635a10 00007ff8`699f9700 : clr!RuntimeMethodHandle::InvokeMethod+0x45f
000000d5`140fcf90 00007ff8`6997eeae     : 000001d7`d3376af0 00000000`00000000 00000000`0000011e 00007ff8`699f82f3 : mscorlib_ni!System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal+0x104
000000d5`140fd000 00007ff8`699c3a06     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : mscorlib_ni!System.Reflection.RuntimeMethodInfo.Invoke+0x8e
000000d5`140fd080 00007ff8`0dfb7bb3     : 000001d7`d3635998 000001d7`d45e28e0 00000000`0000011c 000001d7`d3376af0 : mscorlib_ni!System.RuntimeType.InvokeMember+0x306
...
STACK_COMMAND:  ~120s; .ecxr ; kb
...

從卦中信息看崩潰的匯編語句是 dword ptr [rcx],ecx ,經??碈#匯編代碼的朋友我相信對這條語句非常敏感,對,它就是JIT自動插入的一條 this!=null 的防御性判斷,看樣子程序有 this=null 的情況,接下來入手點就是RIP處 ExceptionAddress: 00007ff80e17d233,用 !U 觀察下上下文。

0:120> !U 00007ff80e17d233
Normal JIT generated code
MyScript.Process()
Begin 00007ff80e17d1c0, size 3d5
00007ff8`0e17d1c0 55              push    rbp
00007ff8`0e17d1c1 57              push    rdi
00007ff8`0e17d1c2 56              push    rsi
00007ff8`0e17d1c3 4881ec30010000  sub     rsp,130h
00007ff8`0e17d1ca c5f877          vzeroupper
...
00007ff8`0e17d220 e813c1edfe      call    00007ff8`0d059338 (xxx.GetRegion(System.String, Boolean), mdToken: 000000000600034f)
00007ff8`0e17d225 48898570ffffff  mov     qword ptr [rbp-90h],rax
00007ff8`0e17d22c 488b8d70ffffff  mov     rcx,qword ptr [rbp-90h]
>>> 00007ff8`0e17d233 3909            cmp     dword ptr [rcx],ecx
00007ff8`0e17d235 e8de87edfe      call    00007ff8`0d055a18 (xxx.get_Region(), mdToken: 0000000006000073)

從卦中的匯編代碼看邏輯非常清晰,即 xxx.GetRegion() 方法返回為null,然后在取其中的 Region 屬性時直接崩掉,說白了這是一個簡單的 空引用異常,完整的代碼截圖如下:

圖片圖片

奇怪就奇怪在這里,代碼中明明用 try catch 給包起來了,為什么程序直接崩掉了。

2. 為什么try catch 無效

尼瑪,這是我這幾年做dump分析第一次遇到這種情況,真的是無語了,接下來我們驗證下這個異常是否到了托管層?

  • 是否有 NullReferenceException

熟悉dump分析的朋友應該知道,如果線程拋了異常在回溯的過程中會記錄到 Thread.m_LastThrownObjectHandle 字段中,同時 !t 命令可以在 Exception 列中看到此信息。

0:120> !t
ThreadCount:      48
UnstartedThread:  0
BackgroundThread: 47
PendingThread:    0
DeadThread:       0
Hosted Runtime:   no
                                                                                                        Lock  
       ID OSID ThreadOBJ           State GC Mode     GC Alloc Context                  Domain           Count Apt Exception
   0    1 29dc 000001d7d162d5d0    26020 Preemptive  000001D7D8228A00:000001D7D8228D28 000001d7d1602380 0     STA 
 ...
 159   18 22dc 000001d967906ff0  1029220 Preemptive  000001D7D834E558:000001D7D834E558 000001d7d1602380 1     MTA (GC) (Threadpool Worker) 
 ...

但從卦中數據看所有的 Exception 列都沒有異常信息,這就表示程序沒有走到 CLR 的異常處理鏈條上,至少是不完整的。

  • 是否有 AccessViolationException

參加過 C#內功修煉訓練營 的朋友應該都知道,這種 c0000005 的異常在 C#層面最終會被map成兩種異常中的其一,即 NullReferenceException 和 AccessViolationException,選擇其一的邏輯就是判斷 RIP 是在托管層還是非托管層,模型圖如下:

圖片圖片

但遺憾的是在 !t 的列表中也沒有任何的 AccessViolationException 字樣,這也更加確認了它沒有調用異常處理鏈中的 CreateThrowable 函數。。。

事出反常必有妖,在 !t 的輸出結果中可以看到此時 159號線程觸發了 GC,接下來切過去看一看。

0:120> ~159s
ntdll!NtQueryInformationThread+0x14:
00007ff8`8317ea34 c3              ret
0:159> k
 # Child-SP          RetAddr               Call Site
00 000000d5`00c3e7d8 00007ff8`7f216e2e     ntdll!NtQueryInformationThread+0x14
01 000000d5`00c3e7e0 00007ff8`6bcea731     KERNELBASE!GetThreadPriority+0x1e
02 000000d5`00c3e850 00007ff8`6be69cc5     clr!Thread::GetThreadPriority+0x56
03 000000d5`00c3e8a0 00007ff8`6be69bc4     clr!ThreadSuspend::SuspendRuntime+0xa5
04 000000d5`00c3e990 00007ff8`6bd814e3     clr!ThreadSuspend::SuspendEE+0x128
05 000000d5`00c3ea90 00007ff8`6bd85f51     clr!WKS::GCHeap::GarbageCollectGeneration+0xb7
06 000000d5`00c3eaf0 00007ff8`6be7ee6b     clr!WKS::gc_heap::trigger_gc_for_alloc+0x2d
07 000000d5`00c3eb30 00007ff8`470e53ec     clr!JIT_New+0x4d6
08 000000d5`00c3eee0 00007ff8`470e537c     Microsoft_VisualBasic_ni!Microsoft.VisualBasic.Strings.ReplaceInternal+0x3c [f:\dd\vb\runtime\msvbalib\Strings.vb @ 761] 
09 000000d5`00c3ef80 00007ff8`0d04f81f     Microsoft_VisualBasic_ni!Microsoft.VisualBasic.Strings.Replace+0x15c [f:\dd\vb\runtime\msvbalib\Strings.vb @ 737] 
...

從卦中的線程棧來看,此時正在 SuspendEE 階段,而且還是處于早期階段,正在準備給 SuspendThread 安排一個好的優先級,主要是怕優先級太低了,導致 線程饑餓 得不到調度,畢竟 GC Process 的過程一定要是快中再快,接下來我們看下程序的 framework 版本。

0:159> !eeversion
4.7.3190.0 free
Workstation mode
SOS Version: 4.7.3190.0 retail build

可以看到還是比較老的 .netframework 4.7.3,結合這么多信息,我個人覺得這可能是 CLR 的一個 bug,在 SuspendEE 階段的早期(還沒有 foreach threads)剛好遇到了一個硬件異常,這個 硬件異常 CLR 在業務邏輯上沒處理好,導致 SEH 異常沒有引入到 托管層,或者中途的某一環斷掉了,我放一張C#內功修煉訓練營 中的硬件異常完整流程圖。

圖片圖片

最后給到朋友的建議比較簡單:

  • 判 null 的時候一定要加 null 判斷,避免異常邏輯。
  • 升級 framework 到最新的 4.8.1 觀察。

三:總結

這次程序崩潰的原因很簡單,就是 空引用異常 ,但詭異就詭異在明明有 trycatch 在外部,硬是沒接住,這個大概率是 CLR 的 bug,讓我這個分析多年dump的老手都嘆為觀止,開了眼界,無語了無語了...

責任編輯:武曉燕 來源: 一線碼農聊技術
相關推薦

2024-03-28 12:56:36

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調試

2022-10-25 14:17:01

.NET代碼程序

2024-07-09 11:51:20

Windows線程池源碼

2024-05-31 12:56:06

.NET代碼方法

2025-10-29 01:11:00

.NET系統windows

2023-06-29 17:55:00

.NET日志WinDbg

2023-03-26 20:24:50

ERP網站系統

2024-07-12 11:20:34

.NET崩潰視覺程序

2024-03-26 00:44:53

.NETCIM系統

2023-04-06 10:52:18

2024-06-04 10:54:34

.NET代碼程序

2023-09-27 07:23:10

.NET監控軟件

2025-09-05 02:22:00

.NETCRM物流行業

2023-11-01 10:46:12

.NET線程同步

2024-08-27 13:08:50

2022-01-17 21:28:36

管理系統.NET

2024-07-01 13:00:24

.NET網絡邊緣計算

2021-10-27 07:30:32

.NETCPU論壇
點贊
收藏

51CTO技術棧公眾號

av动漫免费观看| 欧美精品一区二区免费| 37pao成人国产永久免费视频| 色猫av在线| 美女www一区二区| 久久久精品一区| 国产精品久久久久久亚洲av| 在线成人av观看| 中文字幕在线免费不卡| 成人在线观看91| 欧美日韩 一区二区三区| 91九色精品| 日韩精品在线视频观看| xxx国产在线观看| a级片免费在线观看| 国产拍欧美日韩视频二区| 成人黄色大片在线免费观看| 99精品视频99| 66视频精品| 亚洲天堂av综合网| 国产女主播在线播放| 成人高清一区| 黑人巨大精品欧美一区二区三区 | 无码粉嫩虎白一线天在线观看| 青青草观看免费视频在线| 精品午夜一区二区三区在线观看| 69影院欧美专区视频| 日本精品在线免费观看| 精品日韩欧美一区| 亚洲精品美女久久久| 自拍一级黄色片| 97人人做人人爽香蕉精品| 精品久久久视频| bt天堂新版中文在线地址| 日本最黄一级片免费在线| 91麻豆.com| 国产精品久久亚洲7777| 一卡二卡在线观看| 美腿丝袜亚洲一区| 国产精品69久久| 日韩视频在线观看一区| 国模 一区 二区 三区| 久久亚洲国产精品成人av秋霞| 97伦伦午夜电影理伦片| 亚洲电影男人天堂| 亚洲精品久久久久中文字幕二区| 亚洲国产精品第一页| 国色天香久久精品国产一区| 欧美日韩国产综合一区二区| 黑森林福利视频导航| 久久精品综合一区| 精品一区在线视频| 香蕉视频国产精品| www国产91| 亚洲黄色网址大全| 欧美亚洲国产精品久久| 伊人激情综合网| www.99热| 日本一区二区在线看| 在线观看中文字幕亚洲| 一级片久久久久| 成人亚洲一区| 色老头一区二区三区在线观看| 国产三级在线观看完整版| 欧洲福利电影| 中文字幕免费精品一区| 性少妇xx生活| 天天射成人网| 欧美肥老妇视频| 久久久久久久久久久97| 日韩激情毛片| 亚洲图中文字幕| 999福利视频| 午夜精品久久久久久久四虎美女版| 日韩在线播放一区| 久草免费新视频| 亚洲成人直播| 日本韩国在线不卡| 黄色一区二区视频| 国精品**一区二区三区在线蜜桃| 国产精品灌醉下药二区| 俄罗斯精品一区二区三区| 成人午夜免费福利| ww亚洲ww在线观看国产| 亚洲a∨一区二区三区| 黄视频在线观看网站| 艳妇臀荡乳欲伦亚洲一区| 中文字幕无码精品亚洲35| 日韩av首页| 日韩午夜在线观看| 日本护士做爰视频| 成人一区二区| 欧美成人精品激情在线观看| 伊人久久综合视频| 青青草成人在线观看| 2022国产精品| 欧美视频综合| 亚洲视频资源在线| 欧美网站免费观看| 国产欧美自拍| 精品国产伦理网| 亚洲一区 欧美| 欧美人成网站| 国产精品久久久久久久久久久久 | 日本少妇xxxxx| 一级欧洲+日本+国产| 97不卡在线视频| 国产一区二区三区四区视频| 羞羞视频在线免费国产| 韩国自拍一区| 国产99久久精品一区二区| 国产精品国产一区二区三区四区 | 欧美专区日韩专区| 少妇性l交大片7724com| 欧美一区二区三区激情视频| 欧美激情在线观看视频| 中文无码av一区二区三区| www.欧美日韩国产在线| 成年人免费观看的视频| 竹内纱里奈兽皇系列在线观看| 欧美裸体bbwbbwbbw| 欧美亚一区二区三区| 欧美影视一区| 国产综合久久久久久| 欧美日本网站| 五月开心婷婷久久| 人妻精品久久久久中文字幕69| 国内精品久久久久久久久电影网| 欧美激情亚洲自拍| 国产精品一区二区黑人巨大| 久久女同互慰一区二区三区| 欧美中文字幕在线观看视频 | 一本久道久久综合中文字幕| 9.1在线观看免费| 亚洲va在线| 国内外成人免费激情在线视频| av漫画在线观看| 欧美gay男男猛男无套| 亚洲97在线观看| 精品黑人一区二区三区国语馆| 国产亚洲精品福利| 国产无套内射久久久国产| 国产成人夜色高潮福利影视| 色综合天天综合网国产成人网| 97超碰国产在线| 亚洲国产精品av| 成人三级视频在线播放| 麻豆精品av| 久久久久久久久久婷婷| 国产成年妇视频| 自拍偷拍国产亚洲| 日本人69视频| 国产大片一区| 国产日韩欧美自拍| 中文字幕在线播放| 欧美视频日韩视频| 91禁男男在线观看| 精品一区二区三区视频| 桥本有菜av在线| 91麻豆精品一二三区在线| 日韩中文字幕在线观看| 伊人精品一区二区三区| 日本一区二区免费在线| 色悠悠久久综合网| 欧美一级本道电影免费专区| 成人国内精品久久久久一区| 日p在线观看| 91麻豆精品国产自产在线 | 国产欧美日韩综合精品一区二区| av天堂永久资源网| 欧美男同视频网| 国产精品视频xxx| 男人天堂手机在线| 日韩一级视频免费观看在线| 久久免费播放视频| 93久久精品日日躁夜夜躁欧美| 婷婷五月综合缴情在线视频| 欧洲亚洲一区二区三区| 日本午夜精品理论片a级appf发布| 毛片在线能看| 欧美喷潮久久久xxxxx| 天天做夜夜爱爱爱| 成人免费福利片| 激情五月开心婷婷| 成人国产精品一级毛片视频| 成人精品久久一区二区三区| 免费毛片在线看片免费丝瓜视频| 日韩电影大片中文字幕| 久久久久久无码午夜精品直播| 国产精品美女久久福利网站| 天堂av.com| 亚洲国产日本| 日韩欧美国产二区| 国产精品久久久久久久久久久久久久久| 久热精品视频在线免费观看| 天堂在线资源库| 欧美性感一类影片在线播放| 欧美成人免费看| 久久先锋影音av| www.色就是色.com| 中文精品视频| 亚洲一区二区三区乱码| 大奶在线精品| 国产精品美女www| 激情av在线播放| 一本色道久久88综合亚洲精品ⅰ| 亚洲AV无码一区二区三区性 | 中文字幕无码人妻少妇免费| 日韩国产高清影视| 女人床在线观看| 最新精品国偷自产在线| 亚洲自拍偷拍视频| 综合在线影院| 欧美黑人xxxx| 日韩免费网站| 日韩国产一区三区| 国产黄色高清视频| 欧美视频中文字幕| 国产成人无码精品久久久久| 日韩码欧中文字| 深爱五月激情网| 成人在线视频一区| 三级在线视频观看| 亚洲综合国产| www.欧美黄色| 一区二区三区四区日韩| 视频在线一区二区三区| 欧美色资源站| 97av自拍| 精品中文字幕一区二区三区四区| 国产精品18久久久久久麻辣| 极品av在线| 欧美国产激情18| 欧美被日视频| 在线日韩精品视频| 男人av在线| 亚洲加勒比久久88色综合| 午夜精品久久久久久久99热黄桃 | 人人妻人人玩人人澡人人爽| 7777精品伊人久久久大香线蕉完整版 | 国产精品每日更新在线播放网址| 最新中文字幕视频| 波波电影院一区二区三区| 一级黄色片在线免费观看| 免费一级欧美片在线观看网站| 亚洲欧美另类久久久精品| jizz日本免费| 99精品视频在线观看免费| 日本精品一二三区| 粉嫩av一区二区三区粉嫩| 夜夜爽久久精品91| 国产一区二区三区av电影| 亚洲男人天堂2021| 国产在线观看免费一区| 热久久久久久久久| 久久99国内精品| 午夜免费一级片| 精一区二区三区| 在线一区二区不卡| 国产一区视频在线看| 精品人妻一区二区三| 国产精品69毛片高清亚洲| 日批视频在线看| 国产福利一区二区三区视频| 一起草最新网址| 国产.欧美.日韩| 大尺度做爰床戏呻吟舒畅| 91在线一区二区| 男女做爰猛烈刺激| 国产精品私人自拍| 国产一二三四区| 亚洲综合色在线| 亚洲精品国产精品乱码| 色婷婷综合久色| 曰批又黄又爽免费视频| 欧美日韩国产大片| 国产高清第一页| 亚洲国产精品悠悠久久琪琪| 欧美伦理影视网| 日韩中文字幕免费视频| 亚洲卡一卡二| 26uuu国产精品视频| 丁香婷婷久久| 亚洲在线视频福利| 日本中文字幕在线一区| 亚洲日韩第一页| 青青在线视频免费| 日韩午夜在线| 国产高清视频网站| 国产老妇另类xxxxx| 国产成人精品无码片区在线| 国产欧美日韩亚州综合 | 樱桃国产成人精品视频| 国产精品第二十页| 在线观看区一区二| 国产jzjzjz丝袜老师水多| 日韩电影免费在线观看中文字幕| 亚洲精品国产手机| 亚洲最新视频在线| 丰满的护士2在线观看高清| 国产成人小视频在线观看| 精品一区二区三区免费看| 久久久久久亚洲精品不卡4k岛国 | 中文字幕一精品亚洲无线一区| av网址在线免费观看| 国产91成人在在线播放| 亚洲伦理一区二区| 久久青青草综合| 亚洲人成免费网站| 熟女人妇 成熟妇女系列视频| 国产一区二区伦理| 久久久久亚洲av成人无码电影| 亚洲精品中文字幕乱码三区 | 久久久久久穴| 香蕉视频在线观看黄| 久久女同互慰一区二区三区| 神马影院午夜我不卡| 国产一二三区在线| 欧美大码xxxx| 国产精品成人国产| 久久久久久欧美精品色一二三四| 亚洲综合自拍| 伊人影院综合在线| 国产性天天综合网| 成人精品免费在线观看| 日韩女优av电影| 天堂地址在线www| 国产精品成人av在线| 欧美日韩一区二区三区在线电影 | 亚洲国产综合在线看不卡| 午夜精品久久久久久久99热影院| 久久综合av免费| 2019男人天堂| 日本久久一区二区三区| 日本人妻熟妇久久久久久| 精品中文字幕乱| 成人乱码手机视频| 一区二区三区四区欧美日韩| 日日夜夜精品免费视频| 欧美性xxxx图片| 香蕉成人啪国产精品视频综合网 | 高清不卡一区二区| 色哟哟一一国产精品| 欧美色成人综合| 国产无套粉嫩白浆在线2022年| 97超级碰碰人国产在线观看| 精品国产午夜肉伦伦影院| www.成年人视频| 丁香婷婷深情五月亚洲| 免费看一级一片| 日韩欧美区一区二| 日本资源在线| 国产高清一区视频| 欧美成人69| 国产人妻精品午夜福利免费| 亚洲香肠在线观看| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 国产真实的和子乱拍在线观看| 欧美成人一级视频| 久久久123| 国产三区精品| 国产视频欧美| 中文字幕国产专区| 欧美在线不卡视频| 成人一区二区不卡免费| 国产精品一二区| 五月精品视频| 中文字幕1区2区| 色88久久久久高潮综合影院| 国产ts一区二区| 同性恋视频一区| 天天碰免费视频| 亚洲欧洲国产日韩| www.久久综合| 欧美亚洲视频一区二区| 精品久久久久久久久久久aⅴ| 伊人影院综合在线| 亚洲精选免费视频| 视频午夜在线| 国产精品一区二区三区久久| 欧美不卡视频| 亚洲午夜福利在线观看| 欧美日韩一二三| 国产白丝在线观看| 欧美另类视频在线| 国产综合一区二区| 日韩欧美一区二区一幕| 在线视频免费一区二区| 久久久久亚洲精品中文字幕| 给我免费播放片在线观看| 久久精品一区蜜桃臀影院| 国产在成人精品线拍偷自揄拍| 欧美极品美女电影一区| 精品国产一区二区三区| xxxx视频在线观看| 色老汉一区二区三区| 亚洲图区一区| 日本一区网站| 懂色av一区二区三区免费观看| 成人h动漫精品一区二区下载 |