一个牛逼的Bug!一张“壁纸”让三星手机秒变砖!

发表于:2020-6-09 11:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:依然范特稀西    来源:简书

  想象一下,你正在网上搜索一些精美的壁纸,并且找到了一张风景如画的风景图。它拥有一切:茂密的森林、原始的湖泊、还有一个小岛,背后是漂亮的雪山,厚厚的云层覆盖着阳光,阳光从云缝中渗入。你被深深的吸引,然后立即下载图片,将其设置为你的手机壁纸,然后开始使用了,然后你的Android手机就陷入了启动->崩溃->启动->崩溃...的循环中。听起来不太可能,但这确实是一个真实的事,并且罪魁祸首就是一张图片。
  三星手机崩溃事件梳理
 
  5月31日,名叫Ice Universe的用户在Twitter上分享了上面这张壁纸,他声称该壁纸“将导致你的手机崩溃”,尽管有警告大家不要试,这不是在开玩笑,但仍然有很多用户下载了该壁纸,以验证他说的是否是真的-是否会让手机崩溃
  Twitter讨论地址如下:https://twitter.com/UniverseIce/status/1266943909499826176
  设置壁纸导致三星系统崩溃如下:
  
  然后评论区一片哀嚎:
  Sebastian:非常不幸,这是一个Android的bug,Google的 Pixels系列手机也中招了!
  Dawood: 这是我见过的最扯淡的bug,我甚至开启了安全模式,但是仍然没能幸免,必须恢复出厂模式,来做一些事情。
  
  Jason Ashley:呵呵,我在模拟器中对此进行了测试。 导致SystemUI崩溃。 试着检查图像header是否有任何奇怪的问题,由于我有限的JPEG知识,没有发现任何问题。 它也确实正常结束了。
  vl1:刚刚试了,现在不得不恢复出厂设置。
  Passerby: 诺基亚手机也有同样的问题。 我的诺基亚7 plus已经崩溃,并反复重启。 有人知道如何解决吗?我需要帮助,谢谢
  Ahmed Alkaab:该死,它确实损坏了我的三星Note 9
  从该Twitter的评论区反馈来看,三星、Google Pixels、诺基亚等部分手机存在该问题,国内厂商如华为、小米、OnePlus不受影响。
  问题追踪
  到底是什么问题导致了手机崩溃呢?图片被施了魔法?显然不是。根据Davide Bianco(基于AOSP自定义ROM的开发负责人)的说法,这种"特殊"的壁纸会导致某些Android设备崩溃,是因为它使用了RGB颜色空间,而不是Android原生支持的sRGB颜色空间。
  Bianco 已经提交了一个补丁,据报道该补丁已经解决了该问题,补丁的描述指出:当用户尝试将非sRGB的图像设置为壁纸时,就会引发此问题。发生的情况是变量y的值高于histogram的范围,从而使SysUI崩溃。一种可能的解决方法是将y值始终限制为小于256。
 
  著名的LineageOS定制ROM团队与Xian Bianco一起,由XDA高级会员BadDaemon和XDA公认的开发人员luca020400共同开发了独特的解决方案。
  一份来自9to5Google的报告对此事进一步表明,问题仅限于运行Android 10以上的设备,它不影响运行在Android 11开发者预览版上的设备。这是由于:在Android 11上,如果不支持,系统会转换颜色空间,但在Android 10上则不会。
  Google最新回应
  正如XDA高级会员BadDaemon和XDA公认的开发人员luca020400所解释的那样, 是扩展导致了这个bug。那张“被诅咒”的图片在一个特殊的颜色空间中编码,该颜色空间被称为"Google / Skia / E3CADAB7BD3DE5E3436874D2A9DEE126"这是颜色空间的全称,Skia指的是Google制作的2D图形库。)。相反,大多数其他壁纸图像均在称为“ sRGB”的色彩空间中编码。
  在Android 10及更早版本中,除非开发人员另行指定,否则所有图像都将转换为sRGB。将图片转换为sRGB时,可能会发生一个罕见的错误,其中计算每个像素的“luminance(亮度)”值的代码设法超过了最大限制255。
  使用以下公式计算亮度:
 Luminance = .2126f * r + .7152f * g + .0722f * b
  这里,“ r”,“ g”和“ b”是红色,绿色和蓝色,以0到255的8位值表示。
  该计算的问题在于,它总是将最终值四舍五入。在将图像从sRGB转换为灰度的过程中,“被诅咒”墙纸中的像素之一具有以下RGB值:255、255、243,将其插入上述公式时,如下所示:
   Luminance = .2126 * (255) + .7152 * (255) + .0722 * (243)
  Luminance = 256 
  Luminance 超过了255,此值导致SystemUI崩溃,并且基本上导致整个OS崩溃,因为它超过了最大值。这个错误非常具体,因为它涉及到舍入错误和颜色空间转换错误。
  此错误不会影响Android 11,因为默认情况下,图片的“Skia”颜色空间不会转换为sRGB。因此,在Android 11上不会发生此颜色空间转换错误和舍入错误。
  但是,来自Google Android Toolkit团队的Romain Guy认为,此问题的根本原因仅在于计算亮度的方式,而与任何颜色空间转换问题无关。Google正在进行自己的内部测试,因此我们可能很快就会看到他们最终的结果。
  如何恢复
  请注意,尽管该问题并不影响所有Android设备,但我们强烈建议您不要尝试在手机上使用壁纸。如果已经尝试了,试着用下面的方式:
  1、进入安全模式并更改墙纸来恢复设备。三星手机操作是:在开机界面出现三星Logo画面时,按住音量下键不松手,直到出现“安全模式”字样,进入后快速抓拍一张照片设为壁纸。(不过有Twiiter用户表示此方法也无法恢复。)
  2、恢复出厂设置(数据丢失)
  暂时只能通过这两种临时方案解决,Google已经在修复这个问题,可能会伴随着后面的系统更新来发布。因此最好不要使用确切的图片作为墙纸。如果您真的喜欢墙纸,只需对图像进行截图,然后将其用作墙纸即可。
  最后再提醒一下同学们,千万不要好奇尝试!

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号