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

記一次 .NET 某放射治療光學定位軟件卡死分析

開發 前端
從卦中的?ProcessQueue,?TextBlock.OnPropertyChanged?等函數來看,當前主線程正在忙碌處理,如果你想看主線程的執行流細節,可以將dmp拖到vs中,讓vs幫我們解讀,拖進去后是不是一下子就清晰多了......

一、背景

1. 講故事

前段時間微信上有位非調試訓練營學員找到我,說他們的醫療軟件有點問題,有時候卡了一會就好了,有時候卡了很久,讓我幫忙看下怎么回事,我讓這位朋友在卡的時候抓一個dump給我,我分析看看。

二、卡死分析

1. 為什么會卡死

對于窗體程序的卡死,主要就是看主線程此時正在做什么,使用 ~0s;k 命令即可,輸出如下:

0:000> ~0s;k
PresentationCore_ni!string+0x1e6968:
00007ffb`f4407e60 250000e0ff      and     eax,0FFE00000h
 # Child-SP          RetAddr               Call Site
00 0000005f`849fc7c0 00007ffb`f4407da7     PresentationCore_ni!`string'+0x1e6968
01 0000005f`849fc810 00007ffb`f43d1d5a     PresentationCore_ni!System.Windows.ContextLayoutManager.LayoutQueue.Add+0x37
02 0000005f`849fc860 00007ffb`f2e5a4b8     PresentationCore_ni!System.Windows.UIElement.InvalidateMeasure+0xda
03 0000005f`849fc8b0 00007ffb`f2ead5bd     PresentationFramework_ni!System.Windows.FrameworkElement.OnPropertyChanged+0x8b8
04 0000005f`849fcb10 00007ffc`1ae9c394     PresentationFramework_ni!System.Windows.Controls.TextBlock.OnPropertyChanged+0x5d
...
26 0000005f`849fe460 00007ffc`1ae9044f     WindowsBase_ni!System.Windows.Threading.Dispatcher.ProcessQueue+0x1fd
27 0000005f`849fe4f0 00007ffc`1ae93314     WindowsBase_ni!System.Windows.Threading.Dispatcher.WndProcHook+0x6f
28 0000005f`849fe570 00007ffc`1ae93714     WindowsBase_ni!MS.Win32.HwndWrapper.WndProc+0xc4
29 0000005f`849fe600 00007ffc`1ae93d58     WindowsBase_ni!MS.Win32.HwndSubclass.DispatcherCallbackOperation+0x84
2a 0000005f`849fe650 00007ffc`1ae93c56     WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall+0x68
2b 0000005f`849fe6c0 00007ffc`1ae91262     WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.TryCatchWhen+0x36
2c 0000005f`849fe710 00007ffc`1ae93082     WindowsBase_ni!System.Windows.Threading.Dispatcher.LegacyInvokeImpl+0x172
2d 0000005f`849fe7b0 00007ffc`1b053b82     WindowsBase_ni!MS.Win32.HwndSubclass.SubclassWndProc+0x152
2e 0000005f`849fe8b0 00007ffc`2f0e224e     WindowsBase_ni+0x323b82
2f 0000005f`849fe920 00007ffc`505ce7e8     clr!UMThunkStub+0x6e
30 0000005f`849fe9b0 00007ffc`505ce229     user32!UserCallWinProcCheckWow+0x2f8
31 0000005f`849feb40 00007ffc`1aeb4479     user32!DispatchMessageWorker+0x249
...
43 0000005f`849ffc60 00000000`00000000     ntdll!RtlUserThreadStart+0x21

從卦中的 ProcessQueueTextBlock.OnPropertyChanged 等函數來看,當前主線程正在忙碌處理,如果你想看主線程的執行流細節,可以將dmp拖到vs中,讓vs幫我們解讀,拖進去后是不是一下子就清晰多了。。。截圖如下:

圖片圖片

接下來的問題是這玩意會導致UI的卡死嗎? 經驗上告訴我,這個概率不大,畢竟 PresentationCore.dll 中的代碼固若金湯,那問題出在哪里呢?大概率就是窗體的Queue隊列積壓過多導致。

2. Queue隊列積壓過多嗎

要想找到這個問題的答案,可以深挖調度類Dispatcher,使用 !dso xxx 到當前線程棧里去撈。

0:000> !dso
OS Thread Id: 0x34d0 (0)
RSP/REG          Object           Name
...
0000005F849FED20 0000020c4a784dc8 System.Windows.Threading.Dispatcher
...

0:000> !do0000020c4a784dc8
Name:        System.Windows.Threading.Dispatcher
MethodTable: 00007ffc1ad53e30
EEClass:     00007ffc1ad8a6f0
Size:        232(0xe8) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
...
00007ffc1ad4caf8  4001284       a0 ...on, WindowsBase]]  0 instance 0000020c4a784f08 _queue
...

0:000> !do0000020c4a784f08
Name:        System.Windows.Threading.PriorityQueue`1[[System.Windows.Threading.DispatcherOperation, WindowsBase]]
MethodTable: 00007ffc1ad4caf8
EEClass:     00007ffc1adab1e8
Size:        56(0x38) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
00000000000000004001240        8                       0 instance 0000020c4a784f40 _priorityChains
00000000000000004001241       10                       0 instance 0000020c4a785078 _cacheReusableChains
00007ffc1b18f340  4001242       18 ...Canon, mscorlib]]  0 instance 0000020c31b84d68 _head
00007ffc1b18f340  4001243       20 ...Canon, mscorlib]]  0 instance 0000020ce073ca68 _tail
00007ffc2b4d85a0  4001244       28         System.Int32  1 instance           889015 _count

這卦象很不吉利,UI 隊列居然積壓了高達 88w 的未處理任務,難怪這位朋友說軟件卡死了,其實UI線程在忙碌的任務處理,看樣子沒個幾天幾夜搞不定哈。

接下來的問題是為什么會積壓這么多,要想找到這個問題的答案,可以從 88w 的queue隊列中抽選幾個任務,看看大概都是些什么,展開上面的 _tail 節點即可。

0:000> !DumpObj /d 0000020ce073ca68
Name:        System.Windows.Threading.PriorityItem`1[[System.Windows.Threading.DispatcherOperation, WindowsBase]]
MethodTable: 00007ffc1ad4e5e0
EEClass:     00007ffc1adb28a0
Size:        64(0x40) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
00007ffc2b4da238  400123a        8       System.__Canon  0 instance 0000020ce073c898 _data
...

0:000> !DumpObj /d 0000020ce073c840
Name:        System.Action
MethodTable: 00007ffc2b55aff0
EEClass:     00007ffc2b665440
Size:        64(0x40) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
00007ffc2b4d5dd8  40002f3        8        System.Object  0 instance 0000020c4ba28050 _target
00007ffc2b4d5dd8  40002f4       10        System.Object  0 instance 0000000000000000 _methodBase
00007ffc2b5531f8  40002f5       18        System.IntPtr  1 instance     7ffbcfb85b10 _methodPtr
...

0:000> !U 7ffbcfb85b10
Unmanaged code
00007ffb`cfb85b10 e9db38e700      jmp     00007ffb`d09f93f0
00007ffb`cfb85b15 5f              pop     rdi
00007ffb`cfb85b16 61              ???
00007ffb`cfb85b17 0040dc          add     byte ptr [rax-24h],al
00007ffb`cfb85b1a c8cffb7f        enter   0FBCFh,7Fh
00007ffb`cfb85b1e 0000            add     byte ptr [rax],al
00007ffb`cfb85b20 e80bea555f      call    clr!PrecodeFixupThunk (00007ffc`2f0e4530)
00007ffb`cfb85b25 5e              pop     rsi
00007ffb`cfb85b26 0000            add     byte ptr [rax],al
00007ffb`cfb85b28 68e1c8cffb      push    0FFFFFFFFFBCFC8E1h

0:000> !U 00007ffb`d09f93f0
Normal JIT generated code
WpfApp.ViewModel.CalculatedIsocenterShiftViewModel.<UpdateLineGraph>b__93_0()
Begin 00007ffbd09f93f0, size f54
>>> 00007ffb`d09f93f0 55              push    rbp
...

從卦中可以看到有一個 <UpdateLineGraph>b__93_0 方法,看樣子這是一個匿名方法,接下來用 ilspy 打開觀察源代碼,截圖如下:

圖片圖片

從卦中的代碼看,尼瑪,這是兵家大忌哈。。。居然讓UI線程做什么復雜的業務邏輯,這怎么不讓 UI線程 累死。。。

為了佐證,可以使用 ~*e !clrstack 觀察此時的各個線程棧,可以發現目前有兩個線程正在通過 Dispatcher 給UI發通知并等待UI線程響應,截圖如下:

圖片圖片

到這里基本就真相大白了,這位朋友應該是高頻的往UI打數據(畫圖),導致軟件卡死。

三、總結

這次卡死事故是這位朋友犯了兵家大忌,UI線程只用來更新UI,不要將復雜的業務邏輯丟給UI去做。

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

2023-09-27 07:23:10

.NET監控軟件

2023-05-15 11:15:50

.NET門診語句

2024-05-20 09:39:02

.NETurl線程池

2022-10-13 18:40:05

.NETOA后端

2024-07-01 13:00:24

.NET網絡邊緣計算

2022-01-17 21:28:36

管理系統.NET

2024-11-29 10:06:59

2024-09-14 10:28:56

.NET卡死程序

2024-12-27 13:31:18

.NETdump調試

2024-06-06 10:51:15

自動化系統推測

2024-05-28 10:18:30

WPF程序數據

2024-05-31 12:56:06

.NET代碼方法

2023-10-07 13:28:53

.NET軟件賬本

2022-10-09 10:47:37

NET視覺軟件

2023-06-26 00:12:46

2024-03-28 12:56:36

2023-04-06 10:52:18

2023-07-06 10:11:38

.NET模式dump

2023-03-26 20:24:50

ERP網站系統

2024-03-26 00:44:53

.NETCIM系統
點贊
收藏

51CTO技術棧公眾號

毛片一区二区三区| 国产三级精品在线不卡| 国产欧美日本在线| 国产精品成人网站| 麻豆tv免费在线观看| 北岛玲精品视频在线观看| 99久久免费精品| 久久久国产视频91| 国产a级片免费观看| 水蜜桃亚洲精品| 少妇大叫太粗太大爽一区二区| 亚洲成人三级| 免费亚洲一区| 亚洲精品美女网站| 97久久国产亚洲精品超碰热| 中文字幕视频一区二区| 国产精品香蕉| 伊人夜夜躁av伊人久久| 国产精品一区二区三| 人妻aⅴ无码一区二区三区 | 亚洲日本欧美中文幕| 欧美一区二区视频在线播放| 一区二区三区免费观看视频| 欧美日韩国产免费观看视频| 午夜视频一区二区三区| www.av一区视频| 亚洲综合视频网站| 欧美激情啪啪| 亚洲日韩欧美一区二区在线| 91青草视频久久| 日韩在线中文字幕视频| 欧美久久一区二区三区| 一区二区成人在线| 国产精品我不卡| 亚洲男人的天堂在线视频| 红杏视频成人| 91成人免费在线视频| 亚洲巨乳在线观看| 国产婷婷在线视频| 亚洲私人影院| 亚洲第一免费播放区| 成人黄色av片| 久久精品国产亚洲a∨麻豆| 久久福利一区| 亚洲精品一二三区区别| 欧美日韩国产在线播放| 免费一区二区三区| 久久久精品毛片| 天天做天天爱天天综合网| 日韩欧美亚洲国产精品字幕久久久| 国产a级黄色大片| 青青青青在线| 中文字幕一区不卡| 91免费版黄色| 日韩欧美三级视频| 成人同人动漫免费观看| 日韩网站在线看片你懂的| 欧美不卡在线播放| av电影在线免费| 国产欧美精品国产国产专区| 成人妇女免费播放久久久| 久久人人爽人人爽人人| 杨幂一区二区三区免费看视频| 在线观看91视频| 欧美一级黄色影院| 中国av在线播放| 2017欧美狠狠色| 亚洲精品欧美一区二区三区| 日本最新中文字幕| 日产精品一区二区| 欧美变态tickling挠脚心| 国产精品色婷婷视频| 欧美日韩中文字幕视频| 最新国产精品精品视频| 日本韩国欧美一区二区三区| 真人做人试看60分钟免费| 国产精品久久亚洲7777| a视频免费在线观看| 久久亚洲图片| 久久久久久国产免费 | 岛国精品在线| 午夜精品久久久久影视| 男人日女人bb视频| h片在线播放| 国产婷婷色一区二区三区| av资源一区二区| 在线观看xxx| 国产精品911| 国产精品美女网站| av小说天堂网| 91网站最新网址| 99久久精品无码一区二区毛片 | 热色播在线视频| 亚洲啪啪综合av一区二区三区| 久久久久久久免费视频| porn亚洲| 国产色综合一区| 激情图片qvod| 精品国模一区二区三区| 天天操天天干天天综合网| 蜜桃网站在线观看| 涩涩视频在线免费看| 欧美日韩另类一区| 亚洲老女人av| 国产精品扒开腿做爽爽爽视频软件| 欧美日韩专区在线| 亚洲天堂av线| 欧美精品资源| 日本道色综合久久| 韩国三级在线播放| 精品一区二区三区免费看| 日韩av在线最新| 免费看特级毛片| 老鸭窝亚洲一区二区三区| 亚洲精品免费在线视频| 国产毛片av在线| 在线看免费av| 国产91在线观看| 3d精品h动漫啪啪一区二区| 外国精品视频在线观看 | 亚洲国产aⅴ天堂久久| 超碰免费在线公开| 九七久久人人| 自拍视频在线观看一区二区| 黄瓜视频免费观看在线观看www| 两个人看的在线视频www| 欧美精品乱人伦久久久久久| 亚洲一区二区福利视频| 欧美一级做a| 欧美一区二区三级| 无码国产精品一区二区免费式直播 | 国产精品精品一区二区三区午夜版| 韩国av中文字幕| 国产成人久久精品77777最新版本| 视频一区视频二区视频| 亚洲三级欧美| 亚洲一级二级在线| 欧美这里只有精品| 精品一区二区三区中文字幕视频 | 暧暧视频在线免费观看| 亚洲第一成人在线| 欧美高清精品一区二区| eeuss鲁片一区二区三区| 精品国产免费视频| a级大片在线观看| 四虎国产精品免费观看| 九九久久精品一区| 国产成人愉拍精品久久| 成人免费高清在线| 日韩国产在线一区| 中文字幕在线观看播放| 欧美一区二区三区日韩| 国产福利视频网站| 137大胆人体在线观看| 亚洲国产高清不卡| 50度灰在线观看| 精品三级国产| 欧美大秀在线观看| 人人草在线观看| 久久婷婷国产综合国色天香| 欧洲黄色一级视频| 神马影视一区二区| 欧美日韩第一页| 国产91免费看| 国产欧美一区二区精品性色 | 都市激情久久综合| 亚洲黄在线观看| 美国一级黄色录像| 一本久久综合| 国产精品视频大全| 麻豆视频免费在线观看| 日韩欧美一区二区不卡| 久久视频免费在线观看| 91视频你懂的| 国产高潮免费视频| 欧美一区激情| 国产日韩欧美日韩| 免费在线观看一级毛片| 亚洲一区在线观看视频| 国产精品无码电影| 欧美精品国产一区| 91精品久久久久久久久不口人| 老司机午夜在线视频| 精品国产1区二区| 欧美 日韩 精品| 国产成人av一区| 日韩小视频在线播放| 精品九九在线| 97超碰人人看人人| 日韩精品99| 亚洲激情在线观看| 18国产免费视频| 久久色视频免费观看| 婷婷激情四射五月天| 欧美日韩一区二区三区四区在线观看| 久久久www免费人成黑人精品| 日韩免费影院| 日韩一区二区免费电影| 日本中文字幕在线免费观看| 国产精品午夜久久| 日本人添下边视频免费| 青青草国产精品97视觉盛宴| ...av二区三区久久精品| 日本黄色三级网站| 日韩精品一级中文字幕精品视频免费观看| 国产精品区一区二区三含羞草| 男人最爱成人网| 欧美床上激情在线观看| 99热这里只有精品9| 黑人与娇小精品av专区| 日韩精品一区二区亚洲av性色| 91在线观看视频| 国产精品自拍片| 国产精品久久久久9999赢消| 九九九九九九精品| 日韩精品成人在线观看| 色综合久综合久久综合久鬼88| 欧美高清成人| 亚洲国产精品va在线| 国产精品久久久久久69| 亚洲精品国产a| 少妇愉情理伦三级| 91在线观看免费视频| 粗大的内捧猛烈进出视频| 欧美午夜电影在线观看| 亚洲国产欧洲综合997久久| 亚洲黄色录像| 激情小说综合网| 成人软件在线观看| 91国偷自产一区二区三区的观看方式| 亚洲欧美另类一区| 51久久夜色精品国产麻豆| 全网免费在线播放视频入口| 中文子幕无线码一区tr| 久久精品视频18| 久久久久久久久久久黄色| 天天爽夜夜爽一区二区三区| 成人3d动漫在线观看| 精品乱码一区二区三区| 国产成人av毛片| 国产精品美女xx| 国产精品极品在线观看| 成人91视频| 第一区第二区在线| 国产精品免费一区二区三区观看| 日本一区二区三区播放| 91嫩草在线| 91成人入口| 国产欧美欧洲| 亚洲婷婷伊人| 丝袜足脚交91精品| 郴州新闻综合频道在线直播| 伊人久久大香线蕉av一区| 91精品短视频| 国产一区在线免费观看| 欧美日日夜夜| av不卡一区二区三区| 国产在线观看福利| 亚洲精品久久| 国产内射老熟女aaaa| 欧美日韩福利| 免费av手机在线观看| 午夜一区二区三区不卡视频| 国产第一页视频| 麻豆久久久久久久| 无码人妻一区二区三区在线视频| 国产精品99久久久久久有的能看| 日韩在线综合网| 91精品国产91久久久久久黑人| 青青草影院在线观看| 国内在线观看一区二区三区| 少妇av一区二区三区无码| 久热国产精品| 亚洲综合20p| 日韩不卡免费视频| www.污网站| 成人国产一区二区三区精品| 青青草久久伊人| 狠狠色综合网| 青青在线视频观看| 狠狠狠色丁香婷婷综合激情| 国产成人无码一二三区视频| 美女脱光内衣内裤视频久久影院| 国产l精品国产亚洲区久久| 免费日本视频一区| 国产在线观看免费播放| 国精产品一区一区三区mba桃花 | 日本一区二区三区精品| 欧美日韩中文字幕精品| 国产成人三级在线观看视频| 亚洲人精品午夜在线观看| 成年人网站在线| 日韩av123| 国产社区精品视频| 久久6精品影院| 欧美人与性动交xxⅹxx| 91沈先生在线观看| 伊人春色之综合网| 麻豆一区二区三区在线观看| 久久不射2019中文字幕| 久久久久xxxx| 国产亚洲精品福利| 国产精品a成v人在线播放| 欧美日韩免费视频| 日本大臀精品| 亚洲欧洲在线视频| 欧洲成人综合网| 久久理论片午夜琪琪电影网| 青草在线视频在线观看| 国产精品激情自拍| 欧美jizz19性欧美| 伊人再见免费在线观看高清版| 日本sm残虐另类| 亚洲欧美色图视频| 久久蜜桃一区二区| 欧美极品视频在线观看| 亚洲午夜国产一区99re久久| 亚洲精品91天天久久人人| 精品卡一卡二卡三卡四在线| 91福利在线视频| 日本久久久久亚洲中字幕| www.国产精品一区| 久久免费一级片| 精久久久久久久久久久| 亚洲最大成人综合网| 国产精品网站在线播放| 在线观看 中文字幕| 日韩精品专区在线影院重磅| 精品国产99久久久久久| 国产免费亚洲高清| 成人在线免费观看91| 欧美一级黄色片视频| 99久久国产综合精品女不卡| 992tv在线成人免费观看| 丁香婷婷久久| 水蜜桃一区二区三区| 日韩福利电影在线观看| 男人天堂av电影| 色婷婷亚洲综合| 国产又大又黄的视频| 中文国产成人精品| 成人日批视频| 91精品久久久久久久久久入口| 国产最新精品| 免费成人深夜夜行网站视频| 日韩电影在线一区二区三区| 中文字幕第20页| 91福利在线观看| 超碰免费在线观看| 国产精品美乳在线观看| 成人在线亚洲| 久久久久xxxx| 亚洲综合色区另类av| 成人免费视频国产| 91福利视频在线观看| 亚洲精品播放| 人妻精品无码一区二区三区| 久久综合九色欧美综合狠狠 | 性娇小13――14欧美| 美女久久久久久久久久| 欧美性xxxxxxxx| 黄色一级大片在线免费看国产| 欧美国产中文字幕| 日韩精品a在线观看91| www亚洲国产| 国产sm精品调教视频网站| 日韩精品久久久久久久| 亚洲美女自拍视频| 丝袜中文在线| 国产一区二区三区四区五区在线| 亚洲在线视频| 亚洲a∨无码无在线观看| 欧美一级视频精品观看| 丁香花视频在线观看| 久久久www免费人成黑人精品| 日本不卡不码高清免费观看| 美女福利视频在线观看| 欧美色成人综合| 亚洲91av| 日韩福利一区二区三区| 国产伦精品一区二区三区视频青涩| 黄色小说在线观看视频| 国产香蕉97碰碰久久人人| 高清毛片在线观看| 热舞福利精品大尺度视频| 国产日韩一区二区三区在线| 苍井空张开腿实干12次| 精品国产精品自拍| 99青草视频在线播放视| 99精品国产一区二区| 免费日韩av片| 成人免费视频网站入口::| 亚洲精品少妇网址| 欧美男人天堂| 中文视频一区视频二区视频三区| 成人激情午夜影院| 一级黄色片视频| 欧美专区在线观看| 欧美日韩另类图片| 国产精品探花在线播放|