精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

一区二区视频观看| 日本免费a视频| 国产尤物视频在线观看| 91九色精品国产一区二区| 日韩欧美色综合| 高清在线观看免费| 日本高清视频在线播放| 成人午夜又粗又硬又大| 国产精品av免费在线观看| 少妇视频一区二区| 国产一区二区三区亚洲| 欧美少妇性性性| 97中文字幕在线| 高清在线观看av| 国产99精品国产| 国产精品成人国产乱一区| 天天干中文字幕| 精品中文字幕一区二区三区av| 7777精品伊人久久久大香线蕉的| 日本在线xxx| 免费av不卡| 久久奇米777| 成人av电影免费| 久久久999久久久| 亚洲区欧美区| 欧美成人免费全部| 在线视频这里只有精品| 欧美日韩导航| 精品久久国产97色综合| 五月婷婷激情久久| 伊人色综合一区二区三区影院视频| 亚洲人成网站色在线观看| 日韩国产欧美一区| 无码精品黑人一区二区三区| 国产经典欧美精品| 亚洲sss综合天堂久久| 中文字幕在线天堂| 国产精品三上| 午夜精品久久久久久久久久久久久| 色老板免费视频| 成人激情免费视频| 国产亚洲欧美另类中文| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 日韩欧美在线电影| 香蕉视频免费看| 成人动漫视频在线| 成人av蜜桃| 成人h动漫精品一区二区无码 | 国产精品免费一区豆花| 国产精品suv一区| 在线综合欧美| 97av视频在线| 91看片在线播放| 99这里有精品| 97精品伊人久久久大香线蕉| 国产第一页在线播放| 国产精品99免费看| 欧美激情手机在线视频 | 中国毛片在线观看| 在线看成人短视频| 亚洲午夜小视频| 欧美另类z0zx974| 日韩欧美1区| 久久久精品在线| 欧美日韩亚洲国产另类| 国产精品观看| 97av在线视频免费播放| 国产美女激情视频| 久久狠狠一本精品综合网| 欧洲成人在线观看| 日本黄色中文字幕| 久久av资源网| 成人综合色站| 涩涩视频在线观看免费| 久久久久国产一区二区三区四区| 欧美伦理一区二区| √新版天堂资源在线资源| 中文字幕一区二区三区不卡| 欧美性视频在线播放| 女人天堂av在线播放| 午夜精品久久久久久久久| 欧美在线观看www| 成人精品一区二区三区电影| 91精品国产综合久久精品图片| 日本女人性视频| 欧美18xxxx| 中文字幕日本精品| 无码人妻精品一区二区三区夜夜嗨| 狠狠入ady亚洲精品经典电影| 久久久欧美精品| 亚洲天堂视频在线播放| 国产一区二区三区久久久| 成人av电影免费| 高清日韩av电影| 一区二区三区自拍| 国产精品wwwww| 四虎国产精品成人免费影视| 亚洲国产小视频在线观看| 无码人妻丰满熟妇啪啪欧美| 亚洲九九在线| 日韩av免费在线| 国产黄色片免费观看| 91亚洲精品久久久蜜桃| 一区二区三区偷拍| 中文字幕在线看片| 欧美一区二区三区思思人| 中文字幕影片免费在线观看| 欧美好骚综合网| 538国产精品一区二区在线| 国产女人18毛片水真多| 91麻豆国产在线观看| 热这里只有精品| 美女100%一区| 亚洲精品456在线播放狼人| 天天鲁一鲁摸一摸爽一爽| 国产精品嫩草99av在线| 91在线免费看片| 日本在线免费播放| 在线观看亚洲精品视频| 亚洲国产果冻传媒av在线观看| 亚洲一区欧美| 国产精品网红福利| 噜噜噜在线观看播放视频| 亚洲高清视频的网址| 91网址在线观看精品| 精品视频免费| 日韩av免费在线看| 香蕉av一区二区三区| 亚洲精品久久久蜜桃| 91精品999| 大片网站久久| 国产精品福利久久久| 手机亚洲第一页| 亚洲成人午夜电影| 少妇伦子伦精品无吗| 亚洲午夜精品一区二区国产| 国产日韩欧美成人| 黄色毛片在线看| 欧美性少妇18aaaa视频| 精品人妻人人做人人爽夜夜爽| 99成人在线视频| 国产精品一区二区电影| 国产天堂在线| 欧洲一区在线观看| 五月婷六月丁香| 欧美aaa在线| 一卡二卡3卡四卡高清精品视频| 666av成人影院在线观看| 亚洲欧美精品一区二区| 麻豆精品久久久久久久99蜜桃| av电影一区二区| 日韩a∨精品日韩在线观看| 国产三级精品三级在线观看国产| 欧美激情一级欧美精品| 午夜精品小视频| 亚洲影视资源网| 国产国语老龄妇女a片| 亚洲国内精品| 欧美日韩国产免费一区二区三区 | 疯狂欧美牲乱大交777| 国产老熟女伦老熟妇露脸| 亚洲永久在线| 日韩av一区二区三区在线| 91综合国产| 色一区av在线| japanese国产| 亚洲高清免费视频| 成年人在线观看av| 日韩成人免费在线| 中国一级黄色录像| 动漫视频在线一区| 欧美一区二三区| 午夜在线观看视频| 欧美哺乳videos| 五月天婷婷激情| 国产精品久久免费看| 日本黄色www| 日韩视频一区| 亚洲精品成人自拍| 亚洲高清在线一区| 欧美亚洲另类视频| 欧美一区二区三区| 精品成人一区二区三区四区| 精品国产午夜福利| 亚洲欧美偷拍三级| 91黄色免费视频| 免费观看在线综合| 97碰在线视频| 精品国产91乱码一区二区三区四区 | 亚洲欧美变态国产另类| 国产又色又爽又黄又免费| 亚洲国产乱码最新视频 | 一级做a免费视频| 韩国在线一区| 亚洲国产欧洲综合997久久| 亚洲小说春色综合另类电影| 日本亚洲欧洲色α| 青青草视频在线免费直播| 亚洲摸下面视频| 性猛交xxxx乱大交孕妇印度| 色诱亚洲精品久久久久久| 日韩精品一区二区三区在线视频| www.在线欧美| 深爱五月综合网| 葵司免费一区二区三区四区五区| 黄色a级在线观看| 性欧美lx╳lx╳| 99国产精品久久久久老师| 成人在线观看免费播放| 77777亚洲午夜久久多人| a毛片在线播放| 国产亚洲综合久久| 五月天婷婷激情网| 精品久久久久一区二区国产| 亚洲无码精品国产| 日韩欧美999| 国产在线成人精品午夜| 亚洲日本一区二区三区| 在线视频第一页| 99久久精品情趣| 熟女人妻一区二区三区免费看| 免费高清不卡av| 日本xxxxxxx免费视频| 精品动漫3d一区二区三区免费| 日本福利视频导航| 成人免费电影网址| 欧美在线视频一区二区三区| 色婷婷狠狠五月综合天色拍 | 免费看污污网站| 久久不射中文字幕| 成人免费aaa| 亚洲一级黄色| 精品国产一区二区三区无码| 午夜日韩电影| 黄色录像特级片| 亚洲理论电影网| 国产精品美女在线播放| 97偷自拍亚洲综合二区| 亚洲午夜精品一区二区| 成人三级视频| 亚洲色图自拍| 99久久夜色精品国产亚洲1000部| 亚洲电影网站| 水蜜桃精品av一区二区| 一区二区三区|亚洲午夜| 日韩综合一区| 亚洲一二区在线| 久久一区二区三区喷水| 制服国产精品| 欧美成人69av| 免费极品av一视觉盛宴| 亚洲精华国产欧美| 玩弄中年熟妇正在播放| 国产毛片久久| 国产男女激情视频| 日本视频免费一区| 九九热免费在线观看| 韩国v欧美v亚洲v日本v| 免费黄视频在线观看| 国产成都精品91一区二区三| 91精品又粗又猛又爽| 97se亚洲国产综合自在线| 最新中文字幕视频| 中文字幕精品一区二区三区精品| 成人性视频免费看| 亚洲精品亚洲人成人网在线播放| 久久精品www人人爽人人| 午夜久久久久久久久久一区二区| 国产一级精品视频| 欧美在线视频日韩| 国产免费高清视频| 欧美精品一区二区三区很污很色的| 五月色婷婷综合| 永久555www成人免费| 动漫一区在线| 91精品国产色综合久久不卡98口 | 国产精品久久不卡| 亚洲国产精品v| 一级黄色录像视频| 欧美视频中文在线看| 亚洲天堂视频在线| 精品女同一区二区| p色视频免费在线观看| 欧美xxxx14xxxxx性爽| 僵尸再翻生在线观看免费国语| 国产精品扒开腿做爽爽爽的视频| 国产精品麻豆| 久久久久久久久久久久久9999| 水蜜桃精品av一区二区| 欧美一区二区中文字幕| 免费高清在线视频一区·| 午夜影院福利社| 欧美国产亚洲另类动漫| 九九热国产视频| 在线成人av影院| 日韩电影免费| 欧美成人第一页| 国产精品高清乱码在线观看| 亚洲一区二区三区四区视频| 午夜精品福利影院| 最新av网址在线观看| 久久中文字幕一区二区三区| 香蕉视频1024| 亚洲欧美自拍偷拍色图| 免费黄色av片| 亚洲精品在线免费观看视频| 日本在线观看视频| 欧美一区亚洲一区| 视频一区在线| 在线观看日韩羞羞视频| 首页国产欧美久久| 国产性生活毛片| 亚洲日本在线a| 在线观看视频中文字幕| 亚洲欧美在线一区二区| av影院在线| av资源一区二区| 欧美激情欧美| 欧美伦理片在线看| 97se亚洲国产综合自在线不卡| 欧美日韩免费一区二区| 欧美麻豆精品久久久久久| 国产综合在线观看| 91av视频在线播放| 国产精品三p一区二区| 成人午夜免费剧场| 另类小说欧美激情| 久久丫精品忘忧草西安产品| 精品久久久免费| 特黄aaaaaaaaa真人毛片| 欧美极品在线播放| 日本少妇精品亚洲第一区| 在线视频一区观看| 麻豆精品视频在线观看免费| 男人舔女人下部高潮全视频| 欧美午夜视频一区二区| 日韩a在线观看| 日本成人免费在线| 午夜精品福利影院| 99999精品视频| 91美女在线观看| 天天干天天色综合| 亚洲视频视频在线| 五月激情久久| 午夜老司机精品| 久久se精品一区精品二区| 看黄色录像一级片| 欧美日本一区二区三区四区| 欧美jizzhd欧美| 亚洲a级在线观看| 中文字幕一区二区三区久久网站| 中文字幕国产高清| 一区二区三区中文字幕精品精品 | 一本二本三本亚洲码| 国产一区二区伦理片| 欧美色图亚洲视频| 亚洲第一国产精品| 成人性生活视频| 日韩欧美在线电影| 国产一区二三区| 国产网站在线看| 日韩精品在线观看视频| 69久成人做爰电影| 亚洲综合网中心| 国产精品一区在线观看你懂的| 久久久久久久国产视频| 日韩成人xxxx| 电影亚洲一区| 亚洲高潮无码久久| 99热在这里有精品免费| 中文字幕国产在线观看| 精品国产一区二区在线| 日韩中文字幕无砖| 91av资源网| 国产精品免费丝袜| 亚洲乱码在线观看| 日韩美女视频中文字幕| 91精品福利| 中出视频在线观看| 欧美日韩高清不卡| 国产嫩草在线视频| 亚洲高清视频一区二区| 国产精品一区二区在线观看网站| 国产无套在线观看| 亚洲一区999| **爰片久久毛片| 色诱视频在线观看| 亚洲男帅同性gay1069| 亚洲色图欧美视频| 成人啪啪免费看| 免费中文字幕日韩欧美| 一区二区国产精品精华液| 日韩成人网免费视频| www久久久| 久草精品在线播放| 亚洲一区在线观看免费| 成年人视频网站在线| 国产精品久久久久久久免费大片| 日本少妇一区二区| 日本在线播放视频|