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

記一次 .NET某工控視覺自動化系統卡死分析

開發 前端
為什么會在這里被卡呢?這個庫是商業產品沒有pdb的,看匯編很難推進,索性就從線程棧中逆向推測,即從 NtWaitForMultipleObjects 方法入手。

一、背景

1. 講故事

今天分享的dump是訓練營里一位學員的,從一個啥也不會到現在分析的有模有樣,真的是看他成長起來的,調試技術學會了就是真真實實自己的,話不多說,上windbg說話。

二、WinDbg 分析

1. 為什么會卡死

這位學員是從事工控大類下的視覺自動化,也是目前.NET的主戰場,這個場景下大多都是WPF或者WinForm程序,不管是什么程序,先用命令 k 開路。

0:000> ~0s
ntdll!NtWaitForMultipleObjects+0x14:
00007ff8`d825cc14 c3              ret
0:000> k
 # Child-SP          RetAddr               Call Site
00 000000e4`c0cf87e8 00007ff8`d54f7ff7     ntdll!NtWaitForMultipleObjects+0x14
01 000000e4`c0cf87f0 00007ff8`83aa7585     KERNELBASE!WaitForMultipleObjectsEx+0x107
02 000000e4`c0cf8af0 00007ff8`83aa76fa     PylonBase_v5_1!Pylon::CInstantCameraArray::DestroyInstantCamera+0x78da1
03 000000e4`c0cf8bb0 00007ff8`83a188bc     PylonBase_v5_1!Pylon::CInstantCameraArray::DestroyInstantCamera+0x78f16
04 000000e4`c0cf8c30 00007ff8`83a22a70     PylonBase_v5_1!Pylon::CGrabResultPtr::IsUnique+0x16ec
05 000000e4`c0cf8cd0 00007ff8`41fee2dd     PylonBase_v5_1!Pylon::CGrabResultPtr::IsUnique+0xb8a0
06 000000e4`c0cf8d40 00007ff8`4218711b     0x00007ff8`41fee2dd
...

從卦象看真的很不吉利,因為這個等待是一個第三方的SDK庫,從 DestroyInstantCamera 名字看就是 立即銷毀相機,接下來我們看下 PylonBase_v5_1 是何方圣神?

0:000> lmvm PylonBase_v5_1
Browse full module list
start             end                 module name
00007ff8`839e0000 00007ff8`83b5b000   PylonBase_v5_1   (export symbols)       PylonBase_v5_1.dll
    Loaded symbol image file: PylonBase_v5_1.dll
    Image path: C:\Program Files\Basler\pylon 5\Runtime\x64\PylonBase_v5_1.dll
    Image name: PylonBase_v5_1.dll
    Browse all global symbols  functions  data
    Timestamp:        Fri Aug 24 20:41:55 2018 (5B7FFD13)
    CheckSum:         0017E66C
    ImageSize:        0017B000
    File version:     5.1.0.12681
    Product version:  5.1.0.12681
    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:      Basler
        ProductName:      Basler pylon
        InternalName:     PylonBase
        OriginalFilename: PylonBase.dll
        ProductVersion:   5.1.0.12681 
        FileVersion:      5.1.0.12681
        PrivateBuild:     
        SpecialBuild:     0
        FileDescription:  PylonBase Module
        LegalCopyright:   Copyright (c) 2006-2018 Basler AG - All rights reserved.
        LegalTrademarks:  
        Comments:         1d4ccf9b36037580c4655fde004335702d90d3e8

由于我是行外人,所以我好奇的查一下 Basler 是什么公司,????哈,截圖如下:

圖片圖片

再回過頭來看,為什么會在這里被卡呢?這個庫是商業產品沒有pdb的,看匯編很難推進,索性就從線程棧中逆向推測,即從 NtWaitForMultipleObjects 方法入手。

2. 如何解讀 NtWaitForMultipleObjects

這個方法是微軟公開的方法,和C#的 Task.WaitAny 功能等價,在 MSDN 上可以看到它的簽名信息。

DWORD WaitForMultipleObjects(
  [in] DWORD        nCount,
  [in] const HANDLE *lpHandles,
  [in] BOOL         bWaitAll,
  [in] DWORD        dwMilliseconds
);

接下來就是提取 lpHandles 中的 handle 值,看下這個 handle 到底是什么類型,再圖后續方向,根據x64調用協定,只需要提取 rdx 參數即可。

0:000> r
rax=000000000000005b rbx=0000000000000001 rcx=0000000000000001
rdx=000000e4c0cf8b58 rsi=0000000000000000 rdi=0000000000000001
rip=00007ff8d825cc14 rsp=000000e4c0cf87e8 rbp=000000e4c0cf8c00
 r8=000002aedcc62701  r9=ffffffffffffffe8 r10=000002ae86a12580
r11=000000e4c0cf8680 r12=00000000fffffffe r13=000000e4c0cf8b58
r14=000000e4c0cf8840 r15=0000000000000000
iopl=0         nv up ei pl zr na po nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!NtWaitForMultipleObjects+0x14:
00007ff8`d825cc14 c3              ret

0:000> !handle poi(000000e4c0cf8b58) f
Handle 0000000000001790
  Type          Thread
  Attributes    0
  GrantedAccess 0x1fffff:
         Delete,ReadControl,WriteDac,WriteOwner,Synch
         Terminate,Suspend,Alert,GetContext,SetContext,SetInfo,QueryInfo,SetToken,Impersonate,DirectImpersonate
  HandleCount   6
  PointerCount  201480
  Name          <none>
  Object specific information
    Thread Id   4714.ff4
    Priority    10
    Base Priority 0

從卦中數據看,居然是一個線程句柄,而且信息 Thread Id 4714.ff4也標出來了,真tmd的是 山重水復疑無路,柳暗花明又一村 。。。

3. f44號線程正在做什么

有了線索之后,后面就是順藤摸瓜了,先切到 f44 號線程。

0:137> !clrstack
OS Thread Id: 0xff4 (137)
        Child SP               IP Call Site
000000e4c53fd418 00007ff8d825cc14 [GCFrame: 000000e4c53fd418] 
000000e4c53fd610 00007ff8d825cc14 [GCFrame: 000000e4c53fd610] 
000000e4c53fd668 00007ff8d825cc14 [HelperMethodFrame: 000000e4c53fd668] System.Threading.Monitor.Enter(System.Object)
000000e4c53fd760 00007ff84218d827 Basler.xxx.OnImageGrabbed(System.Object, Basler.Pylon.ImageGrabbedEventArgs)
...

從卦象看,這個線程正在 lock鎖上等待,那這個lock鎖被誰持有著呢?這個就比較簡單了,查看下同步塊索引即可。

0:137> !syncblk
Index SyncBlock MonitorHeld Recursion Owning Thread Info  SyncBlock Owner
  321 000002ae81012218            7         1 000002ae83701520 2e74  57   000002aedea354e8 System.Object

卦中的 2e74號線程正是持有鎖,接下來就是探究下 2e74號線程此時正在干什么?

4. 2e74號線程正在干什么

一路摸瓜,有種預感馬上就能看到光了,切到這個線程繼續觀察。

0:057> !clrstack
OS Thread Id: 0x2e74 (57)
        Child SP               IP Call Site
000000e4c4efcdb8 00007ff8d825cc14 [HelperMethodFrame_1OBJ: 000000e4c4efcdb8] System.Threading.WaitHandle.WaitOneNative(System.Runtime.InteropServices.SafeHandle, UInt32, Boolean, Boolean)
000000e4c4efcee0 00007ff89ed99ccc System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle, Int64, Boolean, Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\waithandle.cs @ 243]
000000e4c4efcf10 00007ff89ed99c9f System.Threading.WaitHandle.WaitOne(Int32, Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\waithandle.cs @ 194]
000000e4c4efcf50 00007ff89af8ac84 System.Windows.Forms.Control.WaitForWaitHandle(System.Threading.WaitHandle)
000000e4c4efcfc0 00007ff89a7f3264 System.Windows.Forms.Control.MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean)
000000e4c4efd100 00007ff89af8e4a4 System.Windows.Forms.Control.Invoke(System.Delegate, System.Object[])
000000e4c4efd170 00007ff84219c223 xxx.MCamera_RetrieveImageCompleted1(System.Object, System.EventArgs)
...

從卦中看這個線程正在用 Invoke 給主線程的 Queue 塞數據,并等待主線程的提取喚醒,所以這是一個經典的 三角循環死鎖。

有了完整的前因后果之后,改動方案就比較簡單了。

  • Invoke 改成 BeginInvoke
  • 縮小 lock 的粒度

三:總結

這個dump所呈現的 三角循環死鎖 還是非常經典的,更開心的是這位學員的分析能力已經出了新手村......

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

2024-09-14 10:28:56

.NET卡死程序

2022-10-09 10:47:37

NET視覺軟件

2024-05-28 10:18:30

WPF程序數據

2024-07-01 13:00:24

.NET網絡邊緣計算

2022-01-17 21:28:36

管理系統.NET

2024-11-29 10:06:59

2024-03-15 15:15:53

.NETCPU系統

2024-12-27 13:31:18

.NETdump調試

2024-05-20 09:39:02

.NETurl線程池

2023-09-27 07:23:10

.NET監控軟件

2022-10-13 18:40:05

.NETOA后端

2023-05-15 11:15:50

.NET門診語句

2024-07-12 11:20:34

.NET崩潰視覺程序

2025-09-02 01:35:00

.NET光學定位軟件

2024-03-28 12:56:36

2023-04-06 10:52:18

2023-03-26 20:24:50

ERP網站系統

2024-03-26 00:44:53

.NETCIM系統

2024-07-09 11:51:20

Windows線程池源碼

2025-10-29 01:11:00

.NET系統windows
點贊
收藏

51CTO技術棧公眾號

精品在线视频免费| 老司机久久精品| 免费福利在线观看| 另类专区欧美蜜桃臀第一页| 久久九九全国免费精品观看| 下面一进一出好爽视频| 黄频免费在线观看| 欧美国产禁国产网站cc| 97人人香蕉| 日本a级c片免费看三区| 国产高清久久| 亚洲精品视频久久| 黄色a级三级三级三级| 蜜桃视频www网站在线观看| 国产精品久久网站| 国模精品一区二区三区| 一区二区视频网| 在线欧美不卡| 日韩在线视频网站| 手机av免费看| 欧美成人一级| 欧美日韩一区精品| 男人日女人视频网站| 日本在线视频站| 26uuu亚洲| 91精品视频大全| 日本一区二区三区久久| 亚洲国产激情| 久久天天躁狠狠躁夜夜av| 国产制服丝袜在线| 日韩一区二区三区高清在线观看| 欧美性猛交xxxx乱大交3| 在线观看av的网址| 欧美成年黄网站色视频| 久久精品夜色噜噜亚洲a∨ | 欧美一级网址| 欧美日韩亚洲视频一区| 18黄暴禁片在线观看| 国产cdts系列另类在线观看| 中文在线一区二区| 欧美日韩在线观看一区| 日本成人动漫在线观看| 福利电影一区二区| 91九色露脸| 国产伦一区二区| 久久99精品一区二区三区三区| 日韩av不卡在线| 亚洲黄色小说图片| 99精品国产一区二区青青牛奶| 久久91超碰青草是什么| 特级片在线观看| 欧美在线观看天堂一区二区三区| 神马久久久久久| 国精产品久拍自产在线网站| 成人精品影视| 色老头一区二区三区在线观看| 无码人妻精品一区二区中文| 色综合中文网| 在线播放日韩av| 色欲狠狠躁天天躁无码中文字幕| 国产精品三级| 亚洲性无码av在线| 在线观看天堂av| 99久久99视频只有精品| 操91在线视频| 福利一区二区三区四区| 亚洲国产精品第一区二区三区| 97视频在线观看免费高清完整版在线观看| 日本三级网站在线观看| 99精品国产一区二区青青牛奶 | 成人精品免费网站| 极品日韩久久| 国产在线超碰| 国产精品女主播在线观看| www.午夜色| 日本三级韩国三级欧美三级| 午夜一区二区三区在线观看| 日韩av综合在线观看| av日韩电影| 欧美少妇一区二区| 一级网站在线观看| 国产伦精品一区二区三区在线播放 | 欧美国产精品一区| 在线综合视频网站| 欧美人与性动交α欧美精品图片| 午夜视频在线观看一区二区三区| 九色在线视频观看| 欧美91在线|欧美| 日韩三级.com| 久久精品国产亚洲av麻豆| 青青草91久久久久久久久| 成人97在线观看视频| 日韩黄色三级视频| 另类欧美日韩国产在线| 91大片在线观看| 青青草在线免费视频| 中文字幕日本乱码精品影院| 久久久性生活视频| 精品日本视频| 亚洲国产99精品国自产| 国产探花视频在线播放| 国产精品av一区二区| 国产成人av在线| jizz中国少妇| 日本一区二区三区免费乱视频| 麻豆一区二区三区在线观看| 自拍在线观看| 日韩一级黄色片| www.日本高清视频| 国产情侣一区| 亚洲综合大片69999| 国产免费av高清在线| 一区二区三区高清| 中文字幕av不卡在线| 欧美成人专区| 九九热精品视频国产| 特级西西444www大胆免费看| 高清shemale亚洲人妖| 亚洲午夜激情| 最新日韩三级| 亚洲国产精品久久久久秋霞蜜臀| 久草福利资源在线| 日韩在线一二三区| 麻豆av一区二区| 欧美日韩经典丝袜| 91精品国产综合久久香蕉的特点| 30一40一50老女人毛片| 国模吧视频一区| 成人字幕网zmw| 日本激情视频在线观看| 在线一区二区三区做爰视频网站| 精品无码人妻少妇久久久久久| 久久精品欧美一区| 国产原创欧美精品| 1024视频在线| 欧美视频在线不卡| 亚洲性猛交xxxx乱大交| 一本色道久久综合一区| 91精品国产99久久久久久红楼| 欧美黄色激情| 4438亚洲最大| 国产精品免费人成网站酒店| 免费观看在线综合色| 日本在线视频一区| av有声小说一区二区三区| 精品亚洲一区二区三区在线观看| 国产精品白浆一区二小说| 国产精品99久久久久久久女警| 日本三级福利片| 亚洲香蕉久久| 久久九九亚洲综合| 国产激情久久久久久熟女老人av| 亚洲色图在线播放| 免费国偷自产拍精品视频| 一本精品一区二区三区| 91天堂在线观看| 天天干在线视频论坛| 日韩欧美一区二区在线视频| 九九热精彩视频| www.亚洲人| 国产中文字幕免费观看| 国产成人久久| 国产日产亚洲精品| 97超碰在线公开在线看免费| 日韩欧美中文一区| 国产精品成人网站| 久久综合国产精品| 午夜国产一区二区三区| 国产精品久久久久无码av| 亚洲aaa激情| missav|免费高清av在线看| 日韩成人av一区| wwwwww在线观看| 亚洲欧美日韩国产成人精品影院 | 久久久精品网站| 亚洲爱爱综合网| 精品日韩中文字幕| 人妻精品久久久久中文| 精品一区二区在线免费观看| 久久精品xxx| 欧美日韩国产在线观看网站| 国产主播精品在线| 国产福利片在线观看| 亚洲午夜国产成人av电影男同| 91久久精品无码一区二区| 亚洲永久精品大片| 免费看黄色的视频| 国产在线看一区| 成熟丰满熟妇高潮xxxxx视频| 精品一区二区三区在线| 91香蕉嫩草影院入口| 欧美一级鲁丝片| 久久精品国产69国产精品亚洲| 亚洲爆乳无码一区二区三区| 日本乱码高清不卡字幕| 少妇aaaaa| 国产日韩视频一区二区三区| 黄页网站在线看| 视频一区二区中文字幕| 99久久99久久精品| jiujiure精品视频播放| 国产精品一区二区不卡视频| 国产精品原创视频| 3344国产精品免费看| 91蜜桃在线视频| 国产一区二区激情| 天天av天天翘| 欧美一卡在线观看| 中国a一片一级一片| 午夜精品在线视频一区| 免费三级在线观看| 国产欧美日韩综合精品一区二区| av电影在线播放| 激情综合色播激情啊| 日本三级免费网站| 亚洲天堂久久| 91九色国产ts另类人妖| 精品大片一区二区| 久久精品女人的天堂av| 亚洲精品福利| 亚洲一区二区在线| 欧美videos粗暴| 欧洲美女免费图片一区| 182在线视频观看| 欧美老少配视频| 欧美精品电影| 色噜噜狠狠狠综合曰曰曰88av| 免费a级毛片在线观看| 亚洲第一免费播放区| 国产视频一区二区三区四区五区| 欧美色综合影院| 国语对白做受69按摩| 欧美日韩中文字幕综合视频| 国产午夜精品一区二区理论影院| 亚洲精品老司机| 男人av资源站| 亚洲婷婷国产精品电影人久久| 日本污视频网站| 欧美极品另类videosde| 真实乱视频国产免费观看 | 午夜成人亚洲理伦片在线观看| 久久蜜桃av一区精品变态类天堂| 精品熟女一区二区三区| 风间由美性色一区二区三区 | 国产亚洲精品aa午夜观看| 欧美性xxxx图片| 久久综合九色综合欧美就去吻| 久久一区二区电影| 99精品桃花视频在线观看| 亚洲国产精品无码久久久久高潮| 不卡视频免费播放| 亚洲制服丝袜在线播放| 26uuuu精品一区二区| 9.1成人看片| 国产日韩欧美精品一区| 国产传媒视频在线 | 精品在线视频免费观看| 亚洲精品国产高清久久伦理二区 | 色天天综合久久久久综合片| 日韩一级在线视频| 欧美吞精做爰啪啪高潮| 在线观看免费视频a| 欧美日韩精品高清| 国产伦精品一区二区三区视频痴汉 | 国产男男gay网站| 免费成人在线视频观看| 欧美在线免费视频| 国产日韩电影| 国产日韩在线视频| 一区二区三区在线免费看| 国产私拍一区| 欧美久久综合网| 免费观看中文字幕| 亚洲免费播放| 一区二区在线播放视频| 国产又黄又大久久| 在线播放第一页| 国产亚洲欧美日韩在线一区| 三级黄色片在线观看| 伊人色综合久久天天人手人婷| 精品无码人妻一区二区三区| 色狠狠色噜噜噜综合网| 96亚洲精品久久久蜜桃| 亚洲高清在线观看| 成人av一区| 欧美激情videos| 日韩新的三级电影| 成人女保姆的销魂服务| 清纯唯美亚洲经典中文字幕| 亚洲精品乱码久久久久久蜜桃91| 午夜久久99| 无人在线观看的免费高清视频| 激情另类小说区图片区视频区| 免费a v网站| 中文字幕制服丝袜成人av| 免费在线视频一区二区| 在线视频国产一区| 亚洲美女综合网| 色老头一区二区三区| 在线最新版中文在线| 亚洲综合色av| 欧美理论视频| 婷婷无套内射影院| 狠狠色狠狠色综合系列| 亚洲专区区免费| 亚洲综合图片区| 亚洲一区二区影视| 亚洲美女性视频| 免费男女羞羞的视频网站在线观看 | 蜜桃av.com| 一本色道久久综合精品竹菊| 精品人妻久久久久一区二区三区 | 国产精品18在线| 欧美性生交大片免费| 亚洲风情第一页| 久久精品视频导航| 理论不卡电影大全神| 999国产在线| 久久大综合网| 欧美性猛交久久久乱大交小说| 成人国产视频在线观看| 欧美第一页在线观看| 在线观看视频一区| 色视频免费在线观看| 欧美肥婆姓交大片| 电影91久久久| 一本色道久久综合亚洲精品婷婷| 蜜乳av另类精品一区二区| 95视频在线观看| 亚洲免费观看高清在线观看| 亚洲系列第一页| 亚洲最大在线视频| 电影亚洲精品噜噜在线观看| 久久久精彩视频| 国产免费成人| 精品人妻一区二区三区香蕉| 亚洲一区视频在线| www.蜜臀av| 美女av一区二区| 国模私拍国内精品国内av| 天天综合色天天综合色hd| 麻豆九一精品爱看视频在线观看免费| 三级黄色片网站| 欧美日韩亚洲一区二区| 人妻中文字幕一区| 国内揄拍国内精品| 国产suv精品一区| 激情小视频网站| jvid福利写真一区二区三区| 日韩精品成人一区| 亚洲国产日韩精品在线| 蜜桃视频在线观看免费视频| 狠狠色伊人亚洲综合网站色| 99亚洲视频| 我和岳m愉情xxxⅹ视频| 在线欧美日韩国产| 午夜免费播放观看在线视频| 国产精品无av码在线观看| 999久久久精品国产| 婷婷激情综合五月天| 一区二区三区四区乱视频| 国产 日韩 欧美 精品| 午夜精品免费视频| 色愁久久久久久| 丰满少妇在线观看| 一区二区中文视频| 亚洲精品一区二区口爆| 午夜精品一区二区三区av| 自拍偷拍欧美一区| 自拍偷拍一区二区三区四区| 最新久久zyz资源站| 国 产 黄 色 大 片| 秋霞成人午夜鲁丝一区二区三区| 欧美精品一区二区久久| 久久6免费视频| 亚洲综合av网| 国产在线电影| 亚洲一区久久久| 99国产精品| 夫妇露脸对白88av| 日韩欧美亚洲国产精品字幕久久久| www在线观看黄色| 五月天久久狠狠| 国产成人av资源| 无码一区二区三区| 操人视频在线观看欧美| 亚洲欧美校园春色| 污污视频在线免费| 色香蕉久久蜜桃| 18av在线视频| 欧美系列一区| 国产精品一区二区三区网站| 国产三级av片| xxx一区二区| 午夜精品影视国产一区在线麻豆| 91亚洲免费视频| 欧美日韩精品在线| 黄色在线视频网站| 国产一区国产精品| 国产一二三精品|