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

記一次 .NET某實(shí)驗(yàn)室自動(dòng)進(jìn)樣系統(tǒng)崩潰分析

開(kāi)發(fā) 前端
既然是程序的崩潰,自然是有原因的,皮褲套棉褲,必定有緣故,不是皮褲太薄就是棉褲沒(méi)毛,用 !analyze -v 觀察下異常信息。

一、背景

1. 講故事

前些天有位朋友在微信上聯(lián)系到我,說(shuō)他們的程序在客戶那邊崩掉了,讓我?guī)兔聪略趺椿厥拢琩ump也拿到了,那就上手分析吧。

二、WinDbg 分析

1. 哪里的崩潰

既然是程序的崩潰,自然是有原因的,皮褲套棉褲,必定有緣故,不是皮褲太薄就是棉褲沒(méi)毛,用 !analyze -v 觀察下異常信息。

0:107> !analyze -v

CONTEXT:  (.ecxr)
rax=0000005e0dc7c4a0 rbx=0000005e0dc7c400 rcx=0000005e0dc7c4a0
rdx=0000000000000000 rsi=0000005e0dc7c3f0 rdi=0000005e0dc7c4a0
rip=00007ffb1ecfc223 rsp=0000005e0dc7c3c0 rbp=0000005e0dc7c4c0
 r8=00000000000004d0  r9=0000000000000000 r10=0000000000000000
r11=0000005e0dc7c4a0 r12=0000000000000000 r13=000002079d450220
r14=000002079b93aba0 r15=0000000000000000
iopl=0         nv up ei pl nz na pe nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000200
coreclr!EEPolicy::HandleFatalError+0x7f:
00007ffb`1ecfc223 488d442440      lea     rax,[rsp+40h]
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00007ffb1ec6d70f (coreclr!ProcessCLRException+0x00000000000d9f7f)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000001
NumberParameters: 0

從卦中信息看這是一個(gè)經(jīng)典的 訪問(wèn)違例,但崩潰在 EEPolicy::HandleFatalError 處就有點(diǎn)匪夷所思了,HandleFatalError 方法主要是用來(lái)在拋異常之前修整異常上下文的,這個(gè)方法固若金湯,一般不會(huì)出問(wèn)題的,但不管怎么樣,還是看下 rsp+40h 到底是什么東西。

0:107> dp rsp+40h L1
0000005e`0dc7c400  00000001`c0000005

上面的 c0000005 很顯然是訪問(wèn)違例,看樣子這里有點(diǎn)混亂,也不是第一崩潰現(xiàn)場(chǎng),這里就不過(guò)多糾結(jié)了,那怎么去找真正的崩潰點(diǎn)呢?還有一個(gè)方法就是去找 RaiseException 或者 KiUserExceptionDispatch 返回點(diǎn)之前的有用函數(shù),參考如下:

0:107> .ecxr
0:107> k
  *** Stack trace for last set context - .thread/.cxr resets it
 # Child-SP          RetAddr               Call Site
00 0000005e`0dc7c3c0 00007ffb`1ec6d72e     coreclr!EEPolicy::HandleFatalError+0x7f [D:\a\_work\1\s\src\coreclr\vm\eepolicy.cpp @ 776] 
01 0000005e`0dc7c9d0 00007ffb`5235292f     coreclr!ProcessCLRException+0xd9f9e [D:\a\_work\1\s\src\coreclr\vm\exceptionhandling.cpp @ 1036] 
02 0000005e`0dc7cc00 00007ffb`52302554     ntdll!RtlpExecuteHandlerForException+0xf
03 0000005e`0dc7cc30 00007ffb`5235143e     ntdll!RtlDispatchException+0x244
04 0000005e`0dc7d340 00000000`6c942893     ntdll!KiUserExceptionDispatch+0x2e
05 0000005e`0dc7daf0 00007ffa`c066ed7b     libxxx_manage!get_clean_xxx
06 0000005e`0dc7db70 00007ffa`c06b73a4     0x00007ffa`c066ed7b
...

從卦中看,程序崩潰在 libxxx_manage!get_clean_xxx 中,看樣子是一個(gè) C++ 寫(xiě)的動(dòng)態(tài)鏈接庫(kù),這就有點(diǎn)無(wú)語(yǔ)了。。。

2. C++ 庫(kù)為什么會(huì)崩

要想尋找答案,最好的辦法就是觀察 000000006c942893 處的匯編代碼,參考如下:

0:107> ub 00000000`6c942893
libxxx_manage!get_clean_xxx:
00000000`6c942876 55              push    rbp
00000000`6c942877 53              push    rbx
00000000`6c942878 4883ec68        sub     rsp,68h
00000000`6c94287c 488dac2480000000 lea     rbp,[rsp+80h]
00000000`6c942884 48894d00        mov     qword ptr [rbp],rcx
00000000`6c942888 c745dc00000000  mov     dword ptr [rbp-24h],0
00000000`6c94288f 488b4500        mov     rax,qword ptr [rbp]

0:107> u 00000000`6c942893
00000000`6c942893 488b00          mov     rax,qword ptr [rax]

0:107> dp rbp L1
0000005e`0dc7c4c0  00000000`00000000

從上面的匯編代碼來(lái)看,這是 get_clean_xxx 方法的序幕代碼,問(wèn)題出在 rbp 的內(nèi)容為0上,但 rbp 又來(lái)自于 rcx,根據(jù) x64調(diào)用協(xié)定,rcx 即方法的第一個(gè)參數(shù),看樣子是這個(gè)參數(shù)為 null 導(dǎo)致的,參考如下:

0:107> !address rcx

Usage:                  Stack
Base Address:           0000005e`0dc78000
End Address:            0000005e`0dc80000
Region Size:            00000000`00008000 (  32.000 kB)
State:                  00001000          MEM_COMMIT
Protect:                00000004          PAGE_READWRITE
Type:                   00020000          MEM_PRIVATE
Allocation Base:        0000005e`0db00000
Allocation Protect:     00000004          PAGE_READWRITE
More info:              ~107k

0:107> dp rcx L1
0000005e`0dc7c4a0  00000000`00000000

3. get_clean_xxx 參數(shù)為null嗎

這個(gè)問(wèn)題比較簡(jiǎn)單,繼續(xù)用 !clrstack 觀察下 Pinvoke 之上的 C# 代碼。

0:107> !clrstack
OS Thread Id: 0x3508 (107)
        Child SP               IP Call Site
0000005E0DC7DBA0 00007ffac066ed7b [InlinedCallFrame: 0000005e0dc7dba0] xxx_LibPInvoke.xxx_clean_query(IntPtr)
0000005E0DC7DB70 00007ffac066ed7b ILStubClass.IL_STUB_PInvoke(IntPtr)
0000005E0DC7DC30 00007ffac06b73a4 xx+c__DisplayClass11_0.<xxxQueryClean>b__0(IntPtr)
...

接下來(lái)就是看下托管層的 C# 代碼是如何寫(xiě)的,截圖如下:

圖片

從圖中可以清楚的看到,xxxChannel 傳給C++ 的時(shí)候沒(méi)有判斷是否為null,導(dǎo)致崩潰的發(fā)生,那還有沒(méi)有其他的佐證呢?其實(shí)也是有的,如果符號(hào)給力還可以使用 !clrstack -a 去找到 xxxChannel 傳下去的值。

0:107> !clrstack -a
OS Thread Id: 0x3508 (107)
        Child SP               IP Call Site
0000005E0DC7DBA0 00007ffac066ed7b [InlinedCallFrame: 0000005e0dc7dba0] xxx_LibPInvoke.xxx_clean_query(IntPtr)
0000005E0DC7DB70 00007ffac066ed7b ILStubClass.IL_STUB_PInvoke(IntPtr)
    PARAMETERS:
        <no data>

0000005E0DC7DC30 00007ffac06b73a4 xxx+c__DisplayClass11_0.<xxxQueryClean>b__0(IntPtr)
    PARAMETERS:
        this (0x0000005E0DC7DC80) = 0x0000020a9d9ca8d8
        xxxChannel (0x0000005E0DC7DC88) = 0x0000000000000000
    LOCALS:
        0x0000005E0DC7DC6C = 0x0000000000000000
        0x0000005E0DC7DC68 = 0x0000000000000000

可以清楚的看到確實(shí)是 0,到這里就一切真相大白,對(duì)參數(shù)加一個(gè)判斷即可,那這東西到底是誰(shuí)的責(zé)任呢?我覺(jué)得雙方都有問(wèn)題吧。

  1. 寫(xiě)托管層的人有點(diǎn)飄。
  2. 寫(xiě)非托管層的人未作防御性編程,還是年輕太相信人了。

三、總結(jié)

這次生產(chǎn)事故徹底破壞了兩個(gè)語(yǔ)言團(tuán)隊(duì)之間的相互合作的信任度,信任重建可就難了,不怕神一樣的對(duì)手,就怕豬豬一樣的隊(duì)友,放在這里還是挺合適的,哈哈,開(kāi)個(gè)小玩笑。

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

2024-03-28 12:56:36

2023-03-26 20:24:50

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

2024-03-26 00:44:53

.NETCIM系統(tǒng)

2024-07-09 11:51:20

Windows線程池源碼

2025-10-29 01:11:00

.NET系統(tǒng)windows

2023-06-29 17:55:00

.NET日志WinDbg

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調(diào)試

2024-06-04 10:54:34

.NET代碼程序

2024-07-12 11:20:34

.NET崩潰視覺(jué)程序

2024-05-31 12:56:06

.NET代碼方法

2022-10-25 14:17:01

.NET代碼程序

2024-06-13 17:09:55

2025-09-05 02:22:00

.NETCRM物流行業(yè)

2023-04-06 10:52:18

2024-06-06 10:51:15

自動(dòng)化系統(tǒng)推測(cè)

2024-07-01 13:00:24

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

2024-11-29 10:06:59

2022-01-17 21:28:36

管理系統(tǒng).NET

2021-11-02 07:54:41

內(nèi)存.NET 系統(tǒng)
點(diǎn)贊
收藏

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

av一区二区三区免费| 亚洲国内自拍| 九九精品视频在线观看| 精品国内亚洲2022精品成人| 午夜欧美不卡精品aaaaa| 日韩一区欧美| 免费日韩av电影| 国产精品12区| 男女羞羞视频网站| 欧美最猛性xxxxx直播| 51漫画成人app入口| 欧美精品一二区| 久久精品青草| 日本成人性视频| 中文字幕视频一区| youjizz在线播放| 中文在线资源观看视频网站免费不卡| eeuss鲁片一区二区三区| 97超碰在线播放| 国产成人啪免费观看软件| 国产黄色一级电影| 日韩久久精品一区| 91麻豆精品激情在线观看最新 | 欧美精品第一页| 日本精品久久| 亚洲一区二区三区久久 | 精品少妇一区二区三区在线视频| 国产精品久久久久久久久久辛辛 | 在线成人一区二区| 精品高清久久| 免费成人进口网站| 亚洲一区二区精品3399| 中文字幕色婷婷在线视频| 国产精品狼人色视频一区| 国产资源在线一区| 黄网站色大毛片| 亚洲色图第三页| 欧美激情视频一区二区三区在线播放| 日韩伦理在线免费观看| 91激情五月电影| 综合中文字幕| 国产奶头好大揉着好爽视频| 午夜婷婷国产麻豆精品| 久久婷婷五月综合色丁香| 国产精品免费视频一区二区| 国产精品丝袜91| 毛片电影在线| 99国产在线视频| 中文字幕在线不卡一区二区三区 | 中文字幕免费国产精品| 黑人一区二区| 国精产品999国精产品官网| 亚洲视频在线免费观看| 激情久久一区| 国产天堂av| 乱亲女秽乱长久久久| 日日摸夜夜添夜夜添精品视频 | 免费裸体美女网站| 日韩精品一区二区在线| 日韩在线观看| 一本色道久久亚洲综合精品蜜桃| 亚洲精品成人av| 99精品热6080yy久久| 色婷婷综合缴情免费观看| 欧美疯狂xxxx大交乱88av| 狠狠v欧美v日韩v亚洲ⅴ| 91高清在线视频| 成人高h视频在线| 亚洲欧洲制服丝袜| 视频在线亚洲| 国产真人做爰毛片视频直播| 亚洲福利影片在线| 麻豆九一精品爱看视频在线观看免费| 手机看片福利在线观看| 国产成人精品999| 国产欧美日韩一区二区三区在线观看| 欧美日韩精品一区二区三区视频| 色一情一乱一伦一区二区三区 | 欧美性猛交xxx| 妖精视频一区二区三区免费观看 | 免费av在线一区二区| 色八戒一区二区三区| 日韩理论电影| 亚洲国产一区二区在线播放| 日韩一区二区三区精品| 国产a级黄色大片| 欧美成人午夜激情| 波多野结衣在线一区| 黄色视屏在线免费观看| 欧美在线观看网站| 一本久道中文字幕精品亚洲嫩| 亚洲欧美日韩一区二区三区在线观看| 亚洲精品一区| 亚洲精品高清视频| 亚洲精品在线免费观看视频| 久久免费国产| 日本动漫同人动漫在线观看| 欧美最大成人综合网| 正在播放一区二区| 亚洲在线免费| 久久国产精品黑丝| 国产高清免费在线| 亚洲视频第一页| 欧美激情第三页| 日韩免费在线观看| 91精品视频网| 亚洲精品视频一区| 成人动漫av在线| zzzwww在线看片免费| 色综合视频二区偷拍在线| 欧美xxxx做受欧美护士| 潘金莲一级淫片aaaaaa播放1| 亚洲第一二三四五区| 精品亚洲porn| 欧美成人xxxx| 999sesese| 国产精品亚洲网站| 欧洲亚洲国产日韩| 蜜桃精品在线观看| 日韩久久99| 免费在线黄网| eeuss一区二区三区| 日韩午夜激情视频| 成人精品视频.| 亚洲精品亚洲人成在线| 小水嫩精品福利视频导航| 九色视频成人porny| 亚洲人成77777在线观看网| 久久众筹精品私拍模特| 欧美美女一区| 免费av在线网站| 激情五月六月婷婷| 91成人在线观看国产| 欧美亚洲日本一区| 国产精品原创巨作av| 亚洲国产精品嫩草影院久久av| 国产一二三区在线视频| 国产精品99久久久久久大便| 欧美大片在线看| 蜜臀在线免费观看| 久久精品福利视频| 亚洲国产成人91porn| 国产精品婷婷| 国产成年精品| 东凛在线观看| 妺妺窝人体色777777| 成人国产精品色哟哟| 亚洲欧美国产精品久久久久久久| 成人免费小视频| 日本免费新一区视频| 嗯用力啊快一点好舒服小柔久久| 青青草娱乐在线| 欧美一级视频免费看| 91色p视频在线| 中文字幕国产精品| 欧美日韩中文在线| 成人涩涩免费视频| 欧美精品aa| 久久久91麻豆精品国产一区| 91亚洲欧美| 99热在线免费观看| 中文字幕在线亚洲精品| 国产精品久久久久免费a∨| 亚洲国产精品字幕| 婷婷夜色潮精品综合在线| 国产91露脸合集magnet| 欧美日韩伊人| 天堂久久av| 久久男人av资源站| 国产视频福利在线| 亚洲 欧美 另类人妖| 一级做a爰片久久| 91久久国产精品91久久性色| 久久色免费在线视频| 欧美一区二区成人| 一区二区三区四区在线播放| 成人黄色大片在线观看| 国产亚洲毛片在线| 凹凸成人精品亚洲精品密奴| 国产原创一区| 里番在线播放| 久久久久久女乱国产| 国产日韩欧美久久| 99亚洲国产精品| 久久久免费看| 国产精品久久二区| 欧美第一淫aaasss性| 精品在线观看国产| 欧美久久一二区| 五月天网站亚洲| 国产精品嫩草影院av蜜臀| 国产成人免费视频一区| 午夜在线a亚洲v天堂网2018| 日韩电影免费网站| 国偷自产av一区二区三区| 日本亚洲欧洲无免费码在线| 桃色av一区二区| 后进极品白嫩翘臀在线播放| 麻豆影视国产在线观看| 中文字幕一区二区三|