Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ztjal opened this issue Jun 20, 2022 · 48 comments
Open

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

ztjal opened this issue Jun 20, 2022 · 48 comments

Comments

@ztjal
Copy link

ztjal commented Jun 20, 2022

100%重现过程:

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

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

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

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

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

Madedit_20220620T220505_1644.zip

@LiMinggang
Copy link
Owner

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

@LiMinggang
Copy link
Owner

LiMinggang commented Jun 29, 2022

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

@ztjal
Copy link
Author

ztjal commented Jun 29, 2022

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

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

https://ztj.lanzoul.com/iElA306u68bc

@LiMinggang
Copy link
Owner

这是我的Win7
image

@LiMinggang
Copy link
Owner

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

@firstrose
Copy link

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

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

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

我用的是紫光/华宇。

@ztjal
Copy link
Author

ztjal commented Jun 30, 2022

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

@LiMinggang
Copy link
Owner

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

@LiMinggang
Copy link
Owner

LiMinggang commented Jul 23, 2022

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

@ztjal
Copy link
Author

ztjal commented Jul 23, 2022

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

https://ztj.lanzoul.com/iJVUa08aaw9a

@LiMinggang
Copy link
Owner

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

@ztjal
Copy link
Author

ztjal commented Jul 23, 2022

dmp文件都在打包里边。

@LiMinggang
Copy link
Owner

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

@firstrose
Copy link

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

@ztjal
Copy link
Author

ztjal commented Jul 29, 2022

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

@firstrose
Copy link

firstrose commented Jul 29, 2022

@ztjal

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

@LiMinggang
Copy link
Owner

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

@ztjal
Copy link
Author

ztjal commented Aug 2, 2022

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

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

@LiMinggang
Copy link
Owner

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

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

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

@firstrose
Copy link

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

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

@LiMinggang
Copy link
Owner

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

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

@firstrose
Copy link

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

@LiMinggang
Copy link
Owner

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

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

@firstrose
Copy link

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

@LiMinggang
Copy link
Owner

LiMinggang commented Aug 8, 2022

这个很难,你要是有兴趣可以打开楼主贴的那个附件,里面有崩溃时候的调用栈,里面没有任何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

@firstrose
Copy link

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

@ztjal @LiMinggang

@ztjal
Copy link
Author

ztjal commented Aug 11, 2022

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

@ztjal @LiMinggang

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

@LiMinggang
Copy link
Owner

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

@LiMinggang
Copy link
Owner

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

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

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

@firstrose
Copy link

firstrose commented Aug 12, 2022

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

@LiMinggang
Copy link
Owner

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

嗯,这个得看输入法的兄弟是不是给力了。如果他们有SAP那种内部调试工具的话

@ztjal
Copy link
Author

ztjal commented Aug 12, 2022

输入法那边我都去联系了,暂没回复。
PartnerTTDRecorder这东西看来真的是微软的内部工具啊,网上找不到的。

@LiMinggang
Copy link
Owner

LiMinggang commented Aug 15, 2022

输入法那边我都去联系了,暂没回复。 PartnerTTDRecorder这东西看来真的是微软的内部工具啊,网上找不到的。

似乎是在windbg里面,如果你想尝试
https://blogs.windows.com/windowsdeveloper/2017/09/27/time-travel-debugging-now-available-windbg-preview/
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/time-travel-debugging-record

@ztjal
Copy link
Author

ztjal commented Aug 15, 2022

WinDbg Preview我有装,但这里指的是Time Travel Debugging,和cnblogs那篇里的PartnerTTDRecorder应该不是一个东西,因为看图里边人家是给了特定的下载连接,还有压缩包的名字。

@LiMinggang
Copy link
Owner

time-travel-debugging-record 这个就是TTDRecorder啊,partner是给合作方的意思。我的理解是微软打算把这个慢慢给公开了,以前可能是只开放给少数合作方使用

@ztjal
Copy link
Author

ztjal commented Aug 15, 2022

我试了下,感觉根本就不是同一个东西,WinDbg用Time Travel Debugging运行了一下MadEdit.exe,就10来秒,生成了两个加起来1.64G的文件……然后呢,就看看时间线上的回放一样,某个点上的调用。
无标题

但人家cnblogs那篇里的PartnerTTDRecorder里的调用是:
tttracer.exe -dumpfull -attach PID -out c:\temp
这样的,出来的东西肯定不一样。

@firstrose
Copy link

搞不好就是同一个东西,最多那个PartnerTTDRecorder是针对sap软件做了特殊处理的。试试吧,反正你现在就有windbg。等你跟那两家扯完皮,拿到微软给的工具(如果拿得到的话),不知道要什么时候了。 @ztjal

@LiMinggang
Copy link
Owner

这东西理论上应该是你抓到这个回放后,给输入法的兄弟去找问题

@ztjal
Copy link
Author

ztjal commented Aug 15, 2022

人家是把结果给巨硬的攻城狮看,我看不来。😂

@LiMinggang
Copy link
Owner

我猜调用栈跟MadEdit打印出来的一样,就是你前面附上的那个

@ztjal
Copy link
Author

ztjal commented Aug 23, 2022

2022 08.22 冰凌输入法11.2.1.22080X(处暑版)
经测试,同样的操作,MadEdit不崩了。😃

@LiMinggang
Copy link
Owner

我现在还能遇到奇怪问题,有时候就不能输入中文了。切换一下窗口,甚至是MadEdit自己的窗口就好。感觉是丢失了一个刷新的事件。非常神奇。

@ztjal
Copy link
Author

ztjal commented Aug 25, 2022

我现在还能遇到奇怪问题,有时候就不能输入中文了。切换一下窗口,甚至是MadEdit自己的窗口就好。感觉是丢失了一个刷新的事件。非常神奇。

这样试试,启动MADEDIT时会自己新建一个编辑文本框,在创建这个编辑文本框之前先给MADEDIT窗口来个SETFOCUS之类的定个焦点,创建这个编辑文本框之后再给个这编辑文本框来个SETFOCUS,仅限启动时这样手动定一下焦点。

@LiMinggang
Copy link
Owner

LiMinggang commented Aug 25, 2022

个编辑文本框,在创建这个编辑文本框之前先给MADEDIT窗口来个

目前还没有找到复现的规律,不然可以向你说的,打个类似的补丁

@baoang
Copy link

baoang commented Sep 5, 2022

2022 08.22 冰凌输入法11.2.1.22080X(处暑版) 经测试,同样的操作,MadEdit不崩了。😃

官网查了下最新版,Win10系统上Chrome浏览器点击下载,竟然报毒。

@ztjal
Copy link
Author

ztjal commented Sep 5, 2022

2022 08.22 冰凌输入法11.2.1.22080X(处暑版) 经测试,同样的操作,MadEdit不崩了。😃

官网查了下最新版,Win10系统上Chrome浏览器点击下载,竟然报毒。

别信浏览器的,设置里关掉。有需要的找“在线沙箱平台”。

@firstrose
Copy link

个编辑文本框,在创建这个编辑文本框之前先给MADEDIT窗口来个

目前还没有找到复现的规律,不然可以向你说的,打个类似的补丁

跟ME没关系。我也碰到的。但是发生的时候是在vs上面,而且根本就没开ME

@LiMinggang
Copy link
Owner

个编辑文本框,在创建这个编辑文本框之前先给MADEDIT窗口来个

目前还没有找到复现的规律,不然可以向你说的,打个类似的补丁

跟ME没关系。我也碰到的。但是发生的时候是在vs上面,而且根本就没开ME

是的,因为很少有应用程序需要跟输入法直接打交道,都是通过Windows/Linux这些OS去跟IME交互

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants