在我的应用程序的WebView中努力找到崩溃的原因后,我发现一个非常基本的网页甚至导致两个特定HTC模型上的原生Android浏览器崩溃。
有问题的型号是HTC Desire HD(Android 2.3.5)和HTC Desire C(Android 4.0.3)。其他设备在加载页面时没有问题,包括其他一些HTC模型。
导致崩溃的HTML:
<html>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Alkmaar, Almere, Amersfoort, Amsterdam, Arnhem, Bergen op Zoom, Beverwijk, Breda, Delft, Den Bosch, Den Haag, Deurne, Deventer, Diemen, Eindhoven, Enschede, Goes, Groningen, Haarlem, Harlingen, Heemstede Hengelo, Hoorn, IJmuiden, Leeuwarden, Leiden, Nieuwegein, Nijmegen, Noordwijk, Oldenzaal, Oss, Oud-Beijerland, Purmerend, Roosendaal, Rotterdam, Scheveningen, Schiedam, Schiphol, Tiel, Utrecht, Valkenswaard, Velsen, Venray, Vlaardingen, Waalwijk, Zandvoort, Zeist en Zevenaar.</p>
</body>
</html>
方便访问:http://demos.pixplicity.com/so13121158.html
奇怪的是:如果我删除城市(“Alkmaar,[...] Zevenaar”),或将它们移到段落的开头,浏览器就不会崩溃。
我在浏览器崩溃时收集了Logcat的快照,但唯一有意义的行是:
A /(7437):检测到堆栈损坏:已中止
我完全不知道为什么会这样。欢迎任何建议!
答案 0 :(得分:3)
我和HTC one V一样。
根据this回答,“消息表明本机堆栈已损坏。当使用gcc标志”-fstack-protector“时,会插入检测堆栈缓冲区溢出的代码。”
所以我认为这是平台本身的一个错误。 (好吧,就我而言,因为我的应用程序中没有JNI代码)