Android 10 Chrome聚焦搜索框崩溃,如何定位bug归属并提交?
问题答复
1. 前端代码是否可能引发该问题?
有可能。因为该问题仅在特定页面的搜索框触发,说明这个输入框的属性、样式或交互逻辑和其他正常输入框存在差异,大概率是这类差异触发了底层链路的异常。常见的可能触发问题的点包括:非常规的autocomplete属性值、不符合规范的无障碍aria属性、用JS在焦点事件回调中频繁修改DOM或焦点状态、用CSS将输入框设置为不可见/极小尺寸等。
2. 是否是Android版Chrome的bug?
Chrome存在鲁棒性不足的问题。从报错栈来看,空指针异常出现在系统层方法,但本质是Chrome没有对传递给系统层的AccessibilityNodeInfo对象做非空校验,也没有做好异常兜底,才会让异常参数传入系统层触发崩溃。从设计逻辑上看,无论前端代码如何编写,浏览器都不应该直接崩溃,因此Chrome需要承担对应的兼容修复责任。
3. 是否是Android无障碍服务的bug?
不属于原生Android无障碍服务的bug。系统层方法只是调用了上游传递来的空对象,空对象本身是上层应用(Chrome/自动填充应用)生成并传递的,原生代码仅缺少空判断的兜底逻辑,不是问题的根因。
4. 是否是Android端KeePass应用的bug?
KeePass的自动填充服务是触发崩溃的必要条件,但不是根因。它只是响应了Chrome发送的自动填充请求,大概率是KeePass没有对Chrome传递的异常节点信息做兼容处理,才会触发后续的系统层崩溃。关闭KeePass自动填充相当于切断了链路的最后一环,因此不会触发崩溃,但问题并非完全由KeePass导致。
排查步骤
你可以按以下顺序逐步定位触发问题的具体原因:
- 先对比异常搜索框和其他正常输入框的HTML属性差异,重点排查
autocomplete、type、name、所有aria-前缀的无障碍属性,以及readonly、disabled等动态属性,逐个删除差异属性测试,确认删除哪个属性后问题不再复现。 - 再排查输入框对应的CSS样式,重点检查是否设置了宽高为0、透明度为0、移出可视区域等隐藏属性,以及是否修改了
-webkit-autofill相关的伪类样式,逐个注释测试。 - 排查绑定到输入框的JS逻辑,重点检查
focus、blur事件回调中是否有异步修改DOM、修改输入框属性、强制切换焦点的操作,逐个注释相关逻辑测试。 - 可通过Chrome远程调试功能连接安卓设备,抓取崩溃前的浏览器控制台日志,查看是否有和无障碍、自动填充相关的警告信息辅助定位。
bug工单提交建议
你可以同时向两个渠道提交工单:
- 向Chrome安卓版本的官方问题追踪渠道提交,附上报错栈、复现场景、测试结论,要求Chrome添加相关场景的异常兜底逻辑。
- 向你使用的KeePass安卓版本的维护方提交工单,说明触发场景和测试结果,要求其对自动填充请求的异常参数做兼容处理。
内容的提问来源于stack exchange,提问作者Xendiadyon
相关产品推荐
相关产品推荐

