weasel icon indicating copy to clipboard operation
weasel copied to clipboard

weaselServer.exe /q 退出算法服务,再运行 weaselServer.exe 会导致桌面所有窗口卡死

Open expoli opened this issue 3 months ago • 2 comments

上报前请检查

  • [ ] 我遇到的问题没有其他人在 issue 里提到过
  • [x] 我的小狼毫版本于 rime/weasel 下载
  • [x] 我在使用小狼毫的最新发布版本后的 CI 构建

操作系统信息

描述遇到的问题 简短地描述你所遇到的问题

复现步骤 重现问题的步骤,如:

  1. 使用更新脚本 (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. 遇到了 '桌面上所有的窗口都陷入卡死,无法进行有效响应' 问题,同时查看任务管理器可以看到小狼毫算法服务的内存占用大约1.3gb,同时存在多个小狼毫算法服务,在任务管理器中右键结束最早占用资源最多的小狼毫算法服务,会立马让窗口服务恢复正常,同时弹出正在进行部署服务。

预期行为 猜测,weaselServer.exe /q 没有正常将算法服务进行退出,再次启动的时候有两个算法服务,上一个被执行 /q 的算法服务其实已经不能正常进行工作了,所以导致所有的窗口都陷入了卡死状态,结束掉有问题的算法服务窗口可以立马恢复正常。

用户文件 请于此附上 weasel 用户文件夹下的内容,方便开发者调试问题

截图 如果问题需要,可附上 GIF 图片

其他补充说明 如果有其他补充说明,可以写在这里

expoli avatar Sep 15 '25 03:09 expoli

原因未知,可以参考https://github.com/rime/weasel/blob/master/get-rime.ps1 改下先可用

fxliang avatar Sep 15 '25 04:09 fxliang

个人猜测:是不是与小狼毫的守护进程有关?原来的算法服务没有正常退出,新的算法服务启动,然后两者之间存在死锁或者同步问题。

新的现象: 场景1:目前在手动右键退出小狼毫算法服务,触发键盘输入3次会自动拉起小狼毫算法服务,这个时候当前的窗口就会卡死,同时能在任务管理器中看到有两个或三个小狼毫算法服务,依次结束掉启动较早的小狼毫算法服务,当小狼毫算法服务只存在一个的时候,整个窗口恢复正常。

场景2;执行用户词典同步的时候,也能在任务管理器中看到两个小狼毫算法服务,此时对应的输入窗口冻结。结束掉有资源使用的(在任务管理器中靠下的那个)工作状态恢复正常,弹出正在部署小狼毫的通知。

以上卡住的时候,都可以通过使用任务管理器完成状态恢复,恢复的时候才会出现正在重新部署的通知。

@fxliang

expoli avatar Sep 29 '25 06:09 expoli