weasel icon indicating copy to clipboard operation
weasel copied to clipboard

算法服务崩溃错误报告dmp文件使用简易说明

Open fxliang opened this issue 1 year ago • 9 comments

从 957a8e30542af8211ee305e26145351e7e3c07b0 起,小狼毫提供WER能力,在算法服务WeaselServer.exe崩溃后会在日志目录%TEMP%\rime.weasel\下生成dmp文件 image

可通过语言栏右击,选择日志文件夹快速打开该文件夹

通过分析dmp文件,可以定位崩溃问题所在,WeaselServer.exe/rime.dll/etc.

分析dmp工具,可用微软出品的DebugDiag,可下载安装备用。

分析步骤:

  1. 安装DebugDiag(安装一次即可)
  2. 装备出现崩溃的版本对应的symbols文件,如果是Nightly Release,则其对应的symbols文件在release page中随附,将debug_symbols.7z文件解压到一个您方便管理的位置(通常只需要WeaselServer.pdb,放到程序目录中有时候debugdiag会有更正确的响应),得到一个output文件夹以及内部若干pdb文件。如您使用的是commit ci的artifact文件,symbols文件也有在artifacts中有附上。 image image image
  3. 开始菜单中打开DebugDiag 2 Analysis快捷图标运行DebugDiag image
  4. 点击左上角设置图标(该步骤通常只要设置一次后续会自动沿用上一次设定) image
  5. 设置symbols路径和分析options后返回,加上pdb文件路径和WeaselServer.exe和rime.dll的路径(该步骤通常只要设置一次后续会自动沿用上一次设定) @@$JNTLDKBP@5IL{JM0KHQV
  6. 点击Add Data Files添加崩溃生成的dmp文件 H)A{1AEB0%7RSQVAS0U~0
  7. 点选CrashHangAnalysis image
  8. 点击Start Analysis
  9. 稍候片刻,弹出打开report mht文件(通常默认用edge或ie可正常打开)
  10. 查看report内容
  11. 拉到report最下方Exception Information,以下例子为一个rime.dll内的崩溃引发服务崩溃 image
  12. 向上拉到Faulting Thread可见崩溃前的堆栈调用情况(本例是处理按键事件后rime.dll内部异常) image

之后? a439ac74e2bc08c694a90fdc5df06602e2a600f7 之后提供了一个简易的守护,6次按键事件无响应则拉起服务(可理解为三次按键down & up)

报bug? 提供bug版本信息,提供Faulting Thread截图信息,必要的情况下提供稳定复现的方法描述

如果没有安装DebugDiag权限怎么办? 上传dmp文件供 热心网友/dev 分析,同时也请提供准确版本信息和复现方法

fxliang avatar May 23 '24 09:05 fxliang

可以写(复制粘贴)进 wiki 里

mirtlebot avatar May 23 '24 10:05 mirtlebot

可以写(复制粘贴)进 wiki 里

我似乎还少贴 张设置的图

fxliang avatar May 23 '24 10:05 fxliang

rime.weasel.zip 开机后界面卡死,原因是weasel服务进程崩溃了

zzm-note avatar May 30 '24 14:05 zzm-note

rime.weasel.zip 开机后界面卡死,原因是weasel服务进程崩溃了

有阅读上方主贴的内容,并执行过分析了吗?你这样连一点点版本信息都不说的,网友再热心也没有办法不是吗

另外,近期的不少崩溃都潜在和写的不好的lua插件关联,有检查过吗?

fxliang avatar May 30 '24 17:05 fxliang

不确定什么原因引起的崩溃,所以发上来共大家研究

触发条件:在能够输入的地方,偶发性的触发,同时屏幕会显示,日志文件在 TEMP/xxx. Info等信息

环境: Windows 10 版本


Name                           Value
----                           -----
PSVersion                      7.4.2
PSEdition                      Core
GitCommitId                    7.4.2
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

软件版本:weasel-0.16.1

dmp分析报告: image

image

日志文件: rime.weasel.ERROR.20240717-100047.18348.log

@fxliang 如果需要dmp文件,也可以提供

betgar avatar Jul 17 '24 06:07 betgar

不确定什么原因引起的崩溃,所以发上来共大家研究

触发条件:在能够输入的地方,偶发性的触发,同时屏幕会显示,日志文件在 TEMP/xxx. Info等信息

环境: Windows 10 版本

Name                           Value
----                           -----
PSVersion                      7.4.2
PSEdition                      Core
GitCommitId                    7.4.2
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

软件版本:weasel-0.16.1

dmp分析报告: image

image

日志文件: rime.weasel.ERROR.20240717-100047.18348.log

@fxliang 如果需要dmp文件,也可以提供

报告标的位置和你说的版本的不对应

另外这个位置序列化失败,少见。可能是后端形成的特定数据引发的。要找到出问题的时候的输入找到稳定复现方法可能才有机会

fxliang avatar Jul 17 '24 11:07 fxliang

不确定什么原因引起的崩溃,所以发上来共大家研究 触发条件:在能够输入的地方,偶发性的触发,同时屏幕会显示,日志文件在 TEMP/xxx. Info等信息 环境: Windows 10 版本

Name                           Value
----                           -----
PSVersion                      7.4.2
PSEdition                      Core
GitCommitId                    7.4.2
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

软件版本:weasel-0.16.1 dmp分析报告: image image 日志文件: rime.weasel.ERROR.20240717-100047.18348.log @fxliang 如果需要dmp文件,也可以提供

报告标的位置和你说的版本的不对应

另外这个位置序列化失败,少见。可能是后端形成的特定数据引发的。要找到出问题的时候的输入找到稳定复现方法可能才有机会

之前是weasal自动升级不成功,我手动安装的weasel-0.16.1(但是先卸载旧版本);昨天卸载weasel-0.16.1之后,重新安装weasel-0.16.1,我观察日志文件夹,已经不会报错,而且用户文件IO错误也消失了

betgar avatar Jul 19 '24 06:07 betgar

Image

Image @fxliang 能不能帮忙看下这个问题,使用小狼毫输入法在游戏中输入内容的时候会crash 😢 version: weasel-0.17.4 下面是调用堆栈:

 	KernelBase.dll!00007ff8eaa9831a()	Unknown
 	[External Code]	
 	weasel.dll!HR_Impl(const HRESULT result, const char * file, int line) Line 319	C++
>	weasel.dll!weasel::DirectWriteResources::DirectWriteResources(weasel::UIStyle & style, unsigned int dpi) Line 48	C++
 	[Inline Frame] weasel.dll!std::_Construct_in_place(weasel::DirectWriteResources &) Line 142	C++
 	[Inline Frame] weasel.dll!std::_Ref_count_obj2<weasel::DirectWriteResources>::{ctor}(weasel::UIStyle &) Line 2014	C++
 	[Inline Frame] weasel.dll!std::make_shared(weasel::UIStyle & <_Args_0>, unsigned int &) Line 2726	C++
 	weasel.dll!WeaselPanel::_InitFontRes(bool forced) Line 183	C++
 	weasel.dll!WeaselPanel::WeaselPanel(weasel::UI & ui) Line 89	C++
 	[Inline Frame] weasel.dll!weasel::UIImpl::{ctor}(weasel::UI &) Line 11	C++
 	[Inline Frame] weasel.dll!weasel::UI::Create(HWND__ *) Line 94	C++
 	[Inline Frame] weasel.dll!CCandidateList::_MakeUIWindow() Line 350	C++
 	weasel.dll!CCandidateList::StartUI() Line 310	C++
 	weasel.dll!WeaselTSF::_StartComposition(ATL::CComPtr<ITfContext> pContext, int fCUASWorkaroundEnabled) Line 81	C++
 	weasel.dll!WeaselTSF::DoEditSession(unsigned long ec) Line 33	C++
 	[External Code]	
 	weasel.dll!WeaselTSF::_UpdateComposition(ATL::CComPtr<ITfContext> pContext) Line 387	C++
 	weasel.dll!WeaselTSF::OnTestKeyDown(ITfContext * pContext, unsigned __int64 wParam, __int64 lParam, int * pfEaten) Line 97	C++

momadacoding avatar Jun 14 '25 12:06 momadacoding

Image

Image @fxliang 能不能帮忙看下这个问题,使用小狼毫输入法在游戏中输入内容的时候会crash 😢 version: weasel-0.17.4 下面是调用堆栈:

 	KernelBase.dll!00007ff8eaa9831a()	Unknown
 	[External Code]	
 	weasel.dll!HR_Impl(const HRESULT result, const char * file, int line) Line 319	C++
>	weasel.dll!weasel::DirectWriteResources::DirectWriteResources(weasel::UIStyle & style, unsigned int dpi) Line 48	C++
 	[Inline Frame] weasel.dll!std::_Construct_in_place(weasel::DirectWriteResources &) Line 142	C++
 	[Inline Frame] weasel.dll!std::_Ref_count_obj2<weasel::DirectWriteResources>::{ctor}(weasel::UIStyle &) Line 2014	C++
 	[Inline Frame] weasel.dll!std::make_shared(weasel::UIStyle & <_Args_0>, unsigned int &) Line 2726	C++
 	weasel.dll!WeaselPanel::_InitFontRes(bool forced) Line 183	C++
 	weasel.dll!WeaselPanel::WeaselPanel(weasel::UI & ui) Line 89	C++
 	[Inline Frame] weasel.dll!weasel::UIImpl::{ctor}(weasel::UI &) Line 11	C++
 	[Inline Frame] weasel.dll!weasel::UI::Create(HWND__ *) Line 94	C++
 	[Inline Frame] weasel.dll!CCandidateList::_MakeUIWindow() Line 350	C++
 	weasel.dll!CCandidateList::StartUI() Line 310	C++
 	weasel.dll!WeaselTSF::_StartComposition(ATL::CComPtr<ITfContext> pContext, int fCUASWorkaroundEnabled) Line 81	C++
 	weasel.dll!WeaselTSF::DoEditSession(unsigned long ec) Line 33	C++
 	[External Code]	
 	weasel.dll!WeaselTSF::_UpdateComposition(ATL::CComPtr<ITfContext> pContext) Line 387	C++
 	weasel.dll!WeaselTSF::OnTestKeyDown(ITfContext * pContext, unsigned __int64 wParam, __int64 lParam, int * pfEaten) Line 97	C++

试了下,0.14.3 是正常的,之后的版本都会crash

momadacoding avatar Jun 16 '25 12:06 momadacoding