facebook-sdk-for-unity icon indicating copy to clipboard operation
facebook-sdk-for-unity copied to clipboard

Unity SDK v11/12/13 Login crashes on Android 12 - (1) Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE - or - (2) JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodA called with pending exception

Open iyakov opened this issue 3 years ago • 3 comments

Checklist

Environment

  • Unity Editor Version: 2018 LTS, 2019 LTS, 2020 LTS, 2021 LTS
  • Unity SDK Version: 11.0, 12.0, 13.2
  • Installation Platform & Version: Android version 12 API 31

Goals

I want to login into Facebook on Android 12 in my app compiled for API 31.

Expected Results

The app should not crash after you return from FB overlay after you login.

Actual Results

When I am trying to login, after Facebook login overlay hides, the app crashes. Please see Crash Log #1 below.

Related Issues

Similar issue seems was fixed in FB Android SDK versions 11.3.0+, however, FB Unity SDK v11 does not have this fix; and it is impossible to update native libraries (see below). https://github.com/facebook/facebook-android-sdk/issues/997

Steps to Reproduce

  • Create new empty Unity project
  • Import Facebook Unity SDK v11 unitypackage
  • Make sure you have a button with either FB.LogInWithReadPermissions or FB.LogInWithPublishPermissions
  • Setup and build the sample app with CompileSdkVersion 31 and TargetSdkVersion 31 for Android
  • Run the app on Android 12 device or emulator
    • Initialize FB
    • Log out (if was logged in)
    • Log in with either FB.LogInWithReadPermissions or FB.LogInWithPublishPermissions
    • FB overlay shows, enter name/password, and proceed
  • FB overlay hides
  • The app crashes!

Code Samples & Details

Use sample app code as the base from FB Unity SDK unitypackage v11.

Login button which calls either FB.LogInWithReadPermissions or FB.LogInWithPublishPermissions

// 1
FB.LogInWithReadPermissions(new[] { "email" }, this.HandleResult);
// 2
FB.LogInWithPublishPermissions(null, this.HandleResult);

Build.gradle file modification to build for Android 12

android {
    compileSdkVersion 31
    defaultConfig {
        targetSdkVersion 31

Attempts to fix

  1. First, I tried to update android sdk manually in gradle file like this:
dependencies {
    implementation(name: 'facebook-android-wrapper-11.0.0', ext:'aar')
    implementation 'com.facebook.android:facebook-core:11.3.0'
    implementation 'com.facebook.android:facebook-login:11.3.0'
    implementation 'com.facebook.android:facebook-share:11.3.0'
    implementation 'com.facebook.android:facebook-messenger:11.3.0'
    implementation 'com.facebook.android:facebook-applinks:11.3.0'
    implementation 'com.facebook.android:facebook-android-sdk:11.3.0'

It now crashes with JNI exception, please see Crash Log #2 below.

  1. Then, I tried versions 12.0.0, 12.3.0, 13.0.0. No luck. The same Crash Log #2 appears.

  2. Also, I noticed you have FB Unity SDK tagged sdk-version-12.0.0 here (but not released on the official website). So I tried to locally build FB Unity Android wrapper v12 and FB Unity SDK from the sdk-version-12.0.0. No luck, the same Crash Log #2.

  3. The issue persists with newer releases Unity SDK v13.2 and native SDK v14+.


I would be grateful to know when the fix will be release or steps to fix for manual build are provided. Thank you.


Crash logs

Crash log # 1 - FB Unity SDK v11 + FB Android SDK v11.0.0
2022-04-27 23:48:40.218 19025-19025/com.my.app D/AndroidRuntime: Shutting down VM
2022-04-27 23:48:40.227 19025-19025/com.my.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.my.app, PID: 19025
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.my.app/com.facebook.unity.FBUnityLoginActivity}: java.lang.IllegalArgumentException: com.my.app: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
    Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5301)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5340)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
        at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
        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:7839)
        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:1003)
     Caused by: java.lang.IllegalArgumentException: com.my.app: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
    Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
        at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
        at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
        at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
        at com.facebook.AccessTokenManager.setTokenExpirationBroadcastAlarm(AccessTokenManager.kt:108)
        at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:81)
        at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:49)
        at com.facebook.AccessToken$Companion.setCurrentAccessToken(AccessToken.kt:402)
        at com.facebook.AccessToken.setCurrentAccessToken(Unknown Source:2)
        at com.facebook.login.LoginManager.finishLogin(LoginManager.java:745)
        at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:244)
        at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:183)
        at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.kt:44)
        at com.facebook.unity.BaseActivity.onActivityResult(BaseActivity.java:51)
        at android.app.Activity.dispatchActivityResult(Activity.java:8382)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5294)
        	... 13 more
2022-04-27 23:48:40.275 19025-19025/com.my.app I/Process: Sending signal. PID: 19025 SIG: 9
Crash log # 2 - FB Unity SDK v11 + FB Android SDK v11.3.0 (or higher, e.g., 12.0.0, 12.3.0, 13.0.0)
2022-04-27 16:24:13.017 7664-7740/com.my.app A/myapp: java_vm_ext.cc:579] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodA called with pending exception java.lang.SecurityException: listen
    java_vm_ext.cc:579]   at java.lang.Exception android.os.Parcel.createExceptionOrNull(int, java.lang.String) (Parcel.java:2425)
    java_vm_ext.cc:579]   at java.lang.Exception android.os.Parcel.createException(int, java.lang.String) (Parcel.java:2409)
    java_vm_ext.cc:579]   at void android.os.Parcel.readException(int, java.lang.String) (Parcel.java:2392)
    java_vm_ext.cc:579]   at void android.os.Parcel.readException() (Parcel.java:2334)
    java_vm_ext.cc:579]   at void com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenWithEventList(int, java.lang.String, java.lang.String, com.android.internal.telephony.IPhoneStateListener, int[], boolean) (ITelephonyRegistry.java:1036)
    java_vm_ext.cc:579]   at void android.telephony.TelephonyRegistryManager.listenFromListener(int, java.lang.String, java.lang.String, android.telephony.PhoneStateListener, int, boolean) (TelephonyRegistryManager.java:250)
    java_vm_ext.cc:579]   at void android.telephony.TelephonyManager.listen(android.telephony.PhoneStateListener, int) (TelephonyManager.java:5999)
    java_vm_ext.cc:579]   at void com.unity3d.player.UnityPlayer.addPhoneCallListener() ((null):-1)
    java_vm_ext.cc:579]   at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
    java_vm_ext.cc:579]   at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
    java_vm_ext.cc:579]   at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
    java_vm_ext.cc:579]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
    java_vm_ext.cc:579]   at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
    java_vm_ext.cc:579]   at void android.os.Looper.loop() (Looper.java:288)
    java_vm_ext.cc:579]   at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
    java_vm_ext.cc:579] Caused by: android.os.RemoteException: Remote stack trace:
    java_vm_ext.cc:579] 	at com.android.internal.telephony.TelephonyPermissions.enforceCarrierPrivilege(TelephonyPermissions.java:634)
    java_vm_ext.cc:579] 	at com.android.internal.telephony.TelephonyPermissions.checkReadPhoneState(TelephonyPermissions.java:149)
    java_vm_ext.cc:579] 	at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadPhoneState(TelephonyPermissions.java:94)
    java_vm_ext.cc:579] 	at com.android.server.TelephonyRegistry.checkListenerPermission(TelephonyRegistry.java:3093)
    java_vm_ext.cc:579] 	at com.android.server.TelephonyRegistry.listen(TelephonyRegistry.java:1024)
    java_vm_ext.cc:579] 
    java_vm_ext.cc:579] (Throwable with no stack trace)
    java_vm_ext.cc:579] 
    java_vm_ext.cc:579]     in call to CallVoidMethodA
    java_vm_ext.cc:579]     from boolean com.unity3d.player.UnityPlayer.nativeRender()
2022-04-27 16:24:13.359 7664-7740/com.my.app A/myapp: runtime.cc:669] Runtime aborting...
    runtime.cc:669] Dumping all threads without mutator lock held
    runtime.cc:669] All threads:
    runtime.cc:669] DALVIK THREADS (34):
    runtime.cc:669] "UnityMain" prio=5 tid=30 Runnable
    runtime.cc:669]   | group="" sCount=0 ucsCount=0 flags=0 obj=0x132c1688 self=0x7376eae6ea80
    runtime.cc:669]   | sysTid=7740 nice=0 cgrp=top-app sched=0/0 handle=0x737507239cf0
    runtime.cc:669]   | state=R schedstat=( 16706654905 627949092 5162 ) utm=800 stm=870 core=3 HZ=100
    runtime.cc:669]   | stack=0x737507137000-0x737507139000 stackSize=1035KB
    runtime.cc:669]   | held mutexes= "abort lock" "mutator lock"(shared held)
    runtime.cc:669]   native: #00 pc 000000000073cd7f  /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+127)
    runtime.cc:669]   native: #01 pc 0000000000882570  /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+368)
    runtime.cc:669]   native: #02 pc 00000000008a32fa  /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+1082)
    runtime.cc:669]   native: #03 pc 000000000089c1ac  /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+220)
    runtime.cc:669]   native: #04 pc 000000000089b41b  /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+1723)
    runtime.cc:669]   native: #05 pc 000000000082271f  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2319)
    runtime.cc:669]   native: #06 pc 00000000000194ac  /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+60)
    runtime.cc:669]   native: #07 pc 0000000000018ac0  /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+352)
    runtime.cc:669]   native: #08 pc 000000000061c595  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2741)
    runtime.cc:669]   native: #09 pc 000000000061c5f5  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, __va_list_tag*)+85)
    runtime.cc:669]   native: #10 pc 000000000060da9f  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+191)
    runtime.cc:669]   native: #11 pc 000000000060c114  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+3380)
    runtime.cc:669]   native: #12 pc 000000000060aab1  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+705)
    runtime.cc:669]   native: #13 pc 000000000061070d  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+157)
    runtime.cc:669]   native: #14 pc 00000000006112b5  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodA(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, jvalue const*, art::Primitive::Type, art::InvokeType)+869)
    runtime.cc:669]   native: #15 pc 00000000005fdb4e  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue const*) (.llvm.6737952066654626722)+30)
    runtime.cc:669]   native: #16 pc 00000000001498af  /system/lib64/libndk_translation.so (ndk_translation::(anonymous namespace)::DoTrampoline_JNIEnv_CallVoidMethodV(void const*, ndk_translation::ProcessState*)+111)
2022-04-27 16:24:13.359 7664-7740/com.my.app A/myapp: runtime.cc:669]   native: #17 pc 00000000001bb803  <anonymous:737512612000> (???)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer.nativeRender(Native method)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer.access$300(unavailable:-1)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer$e$1.handleMessage(unavailable:-1)
    runtime.cc:669]   at android.os.Handler.dispatchMessage(Handler.java:102)
    runtime.cc:669]   at android.os.Looper.loopOnce(Looper.java:201)
    runtime.cc:669]   at android.os.Looper.loop(Looper.java:288)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer$e.run(unavailable:-1)
    runtime.cc:669] 
    runtime.cc:669] "main" prio=10 tid=1 Native
    runtime.cc:669]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x7176a578 self=0x7376eae16010
    runtime.cc:669]   | sysTid=7664 nice=-10 cgrp=top-app sched=0/0 handle=0x7378385e64f8
    runtime.cc:669]   | state=S schedstat=( 4111371823 455355693 1531 ) utm=171 stm=239 core=3 HZ=100
    runtime.cc:669]   | stack=0x7fffd8803000-0x7fffd8805000 stackSize=8188KB
    runtime.cc:669]   | held mutexes=
    runtime.cc:669]   native: #00 pc 000000000005adf6  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)
    runtime.cc:669]   native: #01 pc 0000000000425c9e  /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+110)
    runtime.cc:669]   native: #02 pc 0000000000957ac1  /apex/com.android.art/lib64/libart.so (art::GoToRunnable(art::Thread*)+401)
    runtime.cc:669]   native: #03 pc 00000000009578ff  /apex/com.android.art/lib64/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+15)
    runtime.cc:669]   at android.graphics.HardwareRenderer.nSyncAndDrawFrame(Native method)
    runtime.cc:669]   at android.graphics.HardwareRenderer.syncAndDrawFrame(HardwareRenderer.java:457)
    runtime.cc:669]   at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:634)
    runtime.cc:669]   at android.view.ViewRootImpl.draw(ViewRootImpl.java:4421)
    runtime.cc:669]   at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4149)
    runtime.cc:669]   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3309)
    runtime.cc:669]   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2126)
    runtime.cc:669]   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8653)
    runtime.cc:669]   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
    runtime.cc:669]   at android.view.Choreographer.doCallbacks(Choreographer.java:845)
    runtime.cc:669]   at android.view.Choreographer.doFrame(Choreographer.java:780)
    runtime.cc:669]   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
    runtime.cc:669]   at android.os.Handler.handleCallback(Handler.java:938)
    runtime.cc:669]   at android.os.Handler.dispatchMessage(Handler.java:99)
    runtime.cc:669]   at android.os.Looper.loopOnce(Looper.java:201)
    runtime.cc:669]   at android.os.Looper.loop(Looper.java:288)
    runtime.cc:669]   at android.app.ActivityThread.main(ActivityThread.java:7839)
    runtime.cc:669]   at java.lang.reflect.Method.invoke(Native method)
    runtime.cc:669]   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    runtime.cc:669]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
    
    [...]
    
    runtime.cc:669] Aborting thread:
    runtime.cc:669] "UnityMain" prio=5 tid=30 Native
    runtime.cc:669]   | group="" sCount=0 ucsCount=0 flags=0 obj=0x132c1688 self=0x7376eae6ea80
    runtime.cc:669]   | sysTid=7740 nice=0 cgrp=top-app sched=0/0 handle=0x737507239cf0
    runtime.cc:669]   | state=R schedstat=( 16833195185 685394840 5329 ) utm=804 stm=878 core=0 HZ=100
    runtime.cc:669]   | stack=0x737507137000-0x737507139000 stackSize=1035KB
    runtime.cc:669]   | held mutexes= "abort lock"
    runtime.cc:669]   native: #00 pc 000000000073cd7f  /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+127)
2022-04-27 16:24:13.360 7664-7740/com.my.app A/myapp: runtime.cc:669]   native: #01 pc 0000000000882570  /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+368)
    runtime.cc:669]   native: #02 pc 000000000083a2b9  /apex/com.android.art/lib64/libart.so (art::AbortState::DumpThread(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, art::Thread*) const+57)
    runtime.cc:669]   native: #03 pc 0000000000822802  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2546)
    runtime.cc:669]   native: #04 pc 00000000000194ac  /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+60)
    runtime.cc:669]   native: #05 pc 0000000000018ac0  /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+352)
    runtime.cc:669]   native: #06 pc 000000000061c595  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2741)
    runtime.cc:669]   native: #07 pc 000000000061c5f5  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, __va_list_tag*)+85)
    runtime.cc:669]   native: #08 pc 000000000060da9f  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+191)
    runtime.cc:669]   native: #09 pc 000000000060c114  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+3380)
    runtime.cc:669]   native: #10 pc 000000000060aab1  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+705)
    runtime.cc:669]   native: #11 pc 000000000061070d  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+157)
    runtime.cc:669]   native: #12 pc 00000000006112b5  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodA(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, jvalue const*, art::Primitive::Type, art::InvokeType)+869)
    runtime.cc:669]   native: #13 pc 00000000005fdb4e  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue const*) (.llvm.6737952066654626722)+30)
    runtime.cc:669]   native: #14 pc 00000000001498af  /system/lib64/libndk_translation.so (ndk_translation::(anonymous namespace)::DoTrampoline_JNIEnv_CallVoidMethodV(void const*, ndk_translation::ProcessState*)+111)
    runtime.cc:669]   native: #15 pc 00000000001bb803  <anonymous:737512612000> (???)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer.nativeRender(Native method)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer.access$300(unavailable:-1)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer$e$1.handleMessage(unavailable:-1)
    runtime.cc:669]   at android.os.Handler.dispatchMessage(Handler.java:102)
    runtime.cc:669]   at android.os.Looper.loopOnce(Looper.java:201)
    runtime.cc:669]   at android.os.Looper.loop(Looper.java:288)
    runtime.cc:669]   at com.unity3d.player.UnityPlayer$e.run(unavailable:-1)
    runtime.cc:669] Pending exception java.lang.SecurityException: listen
    runtime.cc:669]   at java.lang.Exception android.os.Parcel.createExceptionOrNull(int, java.lang.String) (Parcel.java:2425)
    runtime.cc:669]   at java.lang.Exception android.os.Parcel.createException(int, java.lang.String) (Parcel.java:2409)
    runtime.cc:669]   at void android.os.Parcel.readException(int, java.lang.String) (Parcel.java:2392)
    runtime.cc:669]   at void android.os.Parcel.readException() (Parcel.java:2334)
2022-04-27 16:24:13.360 7664-7740/com.my.app A/myapp: runtime.cc:669]   at void com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenWithEventList(int, java.lang.String, java.lang.String, com.android.internal.telephony.IPhoneStateListener, int[], boolean) (ITelephonyRegistry.java:1036)
    runtime.cc:669]   at void android.telephony.TelephonyRegistryManager.listenFromListener(int, java.lang.String, java.lang.String, android.telephony.PhoneStateListener, int, boolean) (TelephonyRegistryManager.java:250)
    runtime.cc:669]   at void android.telephony.TelephonyManager.listen(android.telephony.PhoneStateListener, int) (TelephonyManager.java:5999)
    runtime.cc:669]   at void com.unity3d.player.UnityPlayer.addPhoneCallListener() ((null):-1)
    runtime.cc:669]   at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
    runtime.cc:669]   at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
    runtime.cc:669]   at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
    runtime.cc:669]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
    runtime.cc:669]   at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
    runtime.cc:669]   at void android.os.Looper.loop() (Looper.java:288)
    runtime.cc:669]   at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
    runtime.cc:669] Caused by: android.os.RemoteException: Remote stack trace:
    runtime.cc:669] 	at com.android.internal.telephony.TelephonyPermissions.enforceCarrierPrivilege(TelephonyPermissions.java:634)
    runtime.cc:669] 	at com.android.internal.telephony.TelephonyPermissions.checkReadPhoneState(TelephonyPermissions.java:149)
    runtime.cc:669] 	at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadPhoneState(TelephonyPermissions.java:94)
    runtime.cc:669] 	at com.android.server.TelephonyRegistry.checkListenerPermission(TelephonyRegistry.java:3093)
    runtime.cc:669] 	at com.android.server.TelephonyRegistry.listen(TelephonyRegistry.java:1024)
    runtime.cc:669] 
    runtime.cc:669] (Throwable with no stack trace)
    runtime.cc:669] 
2022-04-27 16:24:13.361 7664-7740/com.my.app A/myapp: runtime.cc:677] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodA called with pending exception java.lang.SecurityException: listen
    runtime.cc:677]   at java.lang.Exception android.os.Parcel.createExceptionOrNull(int, java.lang.String) (Parcel.java:2425)
    runtime.cc:677]   at java.lang.Exception android.os.Parcel.createException(int, java.lang.String) (Parcel.java:2409)
    runtime.cc:677]   at void android.os.Parcel.readException(int, java.lang.String) (Parcel.java:2392)
    runtime.cc:677]   at void android.os.Parcel.readException() (Parcel.java:2334)
    runtime.cc:677]   at void com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenWithEventList(int, java.lang.String, java.lang.String, com.android.internal.telephony.IPhoneStateListener, int[], boolean) (ITelephonyRegistry.java:1036)
    runtime.cc:677]   at void android.telephony.TelephonyRegistryManager.listenFromListener(int, java.lang.String, java.lang.String, android.telephony.PhoneStateListener, int, boolean) (TelephonyRegistryManager.java:250)
    runtime.cc:677]   at void android.telephony.TelephonyManager.listen(android.telephony.PhoneStateListener, int) (TelephonyManager.java:5999)
    runtime.cc:677]   at void com.unity3d.player.UnityPlayer.addPhoneCallListener() ((null):-1)
    runtime.cc:677]   at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
    runtime.cc:677]   at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
    runtime.cc:677]   at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
    runtime.cc:677]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
    runtime.cc:677]   at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
    runtime.cc:677]   at void android.os.Looper.loop() (Looper.java:288)
    runtime.cc:677]   at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
    runtime.cc:677] Caused by: android.os.RemoteException: Remote stack trace:
    runtime.cc:677] 	at com.android.internal.telephony.TelephonyPermissions.enforceCarrierPrivilege(TelephonyPermissions.java:634)
    runtime.cc:677] 	at com.android.internal.telephony.TelephonyPermissions.checkReadPhoneState(TelephonyPermissions.java:149)
    runtime.cc:677] 	at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadPhoneState(TelephonyPermissions.java:94)
    runtime.cc:677] 	at com.android.server.TelephonyRegistry.checkListenerPermission(TelephonyRegistry.java:3093)
    runtime.cc:677] 	at com.android.server.TelephonyRegistry.listen(TelephonyRegistry.java:1024)
    runtime.cc:677] 
    runtime.cc:677] (Throwable with no stack trace)
    runtime.cc:677] 
    runtime.cc:677]     in call to CallVoidMethodA
    runtime.cc:677]     from boolean com.unity3d.player.UnityPlayer.nativeRender()
    
    --------- beginning of crash
2022-04-27 16:24:13.361 7664-7740/com.my.app A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 7740 (UnityMain), pid 7664 (myappd)

iyakov avatar Apr 28 '22 18:04 iyakov

We've the same issue, please could you release the final 12.0.0 unity SDK ?

adrianeui avatar May 02 '22 12:05 adrianeui

Hi, try to replace the content of your "Assets/FacebookSDK/Plugins/Editor/Dependencies.xml" with this: https://github.com/facebook/facebook-sdk-for-unity/blob/main/UnitySDK/Assets/FacebookSDK/Plugins/Editor/Dependencies.xml I had the same issue with PENDING_INTENT and API 31 target and this fixed it.

tomasd-ecorush avatar May 04 '22 16:05 tomasd-ecorush

The issue persists in SDK v12 and v13.2 unitypackage releases.

iyakov avatar Jun 23 '22 09:06 iyakov

Update: the issue was caused by a bug in Unity when it tries to enable/disable audio on app pause/resume. Fixed in the latest versions.

iyakov avatar Sep 13 '22 08:09 iyakov

I went through the Unity changelogs and find this bug ticket - not sure if this is what @iyakov mentioned above, but it looks similar. (Check the version where it is applied in the ticket)

Android: Fixed an Android audio crash when targeting API Level 31 and running on an Android 12 device. Also fixed an AudioManager.GetStreamVolume exception when targeting API Level 29 or later, which caused the AudioSettings.Mobile.stopAudioOutputOnMute feature to not work correctly, if enabled. (UUM-5652)

daltonbr avatar Nov 10 '22 08:11 daltonbr