hchunhui / librime-lua

Extending RIME with Lua scripts
BSD 3-Clause "New" or "Revised" License
293 stars 43 forks source link

内存安全检查 #349

Open fxliang opened 1 month ago

fxliang commented 1 month ago

近期小狼毫加上了Windows Error Reporting,发现不少用户在rime.dll内有异常内存操作引发WeaselServer.exe崩溃,据有部分用户反馈,禁用部分lua脚本 后,或改用其他方案集(不一样的lua脚本使用)后明显减少崩溃的问题。

麻烦检查一下是否librime-lua中有部分内存操作未完整处理异常,谢谢 ~

@shewer @hchunhui

shewer commented 1 month ago

範圍太廣了 。 建議 安裝程式 包含 rime_api_console 程式,供user 測試

fxliang commented 1 month ago

这个不是必现的,所以,不好排查。尤其是底层是指针操作的时候,可能会引发问题。

fxliang commented 1 month ago

iDvel/rime-ice#876

比如这种?

现在观察,都是某种特殊时机下,发生了崩溃。换个环境,就复现不了了。

我每次提交前,都用 rime_api_console 跑一遍,从来没崩过

你不如发个新正式版,16.2,rime.im 官网也更新下,让更多人来试错,收集更多信息看看有什么复现方法 @fxliang

我早前想ci带上rime.pdb 但是vs2019构建Rime有问题。没有rime.pdb只能看到是rime.dll 内部崩了,定位不了。另外还要想办法能将librime-lua的pdb信息带上会更好

会有升一个版0.16.1,我这里还有一个之前你说的log的问题准备合上(我的自用分支master已合),应该是这几天的事

hchunhui commented 1 month ago

如可能尽量缩小 lua 代码并给一些 stack trace 会有助于排查。

另外如果 lua 脚本误用了一些进阶的对象接口,也是有可能导致引擎崩溃的。这是因为它们是直接封装自 C++ 接口,而这些接口有不少对对象生存期有严格要求。之前见到的一个例子是 #280 。

fxliang commented 1 month ago

上文有提到的iDvel/rime-ice#876 是一个例子,但是据说也不是百百复现