BUG背景
硬件平台:autochips ac8257
Android版本:9.0 r3
设备通过USB外接TBOX,通过TBOX上网,等效与外接一USB以太网网卡。所有问题的根源为最初设计的没有考虑USB网卡热插拔。
问题一 system_server被杀
复现方法
不断拔插USB设备,可用脚本来模拟。
USB网络共享
辅助测试设备 USB OTG口(Device模式) - USB公对公连接线 - 待测设备USB OTG口(Host模式),辅助测试设备用“热点和网络共享”-》“USB网络共享”给待测设备共享网络来复现问题。
模拟触摸屏点击
辅助测试设备用input tap模拟触摸屏点击,来自动切换。两次触摸之间的时间不能太短,太短界面响应不过来,实践经验时间间隔3秒最容易复习问题。
#!/bin/bash
function usb_tether_switch() {
adb shell input tap 1020 300
sleep 3
}
function enter_tether_page() {
adb shell am start com.android.settings/.TetherSettings
}
function auto_test() {
enter_tether_page
i=0
while :
do
i=$((i+1))
echo "`date +%Y%m%d_%H%M%S` $i"
usb_tether_switch
done
}
auto_test
复位USB Hub
不断复位待测设备的USB Hub来复现问题。
错误日志一
E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: EthernetServiceThread
E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=2; index=-1
E AndroidRuntime: at com.android.internal.util.StateMachine$SmHandler.getCurrentState(StateMachine.java:1151)
E AndroidRuntime: at com.android.internal.util.StateMachine$SmHandler.access$1300(StateMachine.java:681)
E AndroidRuntime: at com.android.internal.util.StateMachine.toString(StateMachine.java:2088)
E AndroidRuntime: at java.lang.String.valueOf(String.java:2896)
E AndroidRuntime: at java.lang.StringBuilder.append(StringBuilder.java:132)
E AndroidRuntime: at com.android.server.ethernet.EthernetNetworkFactory$NetworkInterfaceState.toString(EthernetNetworkFactory.java:434)
E AndroidRuntime: at java.lang.String.valueOf(String.java:2896)
E AndroidRuntime: at java.lang.StringBuilder.append(StringBuilder.java:132)
E AndroidRuntime: at com.android.server.ethernet.EthernetNetworkFactory.networkForRequest(EthernetNetworkFactory.java:217)
E AndroidRuntime: at com.android.server.ethernet.EthernetNetworkFactory.acceptRequest(EthernetNetworkFactory.java:82)
E AndroidRuntime: at android.net.NetworkFactory.evalRequest(NetworkFactory.java:234)
E AndroidRuntime: at android.net.NetworkFactory.evalRequests(NetworkFactory.java:253)
E AndroidRuntime: at android.net.NetworkFactory.handleSetFilter(NetworkFactory.java:204)
E AndroidRuntime: at android.net.NetworkFactory.handleMessage(NetworkFactory.java:149)
E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
E AndroidRuntime: at android.os.Looper.loop(Looper.java:193)
E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:65)
错误日志二
E/AndroidRuntime( 650): *** FATAL EXCEPTION IN SYSTEM PROCESS: EthernetServiceThread
E/AndroidRuntime( 650): java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
E/AndroidRuntime( 650): at java.lang.Thread.nativeCreate(Native Method)
E/AndroidRuntime( 650): at java.lang.Thread.start(Thread.java:733)
E/AndroidRuntime( 650): at com.android.internal.util.StateMachine.<init>(StateMachine.java:1305)
E/AndroidRuntime( 650): at android.net.ip.IpClient.<init>(IpClient.java:706)
E/AndroidRuntime( 650): at android.net.ip.IpClient.<init>(IpClient.java:689)
E/AndroidRuntime( 650): at com.android.server.ethernet.EthernetNetworkFactory$NetworkInterfaceState.start(EthernetNetworkFactory.java:305)
E/AndroidRu