Bug #115180

测试 Test-IT #110961: V2.0功能测试

测试 Test-IT #112101: AF-V2.0-Launcher/SystemUI-控制中心

【AF】【EVT】【控制中心】点击结束屏幕录制,上划关闭控制中心,此时无法正常关闭,并出现ANR提示

Added by CD TEST-方永红 over 2 years ago. Updated over 2 years ago.

Status:CLOSEDStart date:2023-01-09
Priority:HighDue date:2023-02-23
Assignee:CD Test赵飞% Done:

100%

Category:AUDIO-FW
Target version:VC1_FSE_0090_20230411
Need_Info:-- Found Version:FlatBuild_HH_VX1_MCE_FSE.M.D.user.01.00.X101.202301080304
Resolution:FIXED Degrated:--
Severity:Critical Verified Version:
Reproducibility:Every time Fixed Version:
Test Type:ST Root cause:配置音频链路到TDM数据

Description

【前提条件】
1、设备已开机

【测试步骤】
1、下划打开控制中心
2、点击屏幕录制
3、勾选所有选项
4、下划打开控制中心
5、点击屏幕录制组件
6、上划关闭控制中心

【预期结果】
5、屏幕录制立马结束
6、控制中心被关闭

【实际结果】
5、视频生成时间较长
6、无法正常关闭控制中心

Phone-STS40X190122 2023-01-09 15-43-13.mp4 (35.6 MB) CD TEST-方永红, 2023-01-09 16:03

tlog_sts40x190122_002_0108053633.tar.gz (11.8 MB) CD TEST-方永红, 2023-01-09 16:03

录屏没有音频数据.jpg (105 KB) CD BSP-唐金泽, 2023-03-17 15:34

音频比特率为空.png (29 KB) CD Test赵飞, 2023-03-20 18:02

%e5%bd%95%e5%b1%8f%e6%b2%a1%e6%9c%89%e9%9f%b3%e9%a2%91%e6%95%b0%e6%8d%ae %e9%9f%b3%e9%a2%91%e6%af%94%e7%89%b9%e7%8e%87%e4%b8%ba%e7%a9%ba

Related issues

Related to Figure - Bug #116843: 【AF】【EVT】【AUDIO】副屏电话会议时没有声音 CLOSED 2023-03-09

History

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

  • Due date set to 2023-02-10
  • Status changed from New to ASSIGNED

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

  • Category changed from CD-FW to AUDIO-FW
  • Assignee changed from CD FW 曹覃刚 to CD MM陈海波

Hi 海波
问题原因是因为主线程在操作音频记录停止的方法耗时太久造成,大约十秒,在此期间,做任何的触摸滑动操作都会引起超时无响应
屏幕录制时,不选择录制设备音频和麦克风,问题不会发生

堆栈信息如下
android.media.AudioRecord.native_stop(Native method)
---------------
"main" prio=5 tid=1 Native | group="main" sCount=1 ucsCount=0 flags=1 obj=0x729355d8 self=0xb4000078c0ed7380 | sysTid=6404 nice=-10 cgrp=default sched=0/0 handle=0x7a8c1b24f8 | state=S schedstat=( 10018571276 1706601634 9501 ) utm=664 stm=337 core=6 HZ=100 | stack=0x7fce163000-0x7fce165000 stackSize=8188KB | held mutexes=
native: #00 pc 00000000000a1c88 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+8)
native: #01 pc 000000000005b8d4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156)
native: #02 pc 0000000000053070 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+292)
native: #03 pc 00000000000542ac /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+64)
native: #04 pc 0000000000053ff0 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+224)
native: #05 pc 000000000004bafc /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+196)
native: #06 pc 000000000002c744 /system/lib64/audioflinger-aidl-cpp.so (android::media::BpAudioRecord::stop()+684)
native: #07 pc 000000000005296c /system/lib64/libaudioclient.so (android::AudioRecord::stop()+244)
native: #08 pc 000000000016ef28 /system/lib64/libandroid_runtime.so (android_media_AudioRecord_stop(_JNIEnv*, _jobject*)+144)
at android.media.AudioRecord.native_stop(Native method)
at android.media.AudioRecord.stop(AudioRecord.java:1344)
- locked <0x00a06345> (a java.lang.Object)
at com.android.systemui.screenrecord.ScreenInternalAudioRecorder.end(ScreenInternalAudioRecorder.java:291)
at com.android.systemui.screenrecord.ScreenMediaRecorder.stopInternalAudioRecording(ScreenMediaRecorder.java:279)
at com.android.systemui.screenrecord.ScreenMediaRecorder.end(ScreenMediaRecorder.java:272)
at com.android.systemui.screenrecord.RecordingService.stopRecording(RecordingService.java:445)
at com.android.systemui.screenrecord.RecordingService.onStartCommand(RecordingService.java:184)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4640)
at android.app.ActivityThread.access$2000(ActivityThread.java:248)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2092)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7880)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)
---------------

请帮助分析音频录制结束方法耗时过久的原因,谢谢

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

  • Assignee changed from CD MM陈海波 to CD BSP何伟

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

何伟

接上中控和AMP,安装中控给的临时apk,并且把音源切换到AMP后,再试试这个问题是否复现。

#5 Updated by CDTS-TEST 周婷 over 2 years ago

  • Due date changed from 2023-02-10 to 2023-02-15

#6 Updated by CD BSP何伟 over 2 years ago

  • Due date changed from 2023-02-15 to 2023-02-17

音源切换到AMP后,问题依然复现
根据log发现在创建AudioRecord时出了错,getInputForDevice 去打开输入流失败
失败原因时没找到AudioPolicyMix的policy
registerMix(): adding mix for dev=0x8000 addr=-1416755123:ap:0mixp:0
getInputMixForAttr() no policy for address -1416755123:ap:0mixp:0
下一步需要调查policy为什么没匹配上

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

  • Target version set to VC1_FSE_0078_20230228

#8 Updated by CDTS-TEST 周婷 over 2 years ago

  • Due date changed from 2023-02-17 to 2023-02-23

#9 Updated by CD BSP何伟 over 2 years ago

在执行stop方法时binder超时,因为此时的binder已达到上限15个并被阻塞了,而这15个都是读数据的线程
问题原因就是这些读方法未读到数据被阻塞,导致主线程被阻塞产生ANR
客户端没有读到数据是因为服务端没有写数据成功

#10 Updated by CDTS-TEST 周婷 over 2 years ago

  • Severity changed from Major to Critical

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

  • Target version changed from VC1_FSE_0078_20230228 to VC1_FSE_0082_20230314

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

  • Assignee changed from CD BSP何伟 to CD MM唐驭俊

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

  • Assignee changed from CD MM唐驭俊 to Multimedia组-RD3_TSCD 梁卿山

#14 Updated by Multimedia组-RD3_TSCD 梁卿山 over 2 years ago

  • Category changed from AUDIO-FW to BSP
  • Assignee changed from Multimedia组-RD3_TSCD 梁卿山 to CD BSP何伟

Hi 何伟
麻烦继续分析,服务端写入数据没有成功的原因,谢谢

#15 Updated by CD BSP-杜磊 over 2 years ago

  • Assignee changed from CD BSP何伟 to CD BSP-唐金泽

#16 Updated by CD BSP何伟 over 2 years ago

当开始录制时,systemui会创建客户端record线程并实例化AudioRecord
在AudioRecord创建的时候,使用的音源是AUDIO_SOURCE_REMOTE_SUBMIX
音频数据的传输使用的是MonoPipe和MonoPipeReader,MonoPipeReader消费MonoPipe的数据

在结束录制时产生ANR是由stop方法binder超时产生,因为此时binder数达到上限15,且都为读线程
我这调查到此时正好在执行 primary-hal/hal/audio_hw.c:in_read -> pcm_read 在等待中

----- Waiting Channels: pid 1301 at 2023-02-13 15:07:46.182444270+0800 -----
Cmd line: /system/bin/mediaserver
sysTid=1301 binder_thread_read
sysTid=1389 binder_thread_read
sysTid=1804 binder_thread_read
sysTid=1805 binder_thread_read
sysTid=1810 binder_thread_read
sysTid=1811 binder_thread_read
sysTid=1856 binder_thread_read
sysTid=1869 binder_thread_read
sysTid=2957 futex_wait_queue_me
sysTid=2963 futex_wait_queue_me
sysTid=2964 __arm64_compat_sys_nanosleep
sysTid=3327 binder_thread_read
sysTid=3512 binder_thread_read
sysTid=3534 binder_thread_read
sysTid=3641 binder_thread_read
sysTid=3645 binder_thread_read
sysTid=3664 binder_thread_read
sysTid=4429 futex_wait_queue_me
sysTid=4430 futex_wait_queue_me
sysTid=4633 binder_thread_read
----- end 1301 -----

另外在结束录制时会报以下错误,错误是参数无效,可能也与binder有关,具体原因未知:

02-08 05:44:51.146 1013 1338 W APM_AudioPolicyMix: getInputMixForAttr() no policy for address -1416755123:ap:0mixp:0
02-08 05:44:51.146 1013 1338 W APM_AudioPolicyManager: getInputForAttr could not find input mix for attr { Content type: AUDIO_CONTENT_TYPE_UNKNOWN Usage: AUDIO_USAGE_UNKNOWN Source: AUDIO_SOURCE_REMOTE_SUBMIX Flags: 0x800 Tags: addr=-1416755123:ap:0mixp:0 }
02-08 05:44:51.146 1013 1338 E AudioFlinger: createRecord() getInputForAttr return error -22
02-08 05:44:51.146 1960 4236 E AudioRecord: createRecord_l(40): AudioFlinger could not create record track, status: -22
02-08 05:44:51.147 1960 4236 W AudioRecord: restoreRecord_l(40): failed status -22, retries 2
02-08 05:44:51.217 1314 4089 I OMX-VENC: venc_dev: stats: avg. fps 43.28, bitrate 1377652
01-01 08:14:32.513 0 0 I : boot log copy done
02-08 05:44:51.647 1960 4236 I BpBinder: onLastStrongRef automatically unlinking death recipients: <uncached descriptor>
02-08 05:44:51.664 1013 1338 W APM_AudioPolicyMix: getInputMixForAttr() no policy for address -1416755123:ap:0mixp:0
02-08 05:44:51.664 1013 1338 W APM_AudioPolicyManager: getInputForAttr could not find input mix for attr { Content type: AUDIO_CONTENT_TYPE_UNKNOWN Usage: AUDIO_USAGE_UNKNOWN Source: AUDIO_SOURCE_REMOTE_SUBMIX Flags: 0x800 Tags: addr=-1416755123:ap:0mixp:0 }
02-08 05:44:51.664 1013 1338 E AudioFlinger: createRecord() getInputForAttr return error -22
02-08 05:44:51.665 1960 4236 E AudioRecord: createRecord_l(40): AudioFlinger could not create record track, status: -22
02-08 05:44:51.665 1960 4236 W AudioRecord: restoreRecord_l(40): failed status -22, retries 1

其他信息:
录制mic加屏幕,结束录制时不会产生ANR
录制系统内部音加屏幕,结束录制时会产生ANR (卡顿时间大概4-5秒)
三者同时录制,结束时会产生ANR (卡顿时间10秒,pcm_read的等待时间为10秒)

#17 Updated by IoT scm over 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
186682 general/platform/hardware/qcom/audio Pre_figure_turbox-c2130c-la1.1-vendor-dev
BSP:Audio: Change PRI_TDM_RX&TX Route(2/2)
1.Add PRI_TDM_RX config to every path_router
2.Change audio-record-voip mixer_path
3.Change audio-playback-voip mixer_path
TC-RID: 1201-0101104
IssueID: TS-R-DF-115180
Change-Id: Ife8a2a0b3dfe99a232cd16f3ae196515932eea58

#18 Updated by IoT scm over 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
187460 general/platform/vendor/opensource/audio-kernel Pre_figure_turbox-c2130c-la1.1-vendor-dev
BSP:Audio: Change MultiMedia10 backend path(1/2)
change MultiMedia10 backend TX path
TC-RID: 1201-0101104
IssueID: TS-R-DF-115180
Change-Id: Ib55e3a811f6be7b4986e8fdd43efb3ff313ce383

#19 Updated by CD BSP-唐金泽 over 2 years ago

  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from CD BSP-唐金泽 to CD TEST-方永红
  • Resolution changed from -- to FIXED
  • Root cause set to 配置音频链路到TDM数据

配置音频链路到TDM数据;
梳理音频链路配置;
为音频链路和TDM配置相匹配。

#20 Updated by CD BSP-唐金泽 over 2 years ago

Hi,永红,
请帮忙连接好中控台架,使用最新更新的中控版本进行测试;
若情况复现,帮忙看下几率。
有可能还有相关问题:
1、录屏的文件是否含带音频数据
2、音频比特率是否为0等;入附图。

#21 Updated by CD TEST-方永红 over 2 years ago

  • Assignee changed from CD TEST-方永红 to CD Test赵飞

#22 Updated by CD Test赵飞 over 2 years ago

  • File 音频比特率为空.png added
  • Status changed from RESOLVED to ASSIGNED
  • Assignee changed from CD Test赵飞 to CD BSP-唐金泽

副屏版本:3/19号DB
中控版本:60
副屏连接中控的情况下,此问题仍然复现,复现概率:5/5
查看录制的视频文件,音频比特率为空,见附件截图

#23 Updated by CDTS_TEST 王成 over 2 years ago

  • Target version changed from VC1_FSE_0082_20230314 to VC1_FSE_0086_20230328

#24 Updated by CD BSP-唐金泽 over 2 years ago

  • Target version changed from VC1_FSE_0086_20230328 to VC1_FSE_0090_20230411

还依赖于Qualcomm这边CASE提供思路

#25 Updated by CD BSP-唐金泽 over 2 years ago

  • Category changed from BSP to AUDIO-FW
  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from CD BSP-唐金泽 to CD Test赵飞

请使用2023-04-03以后DB进行验证

#26 Updated by CD Test赵飞 over 2 years ago

  • Status changed from RESOLVED to VERIFIED
  • % Done changed from 0 to 100

验证版本:FlatBuild_HH_MCE_FSE.M.R.user.01.00.0088.C102
验证结果:PASS

#27 Updated by CD Test赵飞 over 2 years ago

  • Status changed from VERIFIED to CLOSED

Also available in: Atom PDF