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

亚洲国产精品一区二区久久恐怖片| 亚洲毛片网站| 欧美顶级少妇做爰| 99亚洲国产精品| 日本黄色不卡视频| 久久蜜桃精品| 久久在线视频在线| 亚洲成人日韩在线| 中文字幕日本一区| 精品久久久久久久久久国产 | 青青青免费在线| 成人在线二区| 国产91精品欧美| 国产激情综合五月久久| 国产波霸爆乳一区二区| 国产一区二区三区探花| 欧美一区二区三区日韩| 丝袜制服一区二区三区| 超黄网站在线观看| 亚洲免费在线视频一区 二区| 六月婷婷久久| 亚洲精品国产av| 麻豆精品国产91久久久久久| 91国内在线视频| 高h视频免费观看| 日韩大片在线| 国产亚洲a∨片在线观看| 扒开伸进免费视频| 国产精品久久久久久av公交车| 日本韩国一区二区三区| 久久av综合网| a篇片在线观看网站| 国产欧美日韩精品一区| 久久99精品久久久久久青青日本| 国产片在线播放| 蜜桃av一区二区| 欧洲午夜精品久久久| 黄色小视频在线免费看| 一区二区三区在线电影| 日韩中文字在线| 中文字幕人妻一区二区三区在线视频| 精品女人视频| 精品国产成人系列| 妖精视频在线观看| 日韩免费高清视频网站| 91精品国产综合久久精品性色| av网站在线不卡| 日日av拍夜夜添久久免费| 偷拍一区二区三区| 欧美 日韩 亚洲 一区| 日日夜夜天天综合入口| 亚洲精品国产高清久久伦理二区| 中文字幕成人一区| 蜜芽在线免费观看| 成人免费在线播放视频| 中日韩在线视频| 777电影在线观看| 国产精品嫩草影院av蜜臀| 神马影院我不卡午夜| 韩国三级av在线免费观看| 久久亚洲综合色一区二区三区| 好吊色欧美一区二区三区四区 | 成人黄页毛片网站| 国产伦精品一区二区三区| 亚洲国产精品suv| 成人永久aaa| 久久久综合亚洲91久久98| 亚洲人在线观看视频| 久久综合色婷婷| 热舞福利精品大尺度视频| 猫咪在线永久网站| 亚洲国产激情av| 日本黄色a视频| 99在线播放| 午夜欧美视频在线观看| 免费黄色福利视频| 婷婷激情一区| 欧美精品第1页| 下面一进一出好爽视频| 成人免费在线电影网| 日韩大陆欧美高清视频区| 性高潮久久久久久久| 成人在线亚洲| 色综合男人天堂| 久久精品国产成人av| 日精品一区二区| 91久热免费在线视频| 成人乱码一区二区三区| 久久久夜色精品亚洲| 亚洲蜜桃av| 日本动漫同人动漫在线观看| 欧美日韩国产色| 日本三级黄色网址| 亚洲一区二区三区四区电影| 亚洲欧洲在线免费| 午夜爱爱毛片xxxx视频免费看| 日韩一区二区中文| 国内精品久久久久影院 日本资源| www.com亚洲| 国产精品一区二区不卡| 久久综合毛片| av片在线观看网站| 色综合天天天天做夜夜夜夜做| 手机av在线免费| 久久久久观看| 久久久国产精品一区| 中文字幕第15页| 国精产品一区一区三区mba桃花 | 久久久久久久高清| 精品中国亚洲| 久久综合伊人77777尤物| 久久国产黄色片| 国产a级毛片一区| 亚洲mv在线看| 一个人看的www视频在线免费观看| 欧美日本在线视频| 亚洲第一香蕉网| 欧美啪啪一区| 成人精品视频99在线观看免费| 日韩二区三区| 亚洲国产中文字幕| 欧美在线a视频| 波多野结衣一区| 欧美精品久久久久| 国产精品人妻一区二区三区| 久久精品夜夜夜夜久久| 日本精品久久久久久久久久| 国产欧美视频在线| 日韩视频中文字幕| 亚洲精品国产精品乱码视色| 久久男人中文字幕资源站| 97在线国产视频| 国产精品久久久久久av公交车| 中文字幕9999| 免费黄色片视频| 久久色在线观看| 一女被多男玩喷潮视频| 国产精品毛片视频| 欧美美女15p| 国产情侣自拍小视频| 国产精品入口麻豆原神| 日韩视频免费在线播放| 国产成人调教视频在线观看| 欧美一级片免费在线| 人妻少妇精品无码专区| 亚洲午夜精品在线| 国产吃瓜黑料一区二区| 最新精品国产| 97人人模人人爽人人少妇| 国产原创在线观看| 91精品在线麻豆| 中文字幕电影av| 国产高清成人在线| 欧美一区二区视频在线播放| 一区二区在线免费播放| 欧美丰满少妇xxxx| 亚洲第一页在线观看| 一区二区三区av电影| 国产清纯白嫩初高中在线观看性色| 国产精品sm| 国产精品10p综合二区| h片视频在线观看| 亚洲电影av在线| 免费观看一区二区三区毛片| 久久久久国产精品麻豆| 不卡av免费在线| 日韩精品首页| 91在线中文字幕| a视频在线观看| 亚洲黄色有码视频| 91丝袜一区二区三区| 国产欧美日韩精品一区| 天天色天天干天天色| 激情91久久| 欧美一区视久久| 青青青国产精品| 欧美黄色成人网| 天天av综合网| 精品婷婷伊人一区三区三| 永久久久久久久| av在线不卡免费看| 爱情岛论坛成人| 伊人成综合网| 久久99蜜桃综合影院免费观看| 精品免费av一区二区三区 | 51精品在线| 亚洲天堂免费在线| 国产丰满美女做爰| 欧美日韩亚洲视频| 美国一级片在线观看| 成人av综合在线| 香蕉视频网站入口| 伊人成年综合电影网| 图片区小说区区亚洲五月| 日韩黄色av| 国产精品极品美女粉嫩高清在线| 中国av在线播放| 亚洲欧美日韩国产成人| 国产精品人妻一区二区三区| 欧美午夜片欧美片在线观看| 北条麻妃在线观看视频| 91丨porny丨最新| 97人人模人人爽人人澡| 久久福利影视| 人人妻人人澡人人爽欧美一区| 国产91精品对白在线播放| 97免费高清电视剧观看| jizz亚洲女人高潮大叫| 国模私拍视频一区| 黄色免费在线看| 亚洲欧美三级伦理| 亚洲精品久久久久avwww潮水| 在线观看免费亚洲| 日韩伦理在线视频| 日韩美女啊v在线免费观看| 可以直接看的无码av| 国产成人午夜高潮毛片| 九九热精品在线播放| 亚洲精品男同| 99在线观看视频免费| 欧美xxav| 日韩一区国产在线观看| 欧美福利在线播放网址导航| 99视频在线| 偷拍自拍亚洲| 国产精品日韩欧美大师| 亚洲天堂av影院| 久久久欧美一区二区| 国产视频在线播放| 精品国偷自产在线视频99| 国产精品一区二区婷婷| 亚洲欧美一区二区三区情侣bbw| 国产 日韩 欧美 综合| 91精品福利在线一区二区三区 | 制服国产精品| 日韩av在线中文字幕| 日韩三级电影免费观看| 亚洲人亚洲人色久| 蜜桃久久精品乱码一区二区 | 在线日韩av观看| 国产日本在线观看| 亚洲人成电影网站| 国产午夜视频在线观看| 亚洲人成自拍网站| 国产三级在线观看| 尤物九九久久国产精品的分类| 毛片网站在线| 中文字幕久久久av一区| eeuss影院在线播放| 色悠悠久久久久| 男人天堂手机在线| 欧美成人一二三| 国产精品69xx| 91av免费观看91av精品在线| 黄色激情在线播放| 国产成人啪精品视频免费网| 午夜日韩成人影院| 国产精品你懂得| 97久久中文字幕| 91福利视频导航| 久久久伦理片| 蜜桃91精品入口| 日本一本不卡| 美女在线免费视频| 午夜国产欧美理论在线播放| 无码 制服 丝袜 国产 另类| 国产农村妇女精品一二区| 成人在线观看黄| 久久国产剧场电影| 亚洲 自拍 另类 欧美 丝袜| 成人精品国产福利| 日韩乱码人妻无码中文字幕久久| 久久精品一区二区三区四区| 一级性生活免费视频| 一区二区三区在线观看网站| 日产精品久久久久久久| 色88888久久久久久影院按摩| 中文字幕一区二区三区四区免费看 | 国产又大又长又粗| 欧美mv日韩mv亚洲| 日韩三级电影网| 日韩中文字幕欧美| 999av小视频在线| 国产精品久久久久久久久久久不卡| 97色婷婷成人综合在线观看| 国语精品免费视频| 日韩美女一区二区三区在线观看| 国产女人18毛片| 久久精品三级| 国产大片一区二区三区| 99视频热这里只有精品免费| 少妇精品无码一区二区免费视频| 一区二区三区在线影院| 天天综合天天干| 91精品国产一区二区三区香蕉| 亚洲欧美日韩成人在线| 国产亚洲精品综合一区91| 在线视频中文字幕第一页| 国产成人精品电影| 北条麻妃在线一区二区免费播放| 久久精品中文字幕一区二区三区| 97国产精品| 日韩网址在线观看| 国产黄色精品视频| 四虎成人免费影院| 午夜精品久久久| 国产日本精品视频| 国产亚洲精品久久久久久777| 波多野在线观看| 成人在线中文字幕| 深夜福利久久| 久久久一本二本三本| 国产麻豆视频精品| 国产一区二区三区视频播放| 精品福利在线看| 亚洲成人av综合| 久久久精品一区| 免费日韩成人| 日韩欧美亚洲精品| 西西裸体人体做爰大胆久久久| 亚洲精品鲁一鲁一区二区三区| 国产精品久久久久久妇女6080| 国产成人无码精品久久久久| 日韩女优制服丝袜电影| 无遮挡的视频在线观看| 国产精品情侣自拍| 国产一区二区三区91| www国产精品内射老熟女| 成人免费看黄yyy456| 69av视频在线| 91精品国产免费久久综合| 91精彩视频在线观看| 国产激情视频一区| 国内精品伊人久久久| 激情五月开心婷婷| 97精品国产97久久久久久久久久久久 | 亚洲精品综合在线观看| 国产精品国产精品国产专区不蜜 | 婷婷久久综合网| 欧美日韩三级视频| 欧美亚洲精品一区| 欧美图片一区二区| 亚洲成人av一区二区| 性一交一乱一精一晶| 另类天堂视频在线观看| 欧美美女福利视频| 亚洲精品国产精品久久| 免费在线一区观看| 黄色免费一级视频| 欧美日韩国产天堂| 在线激情免费视频| 国产在线拍揄自揄视频不卡99| 久久中文字幕二区| 亚洲综合20p| 一区二区三区四区精品在线视频| 性色av蜜臀av| 午夜精品一区二区三区在线视频 | 日韩一区二区免费在线电影 | 精品国产99| 杨幂毛片午夜性生毛片| 国产精品理伦片| 国产精品区在线观看| 久久久久国产视频| 香蕉视频一区| 日本xxxx黄色| 最新日韩在线视频| 成人a v视频| 国产网站欧美日韩免费精品在线观看 | 亚洲人成网站精品片在线观看| 国产精品系列视频| 美女啪啪无遮挡免费久久网站| 99国产精品久久一区二区三区| 日本中文字幕在线视频观看| 久久网这里都是精品| 亚洲综合网av| 国产做受高潮69| 国产一区二区三区四区| 亚洲一区精品视频在线观看| 亚洲一区二区三区免费视频| 四虎在线免费观看| 国产欧美日韩最新| 狠狠入ady亚洲精品经典电影| 黄瓜视频污在线观看| 欧美人伦禁忌dvd放荡欲情| 超碰中文在线| 亚洲一区二区三区色| 成人午夜碰碰视频| 中文字幕精品一区二区精| 欧美黑人视频一区| 欧美日韩国产一区二区三区不卡| 亚洲国产欧美日韩在线| 欧美性色xo影院| 18+激情视频在线| 日韩av高清| 成人免费精品视频| 在线中文字幕网站| 69视频在线免费观看| 午夜精品一区二区三区国产 | 91av在线免费观看视频| 999国产精品999久久久久久|