madedit-mod icon indicating copy to clipboard operation
madedit-mod copied to clipboard

当打开输入法就会导致MadEdit.exe崩了

Open ztjal opened this issue 2 years ago • 48 comments

100%重现过程:

1,安装冰凌输入法,并使其处于关闭状态,即保持当前为 英语 美式键盘 的状态。

2,直接运行MadEdit.exe(从0.4版到0.5版都行),保持光标在编辑器里边,或者应该是保持窗口的“焦点”不变。

3,通过快捷键win+空格切换输入法至冰凌输入法,MadEdit马上崩,并生成dmp文件。

但如果事先打开输入法,再运行MadEdit.exe,就没事,怎么切换都没事。

那么这个是输入法的问题吗?不是,我之前在用精灵五笔,同样的操作,[有机率]精灵五笔变成“只能输入英文”的状态,MadEdit没崩,点个桌面再点回去就能输入中文了,因不是次次都出问题,就懒得管了,不过现在找到100%重现的方法,怎么也来说一下。

Madedit_20220620T220505_1644.zip

ztjal avatar Jun 20 '22 14:06 ztjal

应该是输入法跟wxWidgets之间的问题,有空了我试试看

LiMinggang avatar Jun 29 '22 00:06 LiMinggang

刚刚试了一下,我这里没遇到,我用的ctrl+shift切换的。但是我的系统比较老win7的,输入法是刚刚从腾讯下载的 image

LiMinggang avatar Jun 29 '22 00:06 LiMinggang

我这里用的是win10 21h2、10.0.19044.1766。

和输入法的作者联系时录了个900K的桌面操作视频,MP4。

https://ztj.lanzoul.com/iElA306u68bc

ztjal avatar Jun 29 '22 09:06 ztjal

这是我的Win7 image

LiMinggang avatar Jun 29 '22 14:06 LiMinggang

看起来有可能是你系统的问题,我昨天在一台Win10上试了,还是没有复现这个问题。如果可能,你换一台机器试试

LiMinggang avatar Jun 30 '22 00:06 LiMinggang

插个嘴,这个应该是win10的问题。win10的输入法支持有问题,经常有各种各样奇怪的问题。

我在win10下面也碰到这种问题,不光是madedit,还有别的编辑器,甚至是qq. 在输入的地方切换输入法,就会出问题。之前是崩溃,现在经过好几次win10更新以后,崩溃是不大有了,但是有几乎一半的可能,窗口会卡住一段时间。

win7从来没有出现这种事情。

我用的是紫光/华宇。

firstrose avatar Jun 30 '22 06:06 firstrose

我用了台WIN10平板,X86的,系统是21h1,19043.1706。 左手持手机拍的视频,42M。 https://ztj.lanzoul.com/iI08X075yiuf

ztjal avatar Jun 30 '22 10:06 ztjal

这个问题就像 @firstrose 说的,基本上就是Windows,wxwidgets和输入法之间的问题,等wxwidgets 3.2发布了,可以重新编译一下试试是否有改善

LiMinggang avatar Jul 03 '22 13:07 LiMinggang

上传了给予wxwidgets 3.2的_rel和_dbg版本到 https://sourceforge.net/projects/madedit-mod/files/0.5.0a3/ 你先试试rel版本如果解决问题了就好,没解决再试试dbg版本,看看能不能获得更多的信息

LiMinggang avatar Jul 23 '22 08:07 LiMinggang

两个都用了,还是不行。 我把自己用的打包上传,因为是一直升级用过来的。

https://ztj.lanzoul.com/iJVUa08aaw9a

ztjal avatar Jul 23 '22 10:07 ztjal

debug那个出现的dmp文件你上传一下

LiMinggang avatar Jul 23 '22 12:07 LiMinggang

dmp文件都在打包里边。

ztjal avatar Jul 23 '22 12:07 ztjal

没看到更多的有用信息,感觉还是你系统的问题,这次的版本是在最新中文版Win10上用VS2022编译的

LiMinggang avatar Jul 23 '22 12:07 LiMinggang

@ztjal 建议换真正兼容win10的输入法。目前已知冰凌和紫光都有问题。如果实在很喜欢现在的输入法,建议换成win7,或者联系输入法作者。

firstrose avatar Jul 29 '22 09:07 firstrose

@firstrose 目前在使用“小狼豪”,WIN7是不可能使用的。

ztjal avatar Jul 29 '22 09:07 ztjal

@ztjal

这个我之前也用过。崩溃或者卡住的问题是没有,但是操作远远不如紫光方便。

firstrose avatar Jul 29 '22 10:07 firstrose

新安装的中文WIN10,复现不了这个问题。 我觉得不完全是输入法的问题,我确实发现wxWidgets对中文输入法的切换的支持有点问题,有时候会遇到能切换但是不能激活中文输入,但是不能稳定复现问题,想反馈给开发者也不知道怎么跟对方去说明。

LiMinggang avatar Aug 02 '22 14:08 LiMinggang

新安装的中文WIN10,复现不了这个问题。 我觉得不完全是输入法的问题,我确实发现wxWidgets对中文输入法的切换的支持有点问题,有时候会遇到能切换但是不能激活中文输入,但是不能稳定复现问题,想反馈给开发者也不知道怎么跟对方去说明。

是的,精灵五笔和小狼豪,一打开maedit再切换输入法时有很小的机率就是一个只能输入英文的“A”状态。 但不能为什么我用冰凌输入法就肯定100%挂掉,我都用了两个系统录像了,唯一想到的共通点是,装了火绒。

ztjal avatar Aug 02 '22 14:08 ztjal

新安装的中文WIN10,复现不了这个问题。 我觉得不完全是输入法的问题,我确实发现wxWidgets对中文输入法的切换的支持有点问题,有时候会遇到能切换但是不能激活中文输入,但是不能稳定复现问题,想反馈给开发者也不知道怎么跟对方去说明。

是的,精灵五笔和小狼豪,一打开maedit再切换输入法时有很小的机率就是一个只能输入英文的“A”状态。 但不能为什么我用冰凌输入法就肯定100%挂掉,我都用了两个系统录像了,唯一想到的共通点是,装了火绒。

如果火绒只是防火墙的话,感觉不应该监控输入法。

LiMinggang avatar Aug 02 '22 14:08 LiMinggang

我这里可以有比较大的几率复现卡住的情况,但是很少有崩溃了。可能wx确实对输入法支持有问题,但是我也观察到firefox上面也出现问题。ff也是用wx吗? @LiMinggang

我确实也用火绒,这个值得试验一下。@ztjal

firstrose avatar Aug 03 '22 01:08 firstrose

我这里可以有比较大的几率复现卡住的情况,但是很少有崩溃了。可能wx确实对输入法支持有问题,但是我也观察到firefox上面也出现问题。ff也是用wx吗? @LiMinggang

我确实也用火绒,这个值得试验一下。@ztjal FF应该用的不是wx,因为在wx官网上列出的应用里面没有FF。如果真用了,那么肯定是第一大用户了。为啥FF也有类似的问题?我猜都是因为主要开发者不是东亚用户,不关心也遇不到这些问题。

LiMinggang avatar Aug 07 '22 12:08 LiMinggang

我只是在反问。ff当然不是用wx了。所以结论是无解。

firstrose avatar Aug 08 '22 01:08 firstrose

我只是在反问。ff当然不是用wx了。所以结论是无解。

其实也算不上无解,主要是我本地复现不了。要是有开发人员能复现,至少可以挂上调试器看一眼直接原因是啥。目前看到的调用栈一点有用信息都没有。

LiMinggang avatar Aug 08 '22 06:08 LiMinggang

我是程序员,但是不会c/c++。我这里崩溃是没有,但是会有程序界面卡住一会的情况,所以抓不到崩溃的dmp 鉴于上面的讨论内容,我觉得问题应该不是出在madedit本身的代码,而是me调用的某个api。 如果你能教我如何在程序卡住的时候抓一个dmp,我可以试试。ps我有装windbg

firstrose avatar Aug 08 '22 08:08 firstrose

这个很难,你要是有兴趣可以打开楼主贴的那个附件,里面有崩溃时候的调用栈,里面没有任何wx或者me的函数,基本上都是windows自己的,有少量的编程接口,可以看出这是一个windows的通知消息,即,IME的变化消息,TF_Notify。最后到了这里 [01]:[00007FFF52CDAE23] (0) TextInputHostSiteCreate() [02]:[00007FFF52CDAD1D] (0) TextInputHostSiteCreate() [03]:[00007FFF52D323D2] (0) TextInputServerCreate() [04]:[00007FFF52CDB41D] (0) TextInputHostSiteCreate() 崩溃。即使抓到了,研究透了,估计也是微软的bug,或者是输入法的问题。 这些函数都来自于msctf_dll https://www.win7dll.info/msctf_dll.html

LiMinggang avatar Aug 08 '22 14:08 LiMinggang

https://www.cnblogs.com/saper/p/16574745.html

@ztjal @LiMinggang

firstrose avatar Aug 11 '22 09:08 firstrose

https://www.cnblogs.com/saper/p/16574745.html

@ztjal @LiMinggang

解决问题的代码那个截图太小了😒

ztjal avatar Aug 11 '22 09:08 ztjal

看得不是特别清晰,但看着代码还是有问题,呵呵 居然不是先检查hr,而是先release。

LiMinggang avatar Aug 11 '22 14:08 LiMinggang

https://www.cnblogs.com/saper/p/16574745.html @ztjal @LiMinggang

解决问题的代码那个截图太小了😒

别抱太大希望,毕竟你用的不是搜狗拼音,你用的这个输入法的代码应该跟搜狗不一样。

LiMinggang avatar Aug 12 '22 01:08 LiMinggang

@LiMinggang 我只是觉得这个帖子很有启发才发过来。具体问题点确实不大可能一样,但是结合上面的dmp,有理由怀疑是和com接口互操作的时候的问题。 如果@ztjal 能够稳定复现,可以考虑找微软那边要那个工具。

firstrose avatar Aug 12 '22 01:08 firstrose