Bug #118372
【IOVDEV-31381】【VC1】【0095】【台架】【EE环境】【副屏】05月29日下午晚上九点执行的monkey命令,05月29号晚上10:47分monkey命令自动停止了
Status: | CLOSED | Start date: | 2023-05-30 | |
---|---|---|---|---|
Priority: | Normal | Due date: | 2023-06-05 | |
Assignee: | CD FW 曹覃刚 | % Done: | 0% | |
Category: | CD-FW | |||
Target version: | - | |||
Need_Info: | TEST | Found Version: | 01.00.0095.c103 | |
Resolution: | -- | Degrated: | -- | |
Severity: | Major | Verified Version: | ||
Reproducibility: | Occasionally | Fixed Version: | ||
Test Type: | ST | Root cause: |
Description
【环境信息】EE环境
【问题出现时间】:20230527 15:28
【前提条件】:副屏上电,网络正常
【操作步骤】
1.05月29日下午晚上九点执行的monkey命令。
【实际结果】
1.05月29号晚上10:47分monkey命令自动停止了。
【期望结果】
1.monkey命令进行中状态。
【备注】:
台架Log地址:https://ofs.human-horizons.com/#/download/index/Prohe6zGLuc%3D
【当前开机次数】:副屏第135次开机
【应用版本】:/
【VIN】:HRYTTESTVINMGM401
【硬件版本号】:/
【中控版本号】:03.02.0082.C101
【副屏版本号】:01.00.0095.c103
Related issues
History
#2 Updated by CD FW 曹覃刚 about 2 years ago
- Category changed from CD-FW to 依赖客户及其供应商解决
- Status changed from New to NEED_INFO
- Assignee changed from CD FW 曹覃刚 to CDTS_TEST 王成
Hi 王成
客户抓的日志是05/30号的实时日志,已经是第二天的日志了
请帮忙抓取历史日志,谢谢
已飞书同步此消息
#3 Updated by CDTS_TEST 王成 about 2 years ago
- File 1685514227718.zip added
- Status changed from NEED_INFO to ASSIGNED
- Assignee changed from CDTS_TEST 王成 to CD FW 曹覃刚
#4 Updated by CD FW 曹覃刚 about 2 years ago
- Status changed from ASSIGNED to NEED_INFO
- Assignee changed from CD FW 曹覃刚 to CDTS_TEST 王成
Hi 王成
-----------------
05-29 22:47:09.466 18178 18178 I Monkey : Sleeping for 500 milliseconds
//最后一条monkey日志
05-29 22:47:09.486 18123 18125 I adbd : persist.adb.tls_server.enable changed to 0
05-29 22:47:09.486 18123 18125 I adbd : adb wifi stopped
//wifi adb 断了
05-29 22:47:09.528 0 0 I [34989.348005] libprocessgroup: Successfully killed process cgroup uid 0 pid 18123 in 32ms
05-29 22:47:09.533 0 0 I [34989.349623] init: Service 'adbd' (pid 18123) received signal 9
//adb 进程没了
-----------------
看日志应该是由于wifi adb断了,所以monkey停了
并无其他异常发生
请同步此信息给客户,谢谢
#5 Updated by CDTS-TEST 周婷 about 2 years ago
- Status changed from NEED_INFO to ASSIGNED
- Assignee changed from CDTS_TEST 王成 to CD LC 陶洪普
洪普,请帮忙分析wifi adb 断掉的原因,日志中是否有wifi 断开信息,
#6 Updated by CDTS-TEST 周婷 about 2 years ago
- Due date set to 2023-06-05
#7 Updated by 短距组_SSRDCNJ 王孟伟 about 2 years ago
【Summary】
//Monkey测试中下发touch事件,touch屏幕坐标为(1532.0,240.0), 根据横纵坐标的大小猜测正是wifi开关的位置
05-29 22:47:09.454 18178 18178 I Monkey : :*Sending Touch (ACTION_DOWN): 0:(1532.0,240.0)*
05-29 22:47:09.460 1513 1763 I input_interaction: Interaction with: 73ef6c4 com.android.settings/com.android.settings.homepage.SettingsHomepageActivity (server), swipe-up (server), edge-swipe (server), PointerEventDispatcher0 (server),
05-29 22:47:09.461 13134 13134 D ViewTouchDebug: mView : DecorView@badc287[SettingsHomepageActivity]Receive event : MotionEvent { action=ACTION_DOWN, actionButton=0, id0=0, x0=1532.0, y0=240.0, toolType0=TOOL_TYPE_UNKNOWN, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=34989273, downTime=34989273, deviceId=-1, source=0x1002, displayId=0, eventId=-403622258 }
05-29 22:47:09.463 1866 1866 D ViewTouchDebug: mView : com.android.systemui.navigationbar.NavigationBarFrame{57c62da V.E...... ......I. 0,0-2560,46 #7f0b03f2 app:id/navigation_bar_frame}Receive event : MotionEvent { action=ACTION_OUTSIDE, actionButton=0, id0=0, x0=0.0, y0=-1034.0, toolType0=TOOL_TYPE_UNKNOWN, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=34989273, downTime=34989273, deviceId=-1, source=0x1002, displayId=0, eventId=1514932734 }
05-29 22:47:09.463 18178 18178 I Monkey : :*Sending Touch (ACTION_UP): 0:(1517.1094,240.35599)*
//wifi在Settings界面被关闭
05-29 22:47:09.468 1513 8206 I WifiService: setWifiEnabled package=com.android.settings uid=1000 enable=false
//wifi一系列行为被禁止或关闭
05-29 22:47:09.478 1513 1784 D WifiActiveModeWarden: Shutting down all client mode managers
05-29 22:47:09.478 1513 1784 D WifiClientModeManager[wlan0]: currentstate: ConnectModeState
05-29 22:47:09.481 1513 1513 D WifiP2pService: Wifi enabled=false
05-29 22:47:09.481 20149 20149 D BluetoothAdapterService: android.net.wifi.WIFI_STATE_CHANGED
05-29 22:47:09.482 1513 1784 D WifiClientModeManager[wlan0]: Active SubscriptionInfo list not found
05-29 22:47:09.482 1513 1784 D WifiClientModeManager[wlan0]: The target role change info null
05-29 22:47:09.482 1513 1784 D WifiClientModeManager[wlan0]: Continue to stop wifi
//wifi adb断掉
05-29 22:47:09.486 18123 18125 I adbd : persist.adb.tls_server.enable changed to 0
05-29 22:47:09.486 18123 18125 I adbd : adb wifi stopped
//wifi底层驱动断开,"reason=3"代码表示连接已断开,原因是 "deauth_leaving"
//"locally_generated=1"表示断开连接是由设备本地发起的,而不是由远程访问点发起的。
05-29 22:47:09.630 17863 17863 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid=08:79:8c:36:8a:50 reason=3 locally_generated=1
//状态获取,wifi enable为0,代表false
Line 1228: 05-29 22:47:09.694 1409 1454 D LOWI-9.0.0.87.a: [LOWIController] updateIntfState: WIFI enabled 0 mNlWifiStatus 1 mWifiStateEnabled 1
【Next Action】
综上所述,wifi开关被Monkey从Settings界面关闭,所以导致wifi断开,wiif断开的原因是Monkey的自主行为,请相关团队检查monkey脚本以及touch的坐标是否对应
#8 Updated by CDTS-TEST 周婷 about 2 years ago
- Category changed from 依赖客户及其供应商解决 to CD-FW
- Assignee changed from CD LC 陶洪普 to CD FW 曹覃刚
覃刚,这个能从setting 关闭这个原因再往下进行分析不?
#9 Updated by CD FW 曹覃刚 about 2 years ago
- Status changed from ASSIGNED to NEED_INFO
- Assignee changed from CD FW 曹覃刚 to CDTS-TEST 周婷
- Need_Info changed from -- to TEST
Hi 周婷
覃刚,这个能从setting 关闭这个原因再往下进行分析不?
你是指monkey测试时,不让它操作设定里面的画面吗?
是的话,可以通过修改monkey测试的参数,在黑名单里加上这个应用,就不会测试setting了
#10 Updated by CDTS-TEST 周婷 about 2 years ago
- Status changed from NEED_INFO to ASSIGNED
- Assignee changed from CDTS-TEST 周婷 to CD SYSTEM-夏旭
请帮忙进行分析为何再settings 中关闭wifi 会导致adb -d 进程被杀掉
#11 Updated by CD SYSTEM-夏旭 about 2 years ago
1. 从log看是是要设置一个属性值
05-29 22:47:09.496 18123 18125 I adbd : Waiting for persist.adb.tls_server.enable=1
代码:
LINUX/android/system/core/adb/daemon/adb_wifi.cpp
const char kWifiPortProp[] = "service.adb.tls.port";
const char kWifiEnabledProp[] = "persist.adb.tls_server.enable";
static void start_wifi_enabled_observer() {
std::thread([]() {
bool wifi_enabled = false;
while (true) {
std::string toggled_val = wifi_enabled ? "0" : "1";
LOG(INFO) << "Waiting for " << kWifiEnabledProp << "=" << toggled_val;
if (WaitForProperty(kWifiEnabledProp, toggled_val)) {
wifi_enabled = !wifi_enabled;
LOG(INFO) << kWifiEnabledProp << " changed to " << toggled_val;
if (wifi_enabled) {
enable_wifi_debugging();
} else {
disable_wifi_debugging();
}
}
}
}).detach();
}
#endif //__ANDROID__
} // namespace
#12 Updated by CDTS_Test 吴诗雨 about 2 years ago
- Subject changed from 【IOVDEV-31381】【VC1】【0095】【台架】【EE环境】【副屏】05月29日下午晚上九点执行的monkey命令,05月29号晚上10:47分monkey命令自动停止了 to 【IOVDEV-31381】【IOVDEV-32260】【VC1】【0095】【台架】【EE环境】【副屏】05月29日下午晚上九点执行的monkey命令,05月29号晚上10:47分monkey命令自动停止了
#13 Updated by CD SYSTEM-夏旭 about 2 years ago
- Subject changed from 【IOVDEV-31381】【IOVDEV-32260】【VC1】【0095】【台架】【EE环境】【副屏】05月29日下午晚上九点执行的monkey命令,05月29号晚上10:47分monkey命令自动停止了 to 【IOVDEV-31381】【VC1】【0095】【台架】【EE环境】【副屏】05月29日下午晚上九点执行的monkey命令,05月29号晚上10:47分monkey命令自动停止了
此问题的root case为 adbd被kill ,正常的关闭wifi或拔掉USB并不导致adbd被kill,其中如下关键字是个切入点,需要AF调查什么样的路径可以触发
AdbDebuggingManager: Wifi disabled. Disabling adbwifi.
从异常日志分析,异常链路如下:
wifi disable ---->> Disabling adbwifi. --->> adb wifi stopped --->> adbd killed ---->> monkey killed
目前做了如下调查
1. wifi disable引发的adb wifi stopped, 本地验证连接wifi adb后,使用下拉栏或setting界面,如下打印相同
05-28 13:04:31.194 21074 21245 I WifiService: setWifiEnabled package=com.android.settings uid=1000 enable=false
05-28 13:04:31.200 21074 21226 D WifiActiveModeWarden: Shutting down all client mode managers
05-28 13:04:31.200 21074 21226 D WifiClientModeManager[wlan0]: currentstate: ConnectModeState
05-28 13:04:31.205 21074 21074 D WifiP2pService: Wifi enabled=false
05-28 13:04:31.217 21074 21226 D WifiClientModeManager[wlan0]: Active SubscriptionInfo list not found
05-28 13:04:31.217 21074 21226 D WifiClientModeManager[wlan0]: The target role change info null
05-28 13:04:31.217 21074 21226 D WifiClientModeManager[wlan0]: Continue to stop wifi
05-28 13:04:31.220 21074 21226 D WifiClientModeManager[wlan0]: Stopping ClientModeImpl
05-28 13:04:31.222 21074 21074 D WifiP2pService: Wifi enabled=false
但未出现如下异常打印,所以并未造成adbd被kill:
05-29 22:47:09.485 1513 1513 I AdbDebuggingManager: Wifi disabled. Disabling adbwifi.
05-29 22:47:09.486 18123 18125 I adbd : persist.adb.tls_server.enable changed to 0
05-29 22:47:09.486 18123 18125 I adbd : adb wifi stopped
05-29 22:47:09.494 831 831 W android.hardware.wifi@1.0-service: No active wlan interfaces in use! Using default
05-29 22:47:09.496 18123 18125 I adbd : Waiting for persist.adb.tls_server.enable=1
05-29 22:47:09.497 0 0 I [34989.315908] init: Sending signal 9 to service 'adbd' (pid 18123) process group...
其中如下关键字是个切入点,需要调AF查什么样的路径可以触发
AdbDebuggingManager: Wifi disabled. Disabling adbwifi.
1.1. 发现在下面的java文件会去设备属性persist.adb.tls_server.enable
1.1.1. AdbService.java
SystemProperties.get(WIFI_PERSISTENT_CONFIG_PROPERTY, "0")); in initAdbState()
private static final String WIFI_PERSISTENT_CONFIG_PROPERTY = "persist.adb.tls_server.enable"; field in AdbService
SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); in setAdbEnabled()
1.1.2. AdbDebuggingManager.java
private static final String WIFI_PERSISTENT_CONFIG_PROPERTY ="persist.adb.tls_server.enable";
SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); in handleMessage()
SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); in handleMessage()
http://192.168.87.66:8006/source/xref/Pre_figure_turbox-c2130c-la1.1-vendor-dev/LINUX/android/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java#108
Slog.i(TAG, "Wifi disabled. Disabling adbwifi.");
连接wifi adb后,使用下拉状态栏或者setting界面去关闭wifi,并没有上述打印,但问题复现的日志中出现了此异常
1.2 . 不清楚上层在什么时候会去设置这个属性值,从adbd退出原因看,在退出前一直在等待这个属性设备
log: 05-29 22:47:09.496 18123 18125 I adbd : Waiting for persist.adb.tls_server.enable=1
static void start_wifi_enabled_observer() {
std::thread([]() {
bool wifi_enabled = false;
while (true) {
std::string toggled_val = wifi_enabled ? "0" : "1";
LOG(INFO) << "Waiting for " << kWifiEnabledProp << "=" << toggled_val;
if (WaitForProperty(kWifiEnabledProp, toggled_val)) {
wifi_enabled = !wifi_enabled;
LOG(INFO) << kWifiEnabledProp << " changed to " << toggled_val;
if (wifi_enabled) {
enable_wifi_debugging();
} else {
disable_wifi_debugging();
}
}
}
}).detach();
}
#endif //__ANDROID__
} // namespace
2. adbd killed ---->> monkey killed
本地手动stop adbd 会造成monkey killed,这个是正常的,monkey需要adbd输出log
05-29 22:47:09.528 0 0 I [34989.348005] libprocessgroup: Successfully killed process cgroup uid 0 pid 18123 in 32ms
05-29 22:47:09.533 0 0 I [34989.348533] init: Control message: Processed ctl.stop for 'adbd' from pid: 1513 (system_server)
05-29 22:47:09.533 0 0 I [34989.349623] init: Service 'adbd' (pid 18123) received signal 9
05-29 22:47:09.533 0 0 I [34989.350314] init: Untracked pid 18178 received signal 9
05-29 22:47:09.533 0 0 I [34989.350477] init: processing action (init.svc.adbd=stopped) from (/system/etc/init/hw/init.usb.configfs.rc:14)
android/development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetwork.java
public MonkeySourceNetwork(int port) throws IOException {
// Only bind this to local host. This means that you can only
// talk to the monkey locally, or though adb port forwarding.
serverSocket = new ServerSocket(port,
0, // default backlog
InetAddress.getLocalHost());
}
#14 Updated by CD SYSTEM-夏旭 about 2 years ago
- Assignee changed from CD SYSTEM-夏旭 to CD FW 曹覃刚
#15 Updated by CD FW-田成财 about 2 years ago
- Status changed from ASSIGNED to RESOLVED
■ 结论
Android原生机制,关闭wifi的时候,会发送广播关闭adb_wifi_enabled, 后会通过adb service kill掉adbd进程;
跑monkey的时候可以在开发者选中关闭WirelessDebugging开关,然后再通过adb wifi跑monkey;
■ 分析
1. system_server中的adbdebug线程收到关闭wifi的广播后,会设置SettingsProvider中的值ADB_WIFI_ENABLED;
LINUX/android/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
599 public void onReceive(Context context, Intent intent) { 600 String action = intent.getAction(); 601 // We only care about when wifi is disabled, and when there is a wifi network 602 // change. 603 if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { 604 int state = intent.getIntExtra( 605 WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED); 606 if (state == WifiManager.WIFI_STATE_DISABLED) { 607 Slog.i(TAG, "Wifi disabled. Disabling adbwifi."); 608 Settings.Global.putInt(mContentResolver, 609 Settings.Global.ADB_WIFI_ENABLED, 0);
2.adb service会监听Settings.Global.ADB_WIFI_ENABLED变化,如果发生变化会调用setAdbEnabled来kill掉adbd
196 private class AdbSettingsObserver extends ContentObserver { 198 private final Uri mAdbWifiUri = Settings.Global.getUriFor(Settings.Global.ADB_WIFI_ENABLED); 204 @Override 205 public void onChange(boolean selfChange, @NonNull Uri uri, @UserIdInt int userId) { 206 if (mAdbUsbUri.equals(uri)) { ... 212 } else if (mAdbWifiUri.equals(uri)) { 213 boolean shouldEnable = (Settings.Global.getInt(mContentResolver, 214 Settings.Global.ADB_WIFI_ENABLED, 0) > 0); 215 FgThread.getHandler().sendMessage(obtainMessage( 216 AdbService::setAdbEnabled, AdbService.this, shouldEnable, 217 AdbTransportType.WIFI)); 218 } 219 } 220 }
3.setAdbEnabled最终通过ctl_stop init命令来kill掉adbd进程;
442 private void stopAdbd() { 443 if (!mIsAdbUsbEnabled && !mIsAdbWifiEnabled) { 444 SystemProperties.set(CTL_STOP, ADBD); 445 } 446 }
■ 下一步
通过adb wifi跑monkey之前:
1. 在开发者选中关闭WirelessDebugging开关,再跑;
2. settings加入黑名单;
#16 Updated by CDTS_TEST 王成 almost 2 years ago
- Status changed from RESOLVED to VERIFIED
客户回复:后续出现该问题再重新提报问题,此票关闭
#17 Updated by CDTS_TEST 王成 almost 2 years ago
- Status changed from VERIFIED to CLOSED