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

記一次 .NET某酒業業務系統崩潰分析

開發 前端
說實話這個dump分析起來還是挺有難度的,需要你對Windows線程池,clr源碼實現有一個基礎了解,否則很難構造出完整證據鏈。

一、背景

1. 講故事

前些天有位朋友找到我,說他的程序每次關閉時就會自動崩潰,一直找不到原因讓我幫忙看一下怎么回事,這位朋友應該是第二次找我了,分析了下 dump 還是挺經典的,拿出來給大家分享一下吧。

二、WinDbg 分析

1. 為什么會崩潰

找崩潰原因比較簡單,用 !analyze -v 命令觀察一下便知。

0:040> !analyze -v

CONTEXT:  (.ecxr)
eax=0afdf5dc ebx=0698ade8 ecx=00000001 edx=00000000 esi=0698ade8 edi=7eec0000
eip=7753c5af esp=0afdf5dc ebp=0afdf62c iopl=0         nv up ei pl nz na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
KERNELBASE!RaiseException+0x58:
7753c5af c9              leave
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 7753c5af (KERNELBASE!RaiseException+0x00000058)
   ExceptionCode: c0020001
  ExceptionFlags: 00000001
NumberParameters: 1
   Parameter[0]: 8007042b

PROCESS_NAME:  xxx.exe

從卦中數據看當前崩潰碼是 c0020001,查了下碼表說是 string綁定無效 ,截圖如下:

圖片圖片

這看起來有點無語呀,接下來觀察下線程棧。

0:040> .ecxr
eax=0afdf5dc ebx=0698ade8 ecx=00000001 edx=00000000 esi=0698ade8 edi=7eec0000
eip=7753c5af esp=0afdf5dc ebp=0afdf62c iopl=0         nv up ei pl nz na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
KERNELBASE!RaiseException+0x58:
7753c5af c9              leave

0:040> k
  *** Stack trace for last set context - .thread/.cxr resets it
 # ChildEBP RetAddr      
00 0afdf62c 70e75e0b     KERNELBASE!RaiseException+0x58
01 0afdf648 70f63bf5     clr!COMPlusThrowBoot+0x1a
02 0afdf654 70b6f1da     clr!UMThunkStubRareDisableWorker+0x25
03 0afdf67c 77a9571e     clr!UMThunkStubRareDisable+0x9
04 0afdf6bc 77a80f0b     ntdll!RtlpTpTimerCallback+0x7a
05 0afdf6e0 77a809b1     ntdll!TppTimerpExecuteCallback+0x10f
06 0afdf830 75c4344d     ntdll!TppWorkerThread+0x562
07 0afdf83c 77a69802     kernel32!BaseThreadInitThunk+0xe
08 0afdf87c 77a697d5     ntdll!__RtlUserThreadStart+0x70
09 0afdf894 00000000     ntdll!_RtlUserThreadStart+0x1b

從卦中的線程棧來看,這里利用了 Windows線程池 的timer回調,回到 clr 之后主動拋了一個異常。

2. 為什么會主動拋異常

要想知道這個答案需要分析下clr 的源碼,簡化后如下:

// Disable from a place that is calling into managed code via a UMEntryThunk.
extern "C" VOID __stdcall UMThunkStubRareDisableWorker(Thread * pThread, UMEntryThunk * pUMEntryThunk, Frame * pFrame)
{
    // Check for ShutDown scenario.  This happens only when we have initiated shutdown 
    // and someone is trying to call in after the CLR is suspended.  In that case, we
    // must either raise an unmanaged exception or return an HRESULT, depending on the
    // expectations of our caller.
    if (!CanRunManagedCode())
    {
        pThread->m_fPreemptiveGCDisabled = 0;
        COMPlusThrowBoot(E_PROCESS_SHUTDOWN_REENTRY);
    }
}

BOOL CanRunManagedCode(BOOL fCannotRunIsUserError, HINSTANCE hInst)
{
    // If we are shutting down the runtime, then we cannot run code.
    if (g_fForbidEnterEE == TRUE)
        return FALSE;

    // If we are finaling live objects or processing ExitProcess event,
    // we can not allow managed method to run unless the current thread
    // is the finalizer thread
    if ((g_fEEShutDown & ShutDown_Finalize2) && !GCHeap::GetGCHeap()->IsCurrentThreadFinalizer())
        return FALSE;

    // If pre-loaded objects are not present, then no way.
    if (g_pPreallocatedOutOfMemoryException == NULL)
        return FALSE;

    return TRUE;
}

根據上面的源碼,應該就是CanRunManagedCode()函數返回false 導致的,那這個函數真的返回 false 嗎?可以用 Windbg 驗證下g_fForbidEnterEE 這個變量。

0:040> dp clr!g_fForbidEnterEE L1
712a2684  00000001

無語了,這個變量為true表示當前的CLR處于關閉狀態,應該是主線程調用了 Exit 方法,用 windbg 可以簡單驗證下。

0:000> k
00 0028d3b0 77549cd4     ntdll!NtQueryAttributesFile+0x12
01 0028d3b0 70bf560b     KERNELBASE!GetFileAttributesW+0x71
02 0028d3c8 710602a5     clr!CheckFileExistence+0x1a
...
39 0028ebc0 70d2684b     clr!WaitForEndOfShutdown_OneIteration+0x81
3a 0028ebc8 70d300e2     clr!WaitForEndOfShutdown+0x1b
3b 0028ec08 70d1329e     clr!EEShutDown+0xad
3c 0028ec14 70d132fb     clr!HandleExitProcessHelper+0x4d
3d 0028ec70 70d2ff99     clr!EEPolicy::HandleExitProcess+0x50
3e 0028ec70 7115af3b     clr!ForceEEShutdown+0x31
3f 0028ec70 702a9faf     clr!SystemNative::Exit+0x4f

接下來研究下它要進入到什么托管方法中,這個答案就在 UMEntryThunk.m_pManagedTarget 字段里,參考源碼如下:

class UMEntryThunk
{
private:
 // The start of the managed code
 const BYTE* m_pManagedTarget;

 // This is used for profiling.
 PTR_MethodDesc m_pMD;
}

有了這些前置知識就可以用 windbg 輕松挖掘。

0:040> kb 5
 # ChildEBP RetAddr      Args to Child              
00 0afdf62c 70e75e0b     c0020001 00000001 00000001 KERNELBASE!RaiseException+0x58
01 0afdf648 70f63bf5     006e0fe0 0afdf67c 70b6f1da clr!COMPlusThrowBoot+0x1a
02 0afdf654 70b6f1da     0698ade8 00580a38 0698ade8 clr!UMThunkStubRareDisableWorker+0x25
03 0afdf67c 77a9571e     00000000 00000001 7d723ac9 clr!UMThunkStubRareDisable+0x9
04 0afdf6bc 77a80f0b     0afdf71c 006e0fe0 006f6c10 ntdll!RtlpTpTimerCallback+0x7a

0:040> dp 00580a38 L2
00580a38  00386580 008f2eb8

0:040> !U 00386580
Unmanaged code
00386580 e9ab390000      jmp     00389f30
...

0:040> !ip2md 00389f30
MethodDesc:   0018af94
Method Name:  xxx._checkInput1(IntPtr, Boolean)
Class:        00435a7c
MethodTable:  0018afd8
mdToken:      06000034
Module:       0018a6a8
IsJitted:     yes
CodeAddr:     00389f30
Transparency: Critical

通過一頓反解果然是一個托管回調函數,分析到這里ztm的開心哈,感覺馬上就要看到光了,仔細找了下代碼,果然是借助Windows線程池創建了一個定時事件,無語了,截圖如下:

圖片圖片

圖片圖片

到這里就真相大白了,退出進程的時候一定要先調用C#的Dispose()方法把非托管的Timer給關掉,否則就會出現這種偶發的崩潰異常。

3. 一些題外話

這個dump的錯誤碼非常有誤導性,一個是外部的c0020001 ,一個內部的 8007042Bh,尤其是搜內部的 8007042Bh 會把你帶入到誤區里,讓你修復系統文件啥的,其實就是一個固定的死值,沒有意義的,參見匯編代碼。

0:000> ub 70f63bf5
clr!UMThunkStubRareDisableWorker+0x7:
70f63bd7 c9              leave
70f63bd8 e8d47fc3ff      call    clr!CanRunManagedCode (70b9bbb1)
70f63bdd 8b7508          mov     esi,dword ptr [ebp+8]
70f63be0 85c0            test    eax,eax
70f63be2 7511            jne     clr!UMThunkStubRareDisableWorker+0x25 (70f63bf5)
70f63be4 b92b040780      mov     ecx,8007042Bh
70f63be9 c7460800000000  mov     dword ptr [esi+8],0
70f63bf0 e8f721f1ff      call    clr!COMPlusThrowBoot (70e75dec)

所以還是多以代碼說話,少道聽途說陷入迷途不知返。

三、總結

說實話這個dump分析起來還是挺有難度的,需要你對Windows線程池,clr源碼實現有一個基礎了解,否則很難構造出完整證據鏈。

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

2024-03-28 12:56:36

2024-03-26 00:44:53

.NETCIM系統

2023-03-26 20:24:50

ERP網站系統

2025-10-29 01:11:00

.NET系統windows

2023-06-29 17:55:00

.NET日志WinDbg

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調試

2024-06-04 10:54:34

.NET代碼程序

2024-07-12 11:20:34

.NET崩潰視覺程序

2022-10-25 14:17:01

.NET代碼程序

2024-05-31 12:56:06

.NET代碼方法

2024-06-13 17:09:55

2025-09-05 02:22:00

.NETCRM物流行業

2023-04-06 10:52:18

2024-08-27 13:08:50

2022-01-17 21:28:36

管理系統.NET

2024-07-01 13:00:24

.NET網絡邊緣計算

2024-11-29 10:06:59

2022-10-10 17:52:08

CPUERP系統

2021-11-02 07:54:41

內存.NET 系統
點贊
收藏

51CTO技術棧公眾號

欧美mv日韩mv国产网站| 懂色av成人一区二区三区| 91社区在线观看播放| 亚洲爽爆av| 亚洲少妇诱惑| 91精品国产全国免费观看| 欧美二区在线| 日韩av在线播| av自拍一区| 亚洲免费av观看| 国产精品一区二区久久精品| 免费a级黄色片| 九色porny丨国产首页在线| 国产成人午夜精品5599 | 在线视频1卡二卡三卡| 日韩成人午夜| 精品国产1区2区| 国产精品免费一区二区三区| 精品无码久久久久成人漫画| 欧美aaa视频| 国产欧美精品一区二区色综合 | av激情综合网| 国内揄拍国内精品| 日韩少妇一区二区| 9999在线视频| 99免费精品视频| 国产精品中文字幕在线观看| 午夜毛片在线观看| 亚欧洲精品视频在线观看| 欧美男同性恋视频网站| 久久久国产精华液999999| 曰批又黄又爽免费视频| 一本久道久久综合狠狠爱| 亚洲精品国精品久久99热| 国产一区二区三区播放| 免费av网站观看| 99在线观看免费视频精品观看| 日韩在线播放av| 免费不卡av网站| 波多野结衣中文在线| 91亚洲精品久久久蜜桃| 国产成人精品国内自产拍免费看| 国产精品免费福利| 欧美女同一区| 国产精品黑丝在线播放 | 国产午夜精品麻豆| 欧美一级片中文字幕| 日本v片在线免费观看| 久久精品人人| 中文字幕免费国产精品| 国产精品探花在线播放| 波多野结衣中文在线| 亚洲色图视频网| 国产精品免费一区二区三区| 国产aⅴ一区二区三区| 亚洲性人人天天夜夜摸| 亚洲精品日韩在线| 国产麻豆天美果冻无码视频| 日韩三区免费| 色婷婷国产精品久久包臀| 国产精品日韩二区| 亚洲精品一级片| 蜜桃视频一区| 国产成人中文字幕| 日韩不卡高清视频| 狠久久av成人天堂| 在线观看欧美成人| bl动漫在线观看| 国产极品一区| 欧美日韩国产激情| 欧美a v在线播放| 538精品在线观看| 国产精品对白久久久久粗| 欧美在线观看视频在线| 日韩精品一区二区免费| jizz日韩| 99久久99久久综合| 久久综合福利| 亚洲第一视频在线| 成人毛片视频在线观看| 国产一区二区色| 日本天堂网在线观看| 亚洲人成免费| 不卡中文字幕av| 国产sm调教视频| www.神马久久| 日韩精品在线观看一区二区| 一本加勒比北条麻妃| japanese国产精品| 日韩高清有码在线| 欧美午夜精品一区二区| 国产一区二区三区四区五区3d| 动漫精品一区二区| 青草视频在线观看视频| 国产在线一区二区视频| 国产精品乱码一区二区三区软件| 久久伊人一区二区| 亚洲成人影院麻豆| 国产欧美视频一区二区三区| 男女h黄动漫啪啪无遮挡软件| fc2在线中文字幕| 亚洲精品视频在线观看网站| 少妇高潮喷水在线观看| 波多野结依一区| 在线观看av不卡| 日韩无套无码精品| 色豆豆成人网| 日韩精品综合一本久道在线视频| 欧美又黄又嫩大片a级| 国产精品对白| 日韩有码片在线观看| 91久久国产视频| 亚洲国产清纯| 国产自产女人91一区在线观看| 亚洲经典一区二区| 国产精品久久久久久久久晋中| 日韩欧美手机在线| 国产成人天天5g影院在线观看| 久久久夜色精品亚洲| 欧美日韩三区四区| 色呦呦视频在线观看| 亚洲一区二区三区免费视频| 国产天堂视频在线观看| 成人做爰视频www| 欧美高清hd18日本| 国产成人精品无码免费看夜聊软件| 欧美va天堂在线| 欧美黑人极品猛少妇色xxxxx| 亚洲国产成人精品综合99| 三级成人在线视频| 成人午夜高潮视频| 乱精品一区字幕二区| 国产精品久久久久桃色tv| 国产精品丝袜久久久久久消防器材 | 精品一区二区影视| 91亚洲精华国产精华| 国产xxxxxx| 国产精品区一区二区三区| 亚洲国产精品久久久久婷蜜芽| 88久久精品| 亚洲美女性视频| www成人啪啪18软件| 亚洲精品成人无限看| 欧美高清第一页| 99久久精品日本一区二区免费 | 欧美性xxxx极品hd欧美风情| 男人舔女人下面高潮视频| 牛牛精品成人免费视频| 国产小视频91| 欧美日韩色视频| 麻豆久久久久久| 鬼打鬼之黄金道士1992林正英| 天堂资源最新在线| 亚洲欧美另类图片小说| www.超碰97.com| 青草久久视频| 97视频在线免费观看| 毛片在线免费播放| 国产亚洲一二三区| 国产精品自拍合集| 66精品视频在线观看| 国内成人精品一区| 香蕉久久国产av一区二区| 亚洲欧洲韩国日本视频| 久久久久久久中文| 日韩欧美在线精品| 国产精品成人一区二区三区吃奶| 精品国产亚洲av麻豆| 久久久九九九九| 日本免费观看网站| 精品精品国产毛片在线看| 中文字幕成人精品久久不卡 | 日韩影院在线观看| 亚洲国产欧美日韩| 黄色在线免费观看网站| 在线不卡的av| 精品人妻一区二区三区日产| av成人国产| 日韩理论片在线观看| 日本午夜免费一区二区| 亚洲精品永久免费精品| 中文天堂在线播放| 久久久久久影视| 日本在线播放一区二区| 欧美日韩影院| 成人免费网视频| 成人免费高清观看| 亚洲图片在区色| 999精品国产| 岛国精品视频在线播放| 91狠狠综合久久久久久| 国产精品一区2区| 天堂v在线视频| 国产精品久久久久久妇女| 欧美成年人网站| 国产www视频| 狠狠久久五月精品中文字幕| 国产精品成人在线视频| 久久久久免费| 国产日产欧美一区二区| 亚洲成在人线免费观看| 777精品视频| 天天干,夜夜爽| 亚洲18色成人| 污污内射在线观看一区二区少妇 | 欧美精品无码一区二区三区| 亚洲91精品| 欧美国产综合视频| 亚洲精品影片| 成人动漫网站在线观看| 日韩欧美另类一区二区| 亚洲视频综合网| 神马久久久久久久| 国产视频一区二区在线观看| 国产伦理在线观看| 老汉av免费一区二区三区| 奇米精品一区二区三区| 一个色综合网| 高清不卡日本v二区在线| 高清欧美日韩| 国产成人精品av在线| www视频在线观看| 欧美精品免费在线观看| 91caoporm在线视频| 亚洲精品在线视频| 少妇人妻偷人精品一区二区| 欧美剧在线免费观看网站| 日本a级c片免费看三区| 欧美高清一级片在线观看| 中文字幕永久有效| 美女精品在线| 日韩国产欧美亚洲| 精品成人久久| 欧美国产日韩激情| 欧美日韩免费| 国产免费裸体视频| 欧美精品麻豆| 91免费国产精品| 你懂的视频一区二区| 欧美日韩亚洲国产成人| 婷婷久久国产对白刺激五月99| 亚洲春色在线视频| 欧美理论在线播放| 日韩av一区二区三区美女毛片| 猛男gaygay欧美视频| 成人国产精品久久久久久亚洲| 日韩av超清在线观看| 日本成人黄色片| 成人福利片网站| 精品亚洲一区二区| 天天舔天天干天天操| 亚洲成人久久久| 亚洲手机在线观看| 欧美日韩性生活| 亚洲精品午夜久久久久久久| 一区二区三区中文字幕| 一级性生活大片| 91女厕偷拍女厕偷拍高清| 亚洲这里只有精品| 亚洲毛片播放| 五十路熟女丰满大屁股| 亚洲一区二区免费看| 亚洲乱码国产一区三区| 蜜桃精品视频在线观看| 黄色大片中文字幕| 国产精品久久观看| 日韩人妻一区二区三区蜜桃视频| 久久超碰99| 图片区小说区区亚洲五月| 精品国产午夜肉伦伦影院| 精品综合久久久| 亚洲va欧美va人人爽成人影院| 国产成人在线一区二区| 成人精品动漫| 92国产精品久久久久首页| 日日av拍夜夜添久久免费| 国产精品久久久久久久久影视| 国产精品亲子伦av一区二区三区| 亚洲综合国产精品| 欧美一区自拍| 宅男一区二区三区| 亚洲另类黄色| www.色偷偷.com| 国产大陆精品国产| 亚洲av无码一区二区三区人 | 狠狠色丁香久久婷婷综合_中 | 美女在线视频一区| 中文字幕久久久久久久| 美女诱惑一区二区| 91成人在线观看喷潮蘑菇| 久久久久久久网| 精品无码久久久久成人漫画| 精品久久久视频| 91精品中文字幕| 欧美日韩亚洲不卡| 肥臀熟女一区二区三区| 国产小视频国产精品| 牛牛精品视频在线| 国产精品美女免费看| 国产精品自在| 在线国产伦理一区| 欧美亚洲自偷自偷| 国产免费人做人爱午夜视频| 韩日精品视频一区| 90岁老太婆乱淫| 久久精品在线观看| 免费麻豆国产一区二区三区四区| 亚洲男同1069视频| 无码人妻丰满熟妇精品| 日韩欧美亚洲国产精品字幕久久久 | 国产主播一区二区| 欧美一级特黄aaa| 久久激情综合网| 精品人妻互换一区二区三区| 亚洲高清免费视频| 久久亚洲天堂网| 欧美一级高清大全免费观看| 亚洲a视频在线观看| 中文字幕av一区中文字幕天堂| 国内精彩免费自拍视频在线观看网址| 成人黄色av免费在线观看| 婷婷亚洲精品| av女优在线播放| 国产精品996| 91香蕉视频网| 一区二区三区.www| 色婷婷av国产精品| 日韩视频免费观看高清完整版在线观看 | 日韩av超清在线观看| 久久波多野结衣| 国产精品嫩草影院在线看| 日韩欧美电影一区二区| 国产农村妇女精品一二区| 亚洲欧美综合视频| 久久综合色播五月| 欧美激情视频二区| 欧美性猛交xxxx免费看漫画| 三级在线观看网站| 欧美激情亚洲激情| 在线日韩影院| 国产日韩精品一区二区| 狠狠做六月爱婷婷综合aⅴ| 欧美一区二区三区爽大粗免费| 成人h动漫精品一区二区| 精品无码人妻一区二区免费蜜桃| 中文字幕av一区二区三区高 | 欧美一区二区免费观在线| 日本www在线观看| 久久久久久国产精品美女| www999久久| 国产一二三四五| 国产精品系列在线观看| 青娱乐91视频| 亚洲第一福利网| 亚洲精品动漫| 亚洲最大的网站| 国产成人精品一区二区免费看京 | 美女扒开腿让男人桶爽久久软| 激情小说综合区| 先锋亚洲精品| 嘿嘿视频在线观看| 欧美疯狂做受xxxx富婆| 日韩另类在线| 美女视频久久| 奇米精品一区二区三区四区| 性农村xxxxx小树林| 舔着乳尖日韩一区| 激情小视频在线观看| 欧美日韩成人在线观看| 国产精品99精品一区二区三区∴| 亚洲午夜久久久影院伊人| 99在线精品免费视频九九视| 日本xxx在线播放| 欧美在线高清视频| 国产激情小视频在线| 国产精品亚洲综合| 玖玖玖国产精品| 成人免费毛片日本片视频| 亚洲欧美日韩久久| 欧美一区,二区| 国产福利视频一区二区| 66视频精品| 少妇一级淫片免费放播放| 91久久精品国产91性色tv| 黄色在线免费网站| 久久久久久国产精品免费免费| 免费成人在线观看视频| 精品99在线观看| 国产午夜精品一区二区三区| 日韩精品一区国产| 日韩精品一区二区三区不卡 | 亚洲欧美三级伦理| 欧美在线在线| 激情内射人妻1区2区3区| 亚洲精品日韩一| а√天堂中文在线资源bt在线| 99精品国产高清一区二区| 999久久久91| 国产精品区在线| 香蕉久久一区二区不卡无毒影院|