Bug #117168

【AF】【EVT3】【ST】【压测】设备在进行异常断电压测时,出现在开机动画卡死,且无法恢复的情况,只能重新烧机恢复

Added by 移动测试一组_CDTS 刘强 over 2 years ago. Updated over 1 year ago.

Status:CLOSEDStart date:2023-03-27
Priority:HighDue date:
Assignee:移动测试一组_CDTS 刘强% Done:

100%

Category:CD-FW
Target version:-
Need_Info:TEST Found Version:0085
Resolution:FIXED Degrated:No
Severity:Critical Verified Version:
Reproducibility:Occasionally Fixed Version:2023-04-25
Test Type:ST Root cause:异常断电导致文件存储异常,原生逻辑优化

Description

【前提条件】
None

【测试步骤】
1. 烧写0085版本
2. 在开机过程中进行异常断电-上电压测 10次
3. 等10次后,进入到操作系统,进行OTA升级
4. 升级成功后,设备重启,在重启过程中进行异常断电压测

【预期结果】
4 每次均能正常开机

【实际结果】
4 执行229轮后,设备卡死在开机动画

to(1).txt Magnifier (2.61 MB) 移动测试一组_CDTS 刘强, 2023-03-27 14:17

启动问题专项说明(1).pptx (1.84 MB) CD FW 曹覃刚, 2023-03-27 16:21

History

#1 Updated by CD FW 曹覃刚 over 2 years ago

  • File 启动问题专项说明(1).pptx added
  • Status changed from New to NEED_INFO
  • Assignee changed from CD FW 曹覃刚 to 移动测试一组_CDTS 刘强
  • Need_Info changed from -- to TEST

■ 我的分析
01-01 08:01:03.979 3100 3100 E System : **********************************
01-01 08:01:03.979 3100 3100 E System : ***** Failure starting system services
01-01 08:01:03.979 3100 3100 E System : java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 08:01:03.979 3100 3100 E System : at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:7608)
01-01 08:01:03.979 3100 3100 E System : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:7116)
01-01 08:01:03.979 3100 3100 E System : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:1169)
01-01 08:01:03.979 3100 3100 E System : at com.android.server.SystemServer.run(SystemServer.java:883)
01-01 08:01:03.979 3100 3100 E System : at com.android.server.SystemServer.main(SystemServer.java:616)
01-01 08:01:03.979 3100 3100 E System : at java.lang.reflect.Method.invoke(Native Method)
01-01 08:01:03.979 3100 3100 E System : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
01-01 08:01:03.979 3100 3100 E System : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
01-01 08:01:03.979 3100 3100 E Zygote : System zygote died with fatal exception
01-01 08:01:03.979 3100 3100 E Zygote : java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:7608)
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:7116)
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:1169)
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.server.SystemServer.run(SystemServer.java:883)
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.server.SystemServer.main(SystemServer.java:616)
01-01 08:01:03.979 3100 3100 E Zygote : at java.lang.reflect.Method.invoke(Native Method)
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
01-01 08:01:03.979 3100 3100 E Zygote : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
01-01 08:01:03.979 3100 3100 D AndroidRuntime: Shutting down VM
01-01 08:01:03.979 3100 3100 E AndroidRuntime: *
* FATAL EXCEPTION IN SYSTEM PROCESS: main
01-01 08:01:03.979 3100 3100 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:7608)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:7116)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:1169)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:883)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:616)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
01-01 08:01:03.979 3100 3100 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
01-01 08:01:03.980 3100 3100 E AndroidRuntime: Error reporting crash
01-01 08:01:03.980 3100 3100 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$ParcelableCrashInfo)' on a null object reference
01-01 08:01:03.980 3100 3100 E AndroidRuntime: at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:156)
01-01 08:01:03.980 3100 3100 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
01-01 08:01:03.980 3100 3100 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
01-01 08:01:03.980 3100 3100 E AndroidRuntime: at java.lang.Thread.dispatchUncaughtException(Thread.java:2200)

■ 下一步解析计划
该问题与之前发生的启动问题异常日志是一样的

之前的修复方案如下(详情见启动问题专项说明ppt):
问题发生原因的思考
->在配置文件生成的过程中断电,造成配置文件乱码不全等问题,导致最终板子无法正常启动
1.这种问题实际上出现的概率是很低的,一般客户手里几乎不会出现
2.在工厂批量生成,且断电时机不合理的情况下,才会复现。工厂生产员通过正确的操作手法, 是完全可以避免的
3.这个问题android原生就存在

根据上述观点,我们做了下面的改善方案
设置系统属性(dev.complete)之前执行一次sync,强制将内存中的文件缓冲写入磁盘中,一定程度上避免配置文件乱码不全等问题
提交:https://dev.thundercomm.com/gerrit/c/general/platform/frameworks/base/+/157078
备注:工厂那边也可以通过如下手法做规避
设置系统属性(dev.complete)之后,通过adb reboot重启方式替代断电的方式

该问题之前做了一个改善方案,但是不能完全避免问题的发生。
同时对于测试的操作,也有一定要求

请确认能否通过优化测试的步骤和方式规避此问题

#2 Updated by 移动测试一组_CDTS 刘强 over 2 years ago

  • Assignee changed from 移动测试一组_CDTS 刘强 to CD TPM-王祥林

请帮忙评估一下

#3 Updated by 移动测试一组_CDTS 刘强 over 2 years ago

  • Subject changed from 【AF】【EVT3】【ST】【压测】设备在进行异常断电压测时,出现在开机动画卡死,且无法恢复的情况 to 【AF】【EVT3】【ST】【压测】设备在进行异常断电压测时,出现在开机动画卡死,且无法恢复的情况,只能重新烧机恢复

#4 Updated by CD TPM-王祥林 over 2 years ago

  • Status changed from NEED_INFO to ASSIGNED
  • Assignee changed from CD TPM-王祥林 to CD FW 曹覃刚

覃刚

按照会议讨论结果,这个问题需要从软件层面完全修复。请提高优先级,继续调查。

#5 Updated by CD FW 曹覃刚 over 2 years ago

  • Status changed from ASSIGNED to NEED_INFO
  • Assignee changed from CD FW 曹覃刚 to 移动测试一组_CDTS 刘强

Hi 强哥
■ 我的分析
问题原因:由于突然断电,导致xml文件写入异常,存在乱码。
在发生问题的设备上,如下两份异常文件会导致无法启动
/data/system/packages.xml
/data/misc_de/0/apexdata/com.android.permission/runtime-permissions.xml

目前新增如下操作修复此问题
1.针对上述两份文件,做sync机制,在每次写文件后,同步一次,将缓冲区的数据更新到磁盘中
2.如果在同步后,问题仍然发生,我们将重置这两份文件,修复无法启动的问题。(但此方法,会存在应用数据丢失的问题, 考虑此问题的复现概率以及场景,数据丢失是可以接受的)
https://dev.thundercomm.com/gerrit/c/general/platform/frameworks/base/+/190973
https://dev.thundercomm.com/gerrit/c/general/platform/packages/modules/Permission/+/190974

同步编译了一个版本,请帮助使用该版本验证
http://10.0.76.24:8080/job/VerifyBuild_for_IOT_6490/3158/
/Pre_figure/VerifyBuild/Pre_figure_turbox-c2130c-la1.1-qssi12-dev/20230331/202303312007-3158

■ 下一步解析计划
测试同学帮助验证该版本,当前修复方案是否有效

#6 Updated by 移动测试一组_CDTS 刘强 over 2 years ago

VB压测中:目前306次未复现
下一步:使用不同的方式进行压测,添加OTA场景

#7 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

VB版本开机过程断电压测-553次 未复现
继续验证

#8 Updated by CDTS_TEST 王成 about 2 years ago

  • Severity changed from Major to Critical

#9 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

当问题被Bug 117300 block,在压测vb版本时,会因为117300的问题,导致无法继续进行

#10 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

20230412:当天无进展
当前问题被Bug 117300 block,在压测vb版本时,会因为117300的问题,导致无法继续进行

#11 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

20230413:当天无进展
当前问题被Bug 117300 block,在压测vb版本时,会因为117300的问题,导致无法继续进行

#12 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

20230415:当天无进展,117300新修改vb版本验证失败
当前问题被Bug 117300 block,在压测vb版本时,会因为117300的问题,导致无法继续进行

#13 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

与KL15问题117300 修复vb合在一起编译验证,版本编译中

#14 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

新的vb周六压测一天未复现
继续压测中

#15 Updated by IoT scm about 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
190974 general/platform/packages/modules/Permission Pre_figure_turbox-c2130c-la1.1-qssi12-dev
FW:SystemOptimization: Perform synchronization after write
1.Perform synchronization after write
2.Reset the exception xml file
TC-RID: 1201-0205101
IssueID: TS-R-BUG-117168
Change-Id: If6253f7b36ebc4f536fe4e8ec85dec9dd3b76961

#16 Updated by IoT scm about 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
190973 general/platform/frameworks/base Pre_figure_turbox-c2130c-la1.1-qssi12-dev
FW:SystemOptimization: Perform synchronization after write
1.Perform synchronization after write
2.Reset the exception xml file
TC-RID: 1201-0205101
IssueID: TS-R-BUG-117168
Change-Id: I88d64d6c66643663ddadf6fed9134c67110c1c34

#17 Updated by CD FW 曹覃刚 about 2 years ago

  • Status changed from NEED_INFO to RESOLVED
  • % Done changed from 0 to 100
  • Resolution changed from -- to FIXED
  • Degrated changed from -- to No
  • Fixed Version set to 2023-04-25
  • Root cause set to 异常断电导致文件存储异常,原生逻辑优化

新的vb周六压测一天未复现

测试同学压测一天OK,投入到正式版本验证

#18 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Status changed from RESOLVED to VERIFIED

0095 版本压测640次未复现关闭

#19 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Status changed from VERIFIED to CLOSED

#20 Updated by IoT scm over 1 year ago

Gerrit Merge Information
ID Project Branch Uploader
347312 general/platform/packages/modules/Permission Pre_figure_turbox-c2130c-la1.1-qssi12-dev
FW:SystemOptimization: Perform synchronization after write
Ignore the roles.xml if it is broken.
TC-RID: 1201-0205101
IssueID: TS-R-BUG-117168, QMV-3163
Change-Id: Id8545e7b23ead9f3c3ff01fe80ef7b20657f0a88

Also available in: Atom PDF