天天看点

iOS15 WebKit::WebPageProxy::handlePreventableTouchEvent crash

苹果爸爸真不省心,每次发版都会带来一些“惊喜”,这不,这次iOS15的体验版本又送大礼来了。一个和点击事件相关的崩溃。相关堆栈如下:

iOS15 WebKit::WebPageProxy::handlePreventableTouchEvent crash

而且量级不小,实在是吓人一跳。随后,我们查看了web源码,发现apple在5月30号修复了这个问题(https://bugs.webkit.org/show_bug.cgi?id=226426),苹果分析这个崩溃和messageHandler的使用+touch事件有关,当webview产生了touch事件,并将touch事件传递给Web Process处理时,webview退出,此时WebPageProxy的pageClient已经销毁变成了空指针,所以,当Web Process通知UI Process 处理结果时 UI Process(即我们的App)会崩溃。具体分析见:https://github.com/WebKit/WebKit/commit/da38a88fc8b26fdb54ca259a62f6cb8b3305ba14

iOS15 WebKit::WebPageProxy::handlePreventableTouchEvent crash

不过这里有个疑虑,苹果分析此bug时认为它和messageHandler有关,但是我注释掉所有的messageHandler的代码还是会崩溃;另外一些没有使用messageHandler的app也发现了此类崩溃。所以,但愿苹果爸爸这个修复可以管用。

继续阅读