rime / weasel

【小狼毫】Rime for Windows
https://rime.im
GNU General Public License v3.0
4.65k stars 555 forks source link

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

Open fxliang opened 5 months ago

fxliang commented 5 months ago

从 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{1A`EB`0%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 分析,同时也请提供准确版本信息和复现方法

mirtlebot commented 5 months ago

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

fxliang commented 5 months ago

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

我似乎还少贴 张设置的图

zzm-note commented 5 months ago

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

fxliang commented 5 months ago

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

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

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

betgar commented 4 months ago

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

触发条件:在能够输入的地方,偶发性的触发,同时屏幕会显示,日志文件在 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 commented 4 months ago

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

触发条件:在能够输入的地方,偶发性的触发,同时屏幕会显示,日志文件在 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 commented 4 months ago

不确定什么原因引起的崩溃,所以发上来共大家研究 触发条件:在能够输入的地方,偶发性的触发,同时屏幕会显示,日志文件在 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错误也消失了