故障排錯-解決迅雷播放器在Windows 10中長時間停止響應


這兩天在幾家客戶那裏介紹微軟的Windows Azure,有幾個精彩的demo我還錄製了視頻。沒成想迅雷播放器在我的Windows 10預覽版上似乎得了水土不服之症,每次打開視頻,最起碼要卡10~15秒鐘才正常開始播放,讓我有一種很強的挫敗感。


作爲一名IT技術人員,自然不能無視這個故障,也不能簡單地重裝其他播放器。----深入其虎穴,捉得虎子,纔是硬道理。


Windows工程師手邊最好的排錯工具,當然是Sysinternals Suite。有性能問題,首先得找Process Monitor,所以趕緊用來抓迅雷hang的時候,背後都發生了什麼。


結果很令人沮喪,檢查的結果,除了發現以下大量訪問CodePage註冊表鍵值的行爲,並沒有發現太多有用的信息。
640?tp=webp&wxfrom=5

那就只能用Procdump來抓取迅雷hang時背後所發生的事情了。Procdump可以基於特定事件自動生成進程的dump文件,例如在進程佔用指定數量的CPU、或者佔用指定數量的內存時自動抓dump。在這裏我們指定讓Procdump在迅雷hang住的時候自動抓dump:

procdump.exe" -h -n 2 xmp xmp.dump

其中的-h是發現進程hang時可以自動抓dump,默認是5秒。-n是指定抓多少個dump,xmp是迅雷的進程名稱,而最後是dump文件名稱。

640?tp=webp&wxfrom=5


很快就可以生成dump文件,然後用Windbg將其打開進行調試,一開始會提示很多dll等文件找不到符號文件,這是正常的,微軟的符號服務器不可能有迅雷的符號文件。從以下的線程堆棧可以看出,當XmpUtility中的某個函數調用ieframe!IEGetProtectedModeCookie函數時發生了問題。

640?tp=webp&wxfrom=5


接下來可以看到Windbg提示ieframe!IEGetProtectedModeCookie的問題。盆盆推斷這是因爲迅雷播放器需要調用IE框架顯示所謂的片庫等內容,由於代碼有問題,和Windows 10的IE保護模式有衝突。640?tp=webp&wxfrom=5

要臨時解決這個問題,很簡單,只需禁用IE保護模式,或者把迅雷的網站加入到可信任站點(可信任站點默認禁用IE保護模式)。但是需要注意,禁用IE保護模式,會提高IE的安全風險!

640?tp=webp&wxfrom=5


所以最好的方法,是迅雷工程師能儘快修改代碼,以便能和IE保護模式兼容。我已經給迅雷發了微博消息,但是到今天爲止已經2個月,還沒得到回覆。


640?tp=webp&wxfrom=5



如果您覺得華來四還不錯,那就微信掃描以下的二維碼關注吧。也可以直接添加微信公衆號:sysinternal

wKiom1UYp7Kw58ZCAABoxNKWhig097.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章