weaselServer.exe /q 退出算法服务,再运行 weaselServer.exe 会导致桌面所有窗口卡死
上报前请检查
- [ ] 我遇到的问题没有其他人在 issue 里提到过
- [x] 我的小狼毫版本于 rime/weasel 下载
- [x] 我在使用小狼毫的最新发布版本后的 CI 构建
操作系统信息
- OS 详细版本: [ 运行 winver.exe 获取,如 Windows 11 22H2 22621.1555]
- 小狼毫版本: [ weasel-0.17.4.5.c127fa7-installer.exe ]
描述遇到的问题 简短地描述你所遇到的问题
复现步骤 重现问题的步骤,如:
- 使用更新脚本 (https://github.com/rimeinn/rime-wanxiang-update-tools) 进行方案更新,更新脚本中为防止文件替换失败会先使用 weaselServer.exe /q 命令退出小狼毫,然后进行文件替换进行更新,更新完成后再启动小狼毫(通过执行 weaselServer.exe)进行启动
function Stop-WeaselServer {
if (-not $rimeServerExecutable) {
Write-Host "警告:未找到Weasel服务端可执行程序,请确保已正确安装小狼毫输入法" -ForegroundColor Yellow
Exit-Tip 1
} elseif (-not $SkipStopWeasel) {
Start-Process -FilePath (Join-Path $rimeInstallDir $rimeServerExecutable) -ArgumentList '/q'
}
}
function Start-WeaselServer {
if (-not $rimeServerExecutable) {
Write-Host "警告:未找到Weasel服务端可执行程序,请确保已正确安装小狼毫输入法" -ForegroundColor Yellow
Exit-Tip 1
} elseif (-not $SkipStopWeasel) {
Start-Process -FilePath (Join-Path $rimeInstallDir $rimeServerExecutable)
}
}
- 遇到了 '桌面上所有的窗口都陷入卡死,无法进行有效响应' 问题,同时查看任务管理器可以看到小狼毫算法服务的内存占用大约1.3gb,同时存在多个小狼毫算法服务,在任务管理器中右键结束最早占用资源最多的小狼毫算法服务,会立马让窗口服务恢复正常,同时弹出正在进行部署服务。
预期行为
猜测,weaselServer.exe /q 没有正常将算法服务进行退出,再次启动的时候有两个算法服务,上一个被执行 /q 的算法服务其实已经不能正常进行工作了,所以导致所有的窗口都陷入了卡死状态,结束掉有问题的算法服务窗口可以立马恢复正常。
用户文件 请于此附上 weasel 用户文件夹下的内容,方便开发者调试问题
截图 如果问题需要,可附上 GIF 图片
其他补充说明 如果有其他补充说明,可以写在这里
原因未知,可以参考https://github.com/rime/weasel/blob/master/get-rime.ps1 改下先可用
个人猜测:是不是与小狼毫的守护进程有关?原来的算法服务没有正常退出,新的算法服务启动,然后两者之间存在死锁或者同步问题。
新的现象: 场景1:目前在手动右键退出小狼毫算法服务,触发键盘输入3次会自动拉起小狼毫算法服务,这个时候当前的窗口就会卡死,同时能在任务管理器中看到有两个或三个小狼毫算法服务,依次结束掉启动较早的小狼毫算法服务,当小狼毫算法服务只存在一个的时候,整个窗口恢复正常。
场景2;执行用户词典同步的时候,也能在任务管理器中看到两个小狼毫算法服务,此时对应的输入窗口冻结。结束掉有资源使用的(在任务管理器中靠下的那个)工作状态恢复正常,弹出正在部署小狼毫的通知。
以上卡住的时候,都可以通过使用任务管理器完成状态恢复,恢复的时候才会出现正在重新部署的通知。
@fxliang