Skip to content

[bug] Screenshare freezes the app #997

@devbrisk

Description

@devbrisk

Describe the bug
setScreenShareEnabled causes the application to freeze. Sometimes it happens even the first time it’s called, and in other cases the app freezes after, for example, enabling and disabling screen sharing around 10 times. it freezes the app randomly between 1 or 20 call setScreenShareEnabled!

To Reproduce
await MeetUtils().requestBackgroundPermission();
await lp.setScreenShareEnabled(true, captureScreenAudio: true);
await Navigator.of(context).pushNamed('/paint');
await lp.setScreenShareEnabled(false, captureScreenAudio: false);
await FlutterBackground.disableBackgroundExecution();

Expected behavior
Enable or disable as user needs, without freeze

Platform information

  • Flutter version: 3.41.1
  • Plugin version: 2.6.3
  • Flutter target OS: Android
  • Flutter target OS version: 14
  • Flutter console log:

W/MIUIScout App(27277): Enter APP_SCOUT_WARNING State
W/MIUIScout App(27277): (Current message: duration=2502ms seq=2460 late=6ms h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0)
W/MIUIScout App(27277): Event:APP_SCOUT_WARNING Thread:main backtrace:
W/MIUIScout App(27277): at jdk.internal.misc.Unsafe.park(Native Method)
W/MIUIScout App(27277): at java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
W/MIUIScout App(27277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
W/MIUIScout App(27277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
W/MIUIScout App(27277): at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils$2.run(ThreadUtils.java:118)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.executeUninterruptibly(ThreadUtils.java:68)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.awaitUninterruptibly(ThreadUtils.java:115)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.invokeAtFrontUninterruptibly(ThreadUtils.java:180)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.invokeAtFrontUninterruptibly(ThreadUtils.java:196)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.OrientationAwareScreenCapturer.stopCapture(OrientationAwareScreenCapturer.java:140)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.GetUserMediaImpl.removeVideoCapturer(GetUserMediaImpl.java:845)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.MethodCallHandlerImpl.trackDispose(MethodCallHandlerImpl.java:1735)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.MethodCallHandlerImpl.onMethodCall(MethodCallHandlerImpl.java:644)
W/MIUIScout App(27277): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
W/MIUIScout App(27277): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:286)
W/MIUIScout App(27277): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:313)
W/MIUIScout App(27277): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
W/MIUIScout App(27277): at android.os.Handler.handleCallback(Handler.java:958)
W/MIUIScout App(27277): at android.os.Handler.dispatchMessage(Handler.java:99)
W/MIUIScout App(27277): at android.os.Looper.loopOnce(Looper.java:224)
W/MIUIScout App(27277): at android.os.Looper.loop(Looper.java:318)
W/MIUIScout App(27277): at android.app.ActivityThread.main(ActivityThread.java:8790)
W/MIUIScout App(27277): at java.lang.reflect.Method.invoke(Native Method)
W/MIUIScout App(27277): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
W/MIUIScout App(27277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
I/test.vg(27277): Thread[2,tid=32048,WaitingInMainSignalCatcherLoop,Thread*=0xb4000071e7a19000,peer=0x30c02c8,"Signal Catcher"]: reacting to signal 3
I/test.vg(27277):
I/test.vg(27277): Wrote stack traces to tombstoned
W/MIUIScout App(27277): Enter APP_SCOUT_HANG state
W/MIUIScout App(27277): (Current message: duration=5003ms seq=2460 late=6ms h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0)
W/MIUIScout App(27277): Event:APP_SCOUT_HANG Thread:main backtrace:
W/MIUIScout App(27277): at jdk.internal.misc.Unsafe.park(Native Method)
W/MIUIScout App(27277): at java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
W/MIUIScout App(27277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
W/MIUIScout App(27277): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
W/MIUIScout App(27277): at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils$2.run(ThreadUtils.java:118)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.executeUninterruptibly(ThreadUtils.java:68)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.awaitUninterruptibly(ThreadUtils.java:115)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.invokeAtFrontUninterruptibly(ThreadUtils.java:180)
W/MIUIScout App(27277): at org.webrtc.ThreadUtils.invokeAtFrontUninterruptibly(ThreadUtils.java:196)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.OrientationAwareScreenCapturer.stopCapture(OrientationAwareScreenCapturer.java:140)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.GetUserMediaImpl.removeVideoCapturer(GetUserMediaImpl.java:845)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.MethodCallHandlerImpl.trackDispose(MethodCallHandlerImpl.java:1735)
W/MIUIScout App(27277): at com.cloudwebrtc.webrtc.MethodCallHandlerImpl.onMethodCall(MethodCallHandlerImpl.java:644)
W/MIUIScout App(27277): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
W/MIUIScout App(27277): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:286)
W/MIUIScout App(27277): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:313)
W/MIUIScout App(27277): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
W/MIUIScout App(27277): at android.os.Handler.handleCallback(Handler.java:958)
W/MIUIScout App(27277): at android.os.Handler.dispatchMessage(Handler.java:99)
W/MIUIScout App(27277): at android.os.Looper.loopOnce(Looper.java:224)
W/MIUIScout App(27277): at android.os.Looper.loop(Looper.java:318)
W/MIUIScout App(27277): at android.app.ActivityThread.main(ActivityThread.java:8790)
W/MIUIScout App(27277): at java.lang.reflect.Method.invoke(Native Method)
W/MIUIScout App(27277): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
W/MIUIScout App(27277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
I/test.vg(27277): Thread[2,tid=32048,WaitingInMainSignalCatcherLoop,Thread*=0xb4000071e7a19000,peer=0x30c02c8,"Signal Catcher"]: reacting to signal 3
I/test.vg(27277):
I/test.vg(27277): Wrote stack traces to tombstoned
W/MIUIScout ANR(27277): AnrScout only want msg within 20s, so stop here
W/MIUIScout ANR(27277): There is no history msgs within 20s
W/MIUIScout ANR(27277): Print Message Id: 0 MessageInfo: { when=-20s10ms what=116 obj=android.os.BinderProxy@4591c6c target=android.app.ActivityThread$H }
W/MIUIScout ANR(27277): Print Message Id: 1 MessageInfo: { when=-20s5ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): Print Message Id: 2 MessageInfo: { when=-20s2ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): Print Message Id: 3 MessageInfo: { when=-20s2ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): Print Message Id: 4 MessageInfo: { when=-20s2ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): (Print messages: 5, polling=false, quitting=false)
I/test.vg(27277): Thread[2,tid=32048,WaitingInMainSignalCatcherLoop,Thread*=0xb4000071e7a19000,peer=0x30c02c8,"Signal Catcher"]: reacting to signal 3
I/test.vg(27277):
I/test.vg(27277): Wrote stack traces to tombstoned
I/test.vg(27277): Thread[2,tid=32048,WaitingInMainSignalCatcherLoop,Thread*=0xb4000071e7a19000,peer=0x30c02c8,"Signal Catcher"]: reacting to signal 3
I/test.vg(27277):
I/test.vg(27277): Wrote stack traces to tombstoned
W/MIUIScout ANR(27277): AnrScout only want msg within 20s, so stop here
W/MIUIScout ANR(27277): There is no history msgs within 20s
W/MIUIScout ANR(27277): Print Message Id: 0 MessageInfo: { when=-2m18s882ms what=116 obj=android.os.BinderProxy@4591c6c target=android.app.ActivityThread$H }
W/MIUIScout ANR(27277): Print Message Id: 1 MessageInfo: { when=-2m18s877ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): Print Message Id: 2 MessageInfo: { when=-2m18s874ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): Print Message Id: 3 MessageInfo: { when=-2m18s874ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): Print Message Id: 4 MessageInfo: { when=-2m18s874ms callback=android.media.ImageReader$1 target=android.media.ImageReader$ListenerHandler }
W/MIUIScout ANR(27277): (Print messages: 5, polling=false, quitting=false)
I/test.vg(27277): Thread[2,tid=32048,WaitingInMainSignalCatcherLoop,Thread*=0xb4000071e7a19000,peer=0x30c02c8,"Signal Catcher"]: reacting to signal 3
I/test.vg(27277):
I/test.vg(27277): Wrote stack traces to tombstoned

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions