Search Issue Tracker

Fixed in 2018.3.X

Fixed in 2017.4.X, 2019.1.X

Votes

28

Found in

2018.3.0b4

2018.3.2f1

Issue ID

1126040

Regression

Yes

[Android] App crashes when invoking Java Proxy while the app is in the background

Mobile

-

Repro steps:
1. Open QA attached project "repro_1126040""
2. Open scene "Sample Scene"
3. Build and Run on Android
4. Press the left button
5. Press the right button "Quit"

Actual: After some time the app crashes

Reproducible with: 2018.3.0b4, 2018.3.8f1, 2019.1.0b7, 2019.2.0a8
Not reproducible with: 2017.4.23f1, 2018.3.0b3

Tested and reproduced on these devices:
VLNQA00027, Xiaomi MI MAX (MI MAX), Android 7.0, CPU: Snapdragon 617 MSM8952, GPU: Adreno (TM) 510
VLNQA00150, Samsung Galaxy S9 (SM-G960U), Android 8.0.0, CPU: Snapdragon 845 SDM845, GPU: Adreno (TM) 630
VLNQA00078, Motorola Nexus 6 (Nexus 6), Android 7.1.1, CPU: Snapdragon 805 APQ8084AB, GPU: Adreno (TM) 420

Didn't reproduce on this device:
VLNQA00034, Lge Nexus 4 (Nexus 4), Android 5.1.1, CPU: Snapdragon S4 Pro APQ8064, GPU: Adreno (TM) 320

Fixed in: 2019.2.0a11
Backported to: 2017.4.26f1, 2018.3.13f1, 2019.1.0b11

Comments (5)

  1. jamieghosal

    Jan 06, 2022 09:51

    Steps:

    create dynamic proxy instance
    call native method and pass the proxy instance as a parameter
    use jni to invoke some method on proxy instance
    App code:

    val target = object : ProxyTest {
    override fun testVoid() {
    Log.e(TAG, "testVoid: ")
    }

    override fun testString(): String {
    Log.e(TAG, "testString: ")
    return "hello"
    }
    }

    val proxy = Proxy.newProxyInstance(
    classLoader, arrayOf(ProxyTest::class.java)
    ) { proxy, method, args ->
    // if open code below, it will crash on all device
    // if not open, it will crash only on android 6.0, mostly on Vivo Y67
    //val myargs = args ?: emptyArray()
    //method.invoke(target, *myargs)
    } as ProxyTest

    invokeProxyMethod(proxy)

    interface ProxyTest {
    fun testVoid()
    fun testString(): String
    }

    Native code:

    extern "C"
    JNIEXPORT void JNICALL
    Java_com_aprz_mytestdemo_jni_JNIInvokeProxyMethodActivity_invokeProxyMethod(JNIEnv *env,
    __unused jobject thiz,
    jobject proxy) {
    jclass proxy_class = env->GetObjectClass(proxy);
    // jmethodID test_void_method_id = env->GetMethodID(proxy_class, "testString", "()Ljava/lang/String;");
    jmethodID test_void_method_id = env->GetMethodID(proxy_class, "testVoid", "()V");
    LOGD("jmethodId = %d", test_void_method_id == nullptr);
    jvalue *args = {};
    jobject obj = env->NewLocalRef(proxy);
    env->CallVoidMethodA(obj, test_void_method_id, args);

  2. Nomibuilder

    Apr 10, 2019 05:25

    Couldn't find a fixture in Unity 2018.3.12
    When can we expect the newer version pleasE?

  3. pertz

    Apr 08, 2019 18:19

    2018.3.12f1 was just released and I cant find this issue on the release notes, so I guess the fix didnt make on this version

  4. toberr

    Mar 14, 2019 14:04

    "Not reproducible with: 2017.4.23f1, 2018.3.0b3"

    This is not entirely true. With 2018.3.0b3 we have in 5 times less crashes, but still have.
    $Proxy9.onAdLoaded
    LeMobile Le X829 and Xiaomi Mi A2
    $Proxy8.onAdFailedToLoad
    samsung SM-G361H
    $Proxy10.OnProductsRetrieved
    Sony G3313
    $Proxy9.onAdFailedToLoad
    samsung SM-J200GU
    $Proxy9.onAdLoaded
    OPPO CPH1803

Add comment

Log in to post comment