GSI测试是google在android8.0以后新增的一项测试项,也是为了测试一些兼容性的东西,不多描述。测试之前是要把system.img通过fastboot刷成google提供的原生的gsi测试包(即上层全是用google的)。
我们在开始测试后,因为有测试项是需要重启手机的。重启后却无法开机了,查看相关报错的log如下:

01-01 08:00:00.276 D/WifiApConfigStore( 1204): 2G band allowed channels are:1,6,11
01-01 08:00:00.335 E/IpManager.wlan0( 1204): ERROR Failed to disable IPv6: java.lang.IllegalStateException: command '1 interface ipv6 wlan0 disable' failed with '400 1 Failed to change IPv6 state (No such file or directory)'
01-01 08:00:00.335 E/HalDeviceManager( 1204): isSupported: called but mServiceManager is null!?
01-01 08:00:00.335 I/WifiNative-wlan0( 1204): Vendor HAL not supported, Ignore stop...
01-01 08:00:00.335 D/WificondControl( 1204): tearing down interfaces in wificond
01-01 08:00:00.337 D/CommandListener( 782): Clearing all IP addresses on wlan0
01-01 08:00:00.342 D/WifiController( 1204): isAirplaneModeOn = false, isWifiEnabled = false, isScanningAvailable = false
01-01 08:00:00.345 I/WifiService( 1204): getVerboseLoggingLevel uid=1000
01-01 08:00:00.345 W/libc ( 1204): Unable to set property "log.tag.WifiHAL" to "D": connection failed; errno=111 (Connection refused)
01-01 08:00:00.345 E/System ( 1204): ******************************************
01-01 08:00:00.346 E/System ( 1204): ************ Failure starting system services
01-01 08:00:00.346 E/System ( 1204): java.lang.RuntimeException: Failed to create service com.android.server.wifi.WifiService: service constructor threw an exception
01-01 08:00:00.346 E/System ( 1204): at com.android.server.SystemServiceManager.startService(SystemServiceManager.java:107)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.SystemServiceManager.startService(SystemServiceManager.java:70)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.SystemServer.startOtherServices(SystemServer.java:1072)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.SystemServer.run(SystemServer.java:391)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.SystemServer.main(SystemServer.java:267)
01-01 08:00:00.346 E/System ( 1204): at java.lang.reflect.Method.invoke(Native Method)
01-01 08:00:00.346 E/System ( 1204): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
01-01 08:00:00.346 E/System ( 1204): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:787)
01-01 08:00:00.346 E/System ( 1204): Caused by: java.lang.reflect.InvocationTargetException
01-01 08:00:00.346 E/System ( 1204): at java.lang.reflect.Constructor.newInstance0(Native Method)
01-01 08:00:00.346 E/System ( 1204): at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.SystemServiceManager.startService(SystemServiceManager.java:96)
01-01 08:00:00.346 E/System ( 1204): ... 7 more
01-01 08:00:00.346 E/System ( 1204): Caused by: java.lang.RuntimeException: failed to set system property
01-01 08:00:00.346 E/System ( 1204): at android.os.SystemProperties.native_set(Native Method)
01-01 08:00:00.346 E/System ( 1204): at android.os.SystemProperties.set(SystemProperties.java:155)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.wifi.SystemPropertyService.set(SystemPropertyService.java:28)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.wifi.WifiStateMachine.configureVerboseHalLogging(WifiStateMachine.java:1254)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.wifi.WifiStateMachine.enableVerboseLogging(WifiStateMachine.java:1236)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.wifi.WifiServiceImpl.enableVerboseLoggingInternal(WifiServiceImpl.java:2395)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.wifi.WifiServiceImpl.<init>(WifiServiceImpl.java:461)
01-01 08:00:00.346 E/System ( 1204): at com.android.server.wifi.WifiService.<init>(WifiService.java:32)

从log的表现看,第一眼就看到了此错误:Unable to set property “log.tag.WifiHAL” to “D”: connection failed;
一个property属性log.tag.WifiHAL无法被设置成D,原因是connection failed。
首先怀疑的就是权限问题,但是检查了sepolicy相关地方,都没有异常。并且此问题,在不刷入google的system.img是完全没有问题的,似乎问题有些无解,先来看看报错的地方的代码:

// sourc code
/bionic/libc/bionic/system_properties.cpp
1278 // Use proper protocol
1279 PropertyServiceConnection connection;
1280 if (!connection.IsValid()) {
1281 errno = connection.GetLastError();
1282 __libc_format_log(ANDROID_LOG_WARN,
1283 "libc",
1284 "Unable to set property \"%s\" to \"%s\": connection failed; errno=%d (%s)",
1285 key,
1286 value,
1287 errno,
1288 strerror(errno));
1289 return -1;
1290 } 501 bool IsValid() {
502 return socket_ != -1;
503 } 480 PropertyServiceConnection() : last_error_(0) {
481 socket_ = ::socket(AF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0);
482 if (socket_ == -1) {
483 last_error_ = errno;
484 return;
485 }
486
487 const size_t namelen = strlen(property_service_socket);
488 sockaddr_un addr;
489 memset(&addr, 0, sizeof(addr));
490 strlcpy(addr.sun_path, property_service_socket, sizeof(addr.sun_path));
491 addr.sun_family = AF_LOCAL;
492 socklen_t alen = namelen + offsetof(sockaddr_un, sun_path) + 1;
493
494 if (TEMP_FAILURE_RETRY(connect(socket_, reinterpret_cast<sockaddr*>(&addr), alen)) == -1) {
495 close(socket_);
496 socket_ = -1;
497 last_error_ = errno;
498 }
499 }

这时候同步拉进来驱动的同事,在socket.c中添加一些log和callstack分析是否有异常。经过漫长时间的build版本和分析,socket也正常。
驱动在研究socket方向的问题。我就先继续仔细检查log,并且也和正常的其他机型的log做比较,发现异常时候会多这么一些奇怪的信息:

01-01 00:12:55.699  1346  1346 F libc    : CANNOT LINK EXECUTABLE "/vendor/bin/hw/vendor.qti.hardware.factory@1.0-service": library "vendor.qti.hardware.factory@1.0.so" not found
01-01 00:12:55.706  1346  1346 F libc    : Fatal signal 6 (SIGABRT), code -6 in tid 1346 (vendor.qti.hard), pid 1346 (vendor.qti.hard)
01-01 00:12:55.734  1352  1352 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
01-01 00:12:55.741   701   701 I /system/bin/tombstoned: received crash request for pid 1346
01-01 00:12:55.742  1352  1352 I crash_dump32: performing dump of process 1346 (target tid = 1346)
01-01 00:12:55.742  1352  1352 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-01 00:12:55.742  1352  1352 F DEBUG   : Build fingerprint: 'Android/aosp_arm_a/generic_arm_a:8.1.0/OC-MR1/4498750:userdebug/test-keys'
01-01 00:12:55.742  1352  1352 F DEBUG   : Revision: '0'
01-01 00:12:55.742  1352  1352 F DEBUG   : ABI: 'arm'
01-01 00:12:55.742  1352  1352 F DEBUG   : pid: 1346, tid: 1346, name: vendor.qti.hard  >>> /vendor/bin/hw/vendor.qti.hardware.factory@1.0-service <<<
01-01 00:12:55.742  1352  1352 F DEBUG   : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
01-01 00:12:55.743  1352  1352 F DEBUG   : Abort message: 'CANNOT LINK EXECUTABLE "/vendor/bin/hw/vendor.qti.hardware.factory@1.0-service": library "vendor.qti.hardware.factory@1.0.so" not found'
01-01 00:12:55.743  1352  1352 F DEBUG   :     r0 00000000  r1 00000542  r2 00000006  r3 00000008
01-01 00:12:55.743  1352  1352 F DEBUG   :     r4 00000542  r5 00000542  r6 be9246fc  r7 0000010c
01-01 00:12:55.743  1352  1352 F DEBUG   :     r8 00000000  r9 be924720  sl be924990  fp 00000000
01-01 00:12:55.743  1352  1352 F DEBUG   :     ip be92599c  sp be9246e8  lr b0ae9aa7  pc b0ae7fe0  cpsr 20000030
01-01 00:12:55.746  1352  1352 F DEBUG   :
01-01 00:12:55.746  1352  1352 F DEBUG   : backtrace:
01-01 00:12:55.746  1352  1352 F DEBUG   :     #00 pc 0005efe0  /system/bin/linker (__dl_abort+63)
01-01 00:12:55.746  1352  1352 F DEBUG   :     #01 pc 000101cb  /system/bin/linker (__dl___linker_init+2794)
01-01 00:12:55.746  1352  1352 F DEBUG   :     #02 pc 00014f08  /system/bin/linker (_start+4)

在源码中找一下这个service,在vendor/qcom/proproetary/fastmmi/qmmi/hidl/vendor.qti.hardware.factory@1.0-service.rc中启动。因为VTS(GSI是在VTS环境下用google img测试CTS用例)本就是测试hidl兼容性的,所以看到这一块就更加怀疑。尝试去掉这个服务,问题不再复现。

咨询了Qcom此服务是否能去掉,Qcom表示不影响。但是问题原因还是需要找一下。check一下源码编译文件,发现缺失的vendor.qti.hardware.factory@1.0.so编译在了system/lib下,而我们测试GSI是会把system.img替换成google的system.img当然不会包括高通编进来的库。引起上述问题。

高通平台做GSI测试时,开机重启失败问题相关推荐

  1. 高通平台GPS工程测试接收参数解析

    高通平台GPS工程测试&接收参数解析 前言 一.GPS工程测试 1.测试环境&仪器搭建 2.板子/整机状态 二.GPS接收机参数解析 1.灵敏度 2.空间衰减 3.SNR信噪比 4.C ...

  2. 高通平台android7.1系统显示旋转180度

    实现方法 内核层修改 kernel\msm-3.18\arch\arm\boot\dts\qcom\dsi-panel-lm215w-lvds-1080p-video.dtsi增加qcom,mdss- ...

  3. 高通平台sensor学习

    刚入行驱动时最先接触调试的外设模块便是sensor,一直都是零零散散的记录,这次终于下定决心对自己所学做一个系统的总结. sensor作为一款常用的外设,虽不起眼但是很多功能确实离不开它.比如我们手机 ...

  4. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  5. 高通平台android开发总结

    http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...

  6. 高通平台android 环境配置编译及开发经验总结

    完全转自:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  7. 高通平台android开发总结 .

    http://blog.csdn.net/mirkerson/article/details/7691029 http://blog.csdn.net/mirkerson/article/detail ...

  8. 高通平台android 环境配置编译及开发经验总结【转】

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  9. 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)

    前两篇博文分析了启动流程.代码流程.cdt,接下来就分析另外几个需要格外关注的部分. ##log系统 sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很 ...

最新文章

  1. java和python的web自动化有什么区别-Java 和 Python 有哪些区别?
  2. 使用思维导图,优雅的完成自己的代码
  3. 线上分享 | 浅谈中台对产品经理的价值
  4. 打开逻辑STANDBY写入功能
  5. 三星s10能升级android11,三星 S10+手机已在测试 Android 11 系统
  6. python progressbar 倒计时_Python使用progressbar模块实现的显示进度条功能
  7. onvif协议之初探
  8. linux基础学习【6】
  9. 初稿4月1 刚体运动与四元数;9月6日修订复数、2D旋转、三维空间旋转的罗德里格、四元数计算、四元数的3D旋转的双倍覆盖、复合旋转、四元数插值
  10. SN1SLD16 华为SDH全新原包装2xSTM-16光接口板
  11. Spark Structured Steaming实战
  12. JS/jQuery 遍历对象属性
  13. 经典的同步/互斥问题—哲学家进餐
  14. c语言编译器 控制unix 故事,互联网发展史人物篇:布莱恩·克尼汉(Brian Kernighan)——Unix和C语言背后的巨人...
  15. 文献笔记:RhythmNet: End-to-end Heart Rate Estimation from Face via Spatial-temporal Representation
  16. Java语言程序设计 例题9.8(Fan类)
  17. 学生宿舍管理系统之概念结构设计
  18. 读书笔记--推荐系统实践(2)
  19. 虹科案例|nanoGUNE应用Onyx系统实现石墨烯电学性质的无损表征
  20. Matlab plot子图的间距和边缘距离如何调整(已解决)

热门文章

  1. 网页应该如何录屏呢?
  2. Python爬虫:js的btoa和atob和pythonBase64编码解码比对分析
  3. tensorflow的数据类型
  4. resultful 风格
  5. vscode 配置ts自动转换成js文件
  6. 节日代码php,php 排除周末与节假日程序实例代码
  7. 丰巢取快递系统(一)
  8. win10设备管理没有android,win10电脑不能识别安卓设备怎么解决?
  9. 关于Oracle 级联操作
  10. 美术向技美入门课——庄懂的技术美术入门课(美术向)01