Basic-Video-Call icon indicating copy to clipboard operation
Basic-Video-Call copied to clipboard

leaked ServiceConnection android.bluetooth.BluetoothHeadset

Open sudhirkhanger opened this issue 6 years ago • 5 comments
trafficstars

2019-07-01 10:54:04.382 25931-25931/io.agora.tutorials1v1vcall E/ActivityThread: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@c5d235b that was originally bound here
    android.app.ServiceConnectionLeaked: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@c5d235b that was originally bound here
        at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1344)
        at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1239)
        at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1487)
        at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1467)
        at android.bluetooth.BluetoothHeadset.doBind(BluetoothHeadset.java:305)
        at android.bluetooth.BluetoothHeadset.<init>(BluetoothHeadset.java:298)
        at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:1936)
        at io.agora.rtc.internal.AudioRoutingController.initialize(AudioRoutingController.java:674)
        at io.agora.rtc.internal.RtcEngineImpl.<init>(RtcEngineImpl.java:347)
        at io.agora.rtc.RtcEngine.create(RtcEngine.java:61)
        at io.agora.tutorials1v1vcall.VideoChatViewActivity.initializeAgoraEngine(VideoChatViewActivity.java:177)
        at io.agora.tutorials1v1vcall.VideoChatViewActivity.initAgoraEngineAndJoinChannel(VideoChatViewActivity.java:79)
        at io.agora.tutorials1v1vcall.VideoChatViewActivity.onCreate(VideoChatViewActivity.java:74)
        at android.app.Activity.performCreate(Activity.java:6875)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6221)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

How to replicate:

  • Press the call end button and read the service leak message.

Devices tested on: Pixel Android 9 API 28 - Can't reproduce. Redmi 5A Android 7.1.2 API 25 - memory leak happens.

sudhirkhanger avatar Jul 01 '19 05:07 sudhirkhanger

@sudhirkhanger Thanks for your feedback Which version of SDK are you with?

guohai avatar Jul 03 '19 03:07 guohai

@gui 2.4.0

sudhirkhanger avatar Jul 03 '19 03:07 sudhirkhanger

@sudhirkhanger Sorry, so far I can not reproduce this issue.

But you can try with another way. Create RTC engine under application context. You can use the object in full app lifecycle.

guohai avatar Jul 07 '19 06:07 guohai

FWIW I can reproduce with even version 2.8.0. I cloned the current repo, added version 2.8.0, and ran the project. When I disconnect using the default red button the service leak happens.

2019-07-09 09:13:12.039 27510-27510/io.agora.tutorials1v1vcall E/ActivityThread: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@b1c8855 that was originally bound here
    android.app.ServiceConnectionLeaked: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@b1c8855 that was originally bound here
        at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1344)
        at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1239)
        at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1487)
        at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1467)
        at android.bluetooth.BluetoothHeadset.doBind(BluetoothHeadset.java:305)
        at android.bluetooth.BluetoothHeadset.<init>(BluetoothHeadset.java:298)
        at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:1936)
        at io.agora.rtc.internal.AudioRoutingController.initialize(AudioRoutingController.java:668)
        at io.agora.rtc.internal.RtcEngineImpl.nativeObjectInit(Native Method)
        at io.agora.rtc.internal.RtcEngineImpl.<init>(RtcEngineImpl.java:174)
        at io.agora.rtc.RtcEngine.create(RtcEngine.java:59)
        at io.agora.tutorials1v1vcall.VideoChatViewActivity.initializeAgoraEngine(VideoChatViewActivity.java:177)
        at io.agora.tutorials1v1vcall.VideoChatViewActivity.initAgoraEngineAndJoinChannel(VideoChatViewActivity.java:79)
        at io.agora.tutorials1v1vcall.VideoChatViewActivity.onCreate(VideoChatViewActivity.java:74)
        at android.app.Activity.performCreate(Activity.java:6875)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6221)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

Anyway I will keep looking.

sudhirkhanger avatar Jul 09 '19 03:07 sudhirkhanger

Thanks. I found the root cause, internal sdk error, I believe we will fix this asap.

guohai avatar Jul 14 '19 06:07 guohai