Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice

Bug [libil2cpp.so] il2cpp::os::Image::GetELFImageBuildID()

Discussion in 'Android' started by trooper, Jun 29, 2023.

  1. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    We're chasing down a segfault that might be caused by 2022.3.0f1

    It kind of looks similar to this (we are also using ironsource): https://forum.unity.com/threads/lot...etclass-il2cppobject-2021-3-19f1-lts.1403710/


    backtrace:
    #00 pc 0x0000000001111124 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID())
    #01 pc 0x000000000116cc58 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+132)
    #02 pc 0x0000000000506799 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x00000000005120d5 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x000000000025263f /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (DebugLogHandler::Internal_LogException(ScriptingObjectPtr, Object*))
    #05 pc 0x000000000025260d /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (DebugLogHandler_CUSTOM_Internal_LogException(ScriptingBackendNativeObjectPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*))
    #06 pc 0x0000000003eb43d0 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (UnityLogHandlerIntegration_LogException_m23CB511805A3C839541A9868BC1FD148CF9A9E47)
    #07 pc 0x00000000046a0ba0 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (Debug_CallOverridenDebugHandler_mB78E42B7792823F50830A325BB1CF50C45FEAA8B)
    #08 pc 0x0000000000fd2790 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (RuntimeInvoker_FalseByte_t94D9231AC217BE4D2E004C4CD32DF6D099EA41A3_RuntimeObject_RuntimeObject(void (*)(), MethodInfo const*, void*, void**, void*))
    #09 pc 0x000000000118121c /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (il2cpp::vm::Runtime::InvokeWithThrow(MethodInfo const*, void*, void**))
    #10 pc 0x00000000011810c0 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libil2cpp.so (il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**))
    #11 pc 0x0000000000506161 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool))
    #12 pc 0x00000000005109bd /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool))
    #13 pc 0x0000000000512d3f /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (bool ScriptingInvocation::Invoke<bool>(ScriptingExceptionPtr*, bool))
    #14 pc 0x000000000058bbdb /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (Scripting::UnityEngine::DebugProxy::CallOverridenDebugHandler(ScriptingObjectPtr, Scripting::UnityEngine::ObjectProxy, ScriptingExceptionPtr*))
    #15 pc 0x000000000051124b /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #16 pc 0x00000000005109e3 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool))
    #17 pc 0x000000000051a38d /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (MonoBehaviour::CallUpdateMethod(int))
    #18 pc 0x000000000039cdeb /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (void BaseBehaviourManager::CommonUpdate<FixedBehaviourManager>())
    #19 pc 0x00000000004381e7 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #20 pc 0x0000000000438209 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #21 pc 0x00000000004383eb /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (PlayerLoop())
    #22 pc 0x0000000000565333 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (UnityPlayerLoop())
    #23 pc 0x0000000000578a17 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/lib/arm/libunity.so (nativeRender(_JNIEnv*, _jobject*))
    #24 pc 0x00000000003c1b9d /apex/com.android.art/lib/libart.so (art_quick_generic_jni_trampoline+44)
    #25 pc 0x00000000000f0dec /apex/com.android.art/lib/libart.so (nterp_helper+2908)
    #26 pc 0x0000000000e565c4 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/oat/arm/base.vdex (com.unity3d.player.UnityPlayer.-$$Nest$mnativeRender)
    #27 pc 0x00000000000f02c8 /apex/com.android.art/lib/libart.so (nterp_helper+56)
    #28 pc 0x0000000001615f28 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/oat/arm/base.vdex (com.unity3d.player.UnityPlayer$C$a.handleMessage+244)
    #29 pc 0x0000000000ae102b /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.os.Handler.dispatchMessage+122)
    #30 pc 0x0000000000ae46a7 /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.os.Looper.loopOnce+886)
    #31 pc 0x0000000000ae424b /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.os.Looper.loop+1034)
    #32 pc 0x00000000000f033c /apex/com.android.art/lib/libart.so (nterp_helper+172)
    #33 pc 0x00000000006bc6b8 /data/app/~~7P2d5EO1SbsxSxi4F9JLng==/au.com.oddgames.monstertruckdestruction-MFHOw1mX5yJ8OkHOrISBfA==/oat/arm/base.vdex (com.unity3d.player.UnityPlayer$C.run+48)
    #34 pc 0x00000000003bd1d5 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
    #35 pc 0x00000000003bcc77 /apex/com.android.art/lib/libart.so (void art::quick_invoke_reg_setup<false>(art::ArtMethod*, unsigned int*, unsigned int, art::Thread*, art::JValue*, char const*) (.__uniq.192663596067446536341070919852553954320.llvm.16200230356545185596)+158)
    #36 pc 0x000000000028a4c5 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
    #37 pc 0x0000000000313969 /apex/com.android.art/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) (.__uniq.245181933781456475607640333933569312899.llvm.2586733929373010981)+40)
    #38 pc 0x0000000000313875 /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+164)
    #39 pc 0x000000000033a3af /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+42)
    #40 pc 0x00000000002f0625 /apex/com.android.art/lib/libart.so (art::Thread::CreateCallback(void*)+416)
    #41 pc 0x00000000000804c7 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40)
    #42 pc 0x0000000000039745 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)
     
  2. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Is the crash consistent or intermittent? The GetELFImageBuildID method is attempting to introspect the loaded images in the executable and find the build ID for each one, so that build ID can be synced up with debug symbols.

    I suspect there is some case we missed during image processing which causes this crash.
     
  3. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    I can't cause it on my test devices, it's only coming from google play at around 1% of sessions. So it's fairly common.

    Through sentry i receive the original exception, then afterwards I get that crash log as a seperate error.
     
  4. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Is there any pattern to the device or OS versions where this happens?
     
  5. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    No pattern really, I've completely removed sentry to make sure that isn't messing it and it isn't.

    The biggest changes between builds was updating ironsource mediation adpaters and moving from Unity 2021 to 2022.3.0 I've since updated iron source adapters again and removed some of them (no change) and Im about to try 2022.3.4


    upload_2023-6-29_19-29-25.png upload_2023-6-29_19-29-34.png
     
  6. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Ok, please keep me updated on the results of any experiments you try. There is definitely a problem here - this code should never crash. But I'm not yet sure what could cause it.
     
  7. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    2022.3.4 didn't help, apart from just removing that if statement at line 89 in Image.cpp (which I have no idea what that will do) im out of ideas
     
  8. NoPants_

    NoPants_

    Joined:
    Apr 23, 2014
    Posts:
    59
    I think I'm actually seeing the same issue. Upgrading to 2022.3.4 also didn't help. I think I'll try downgrading back to 2021 and see if that resolves it.
     
  9. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Which if statement is that? Is it this one?

    Code (CSharp):
    1. if (nhdr->n_type == NT_GNU_BUILD_ID)
     
  10. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    Yes that's the line sentry is reporting as the issue, I haven't actually removed it and tested it, I was just assuming that's something I could do
     
  11. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Ahh, ok, I see that in the screen shot now. I don't think that can be removed. But you could add another check there. Maybe nhdr is NULL for some reason.

    Can you try changing that line to this?

    Code (CSharp):
    1. if (nhdr != NULL && nhdr->n_type == NT_GNU_BUILD_ID)
    I wonder if that will mitigate the crashes.
     
  12. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    Didn't make a difference, still getting them come through
     
  13. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    I'm not sure where to look then to find the cause.

    Even though you cannot reproduce this locally, can you submit a bug report? Maybe we can try different devices or some other stress test workflow to reproduce it.
     
  14. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    My current fix for this is to not allow exceptions to be raised so make sure the game is bug free :/
     
  15. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Ok, if you happen to notice that this is reproducible, please respond here again. I'd love to understand what is happening.
     
  16. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    I sent a report in but I'm not able to attach my project and currently can't build a reproducible #46678, i just attached an apk.
     
  17. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Ok we will see what we can do. We may need a way to reproduce this one.
     
  18. Alan-Liu

    Alan-Liu

    Joined:
    Jan 23, 2014
    Posts:
    391
    What is the fault addr of these crashes?
    I saw the crash in the first post happened on an ARMv7 device. Did the crash also happen on ARM64 devices, or it happens on ARMv7 only?
     
  19. Alan-Liu

    Alan-Liu

    Joined:
    Jan 23, 2014
    Posts:
    391
    Looking into the implementation of
    GetELFImageBuildID
    , multiple
    Elf_Note
    s are considered to be contiguous:
    Code (CSharp):
    1. void GetELFImageBuildID(char* build_id)
    2. {
    3.     // ...
    4.  
    5.     size_t nhdr_ptr = phdr[i].p_offset + imageBase;
    6.     int j = 0;
    7.     while (nhdr_ptr < imageBase + phdr[i].p_offset + phdr[i].p_memsz)
    8.     {
    9.         ElfW(Nhdr) * nhdr = (ElfW(Nhdr) *)nhdr_ptr;
    10.         if (nhdr->n_type == NT_GNU_BUILD_ID)
    11.         {
    12.             char* image_build_id = (char *)((size_t)nhdr + sizeof(ElfW(Nhdr)) + nhdr->n_namesz);
    13.             for (int j = 0; j < nhdr->n_descsz; j++)
    14.             {
    15.                 snprintf(&build_id[j * 2], 3, "%02x", image_build_id[j]);
    16.             }
    17.             return;
    18.         }
    19.         nhdr_ptr += sizeof(ElfW(Nhdr)) + nhdr->n_descsz + nhdr->n_namesz;
    20.     }
    21. }
    But according to the comment of
    Elf_Note
    and a documentation, there may be some padding bytes between them:
    Code (CSharp):
    1. /*
    2.  * Note header.  The ".note" section contains an array of notes.  Each
    3.  * begins with this header, aligned to a word boundary.  Immediately
    4.  * following the note header is n_namesz bytes of name, padded to the
    5.  * next word boundary.  Then comes n_descsz bytes of descriptor, again
    6.  * padded to a word boundary.  The values of n_namesz and n_descsz do
    7.  * not include the padding.
    8.  */
    9. typedef struct {
    10.     uint32_t    n_namesz;    /* Length of name. */
    11.     uint32_t    n_descsz;    /* Length of descriptor. */
    12.     uint32_t    n_type;        /* Type of this note. */
    13. } Elf_Note;
    14.  
    If
    n_namesz
    or
    n_descsz
    happens to need some padding bytes,
    nhdr
    may become an address that's not aligned to 4 bytes. When running
    nhdr->n_type
    on ARMv7 devices, application will crash due to unaligned memory access.

    This is just my speculation, hope it's helpful to investigate the crash further.

    UPDATE:
    Based on the speculation above, I created a minimal repro project: IN-49426. It can reproduce the following crash:
     
    Last edited: Jul 29, 2023
    naornissim1991 likes this.
  20. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Thank you for those details! And thanks for the case to reproduce this. I've asked our QA team to collapse these two bug reports IN-49426 and IN-46678 into one report. Then we can correct this.
     
    naornissim1991 and Alan-Liu like this.
  21. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    Got a link where we can track when this gets fixed?
     
  22. Alan-Liu

    Alan-Liu

    Joined:
    Jan 23, 2014
    Posts:
    391
    The bug report is still under review by Unity QA. I'll post the public link here once it gets confirmed by Unity.
     
  23. jperry_oddgames

    jperry_oddgames

    Joined:
    Sep 18, 2017
    Posts:
    62
    @JoshPeterson
    We've come across another instance of this crash in
    GetELFImageBuildID
    . This one has a different stack trace but I assume it's the same underlying issue and will hopefully help.
    We had upgraded the project to use Unity 2023.1.8f1 and the new GameActivity for android (as seen in the trace below). This one also seems a lot more prevalent than the previous crash, though we're still not seeing it on our test devices.

    Code (CSharp):
    1. backtrace:
    2.   #00  pc 0x0000000001509e94  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libil2cpp.so (il2cpp::os::Image::GetELFImageBuildID())
    3.   #01  pc 0x000000000150f2f4  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libil2cpp.so (il2cpp::utils::DebugSymbolReader::LoadDebugSymbols())
    4.   #02  pc 0x000000000152f6c0  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libil2cpp.so (il2cpp::vm::Runtime::Init(char const*))
    5.   #03  pc 0x00000000014d4044  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libil2cpp.so (il2cpp_init+28)
    6.   #04  pc 0x00000000004b58d9  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libunity.so (InitializeIl2CppFromMain(core::basic_string<char, core::StringStorageDefault<char>> const&, core::basic_string<char, core::StringStorageDefault<char>> const&, int, char const**, bool))
    7.   #05  pc 0x00000000004feebf  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libunity.so (UnityInitApplication())
    8.   #06  pc 0x0000000000521719  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libunity.so (UnityGameActivityInitializeRuntime())
    9.   #07  pc 0x000000000000b6c3  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libgame.so (Unity::UnityApplication::OnApplicationCommand(android_app*, int)+234)
    10.   #08  pc 0x0000000000012613  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libgame.so (process_cmd+189)
    11.   #09  pc 0x000000000000babb  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libgame.so (Unity::UnityApplication::Loop()+321)
    12.   #10  pc 0x000000000000d5cf  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libgame.so (android_main+49)
    13.   #11  pc 0x0000000000012545  /data/app/au.com.oddgames.monstertruckdestruction-FJPvK0uBqvN1T3TlikU4Vw==/lib/arm/libgame.so (android_app_entry+236)
     
    JoshPeterson likes this.
  24. Alan-Liu

    Alan-Liu

    Joined:
    Jan 23, 2014
    Posts:
    391
  25. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    @JoshPeterson we recently upgraded to Unity 2022.3.6f1 - 2022.3.8f1 and GetELFImageBuildID() has become the top crash reason in Google Play for us

    upload_2023-9-6_19-24-51.png

    My 2 questions are :

    1. Is there a bigger underlying reason for this - e.g. are the users doing something shady? ( E.g. trying to modify the game? )
    2. When do you estimate the fix to be released? As this is affecting a lot of our players. Apparently over 44% affected users.

    A few stacktraces :
    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    pid: 0, tid: 12632 >>> com.org.gamename <<<

    backtrace:
    #00 pc 0x0000000000a5405c /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID()+89)
    #01 pc 0x0000000000a45294 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+618)
    #02 pc 0x00000000005065b1 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x0000000000511eed /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x0000000000511083 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #05 pc 0x00000000002c45f1 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/lib/arm/libunity.so (UnityJavaProxy_LogJNIInvokeException(_JNIEnv*, _jobject*, long long))
    #06 pc 0x0000000000071ce7 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/oat/arm/base.odex (com.unity3d.player.ReflectionHelper.nativeProxyFinalize [DEDUPED]+102)
    #07 pc 0x000000000040ed75 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
    #08 pc 0x00000000003e830b /system/lib/libart.so (art_quick_invoke_static_stub+222)
    #09 pc 0x00000000000a1427 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+154)
    #10 pc 0x00000000001e6691 /system/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+236)
    #11 pc 0x00000000001e117f /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+814)
    #12 pc 0x00000000003e3e3f /system/lib/libart.so (MterpInvokeStatic+130)
    #13 pc 0x0000000000401d14 /system/lib/libart.so (ExecuteMterpImpl+14612)
    #14 pc 0x00000000001d3b0c /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/oat/arm/base.vdex (com.unity3d.player.ReflectionHelper.-$$Nest$smnativeProxyLogJNIInvokeException)
    #15 pc 0x00000000001c58fb /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2130134057)+378)
    #16 pc 0x00000000001c9fe1 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+152)
    #17 pc 0x00000000001e1167 /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+790)
    #18 pc 0x00000000003e3e3f /system/lib/libart.so (MterpInvokeStatic+130)
    #19 pc 0x0000000000401d14 /system/lib/libart.so (ExecuteMterpImpl+14612)
    #20 pc 0x00000000001d3a52 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/oat/arm/base.vdex (com.unity3d.player.ReflectionHelper$a.invoke+110)
    #21 pc 0x00000000001c58fb /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2130134057)+378)
    #22 pc 0x00000000001c9f27 /system/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+82)
    #23 pc 0x00000000003d6949 /system/lib/libart.so (artQuickToInterpreterBridge+880)
    #24 pc 0x00000000004132ff /system/lib/libart.so (art_quick_to_interpreter_bridge+30)
    #25 pc 0x00000000002216d5 /system/framework/arm/boot.oat (java.lang.reflect.Proxy.invoke+68)
    #26 pc 0x000000000040ed75 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
    #27 pc 0x00000000003e830b /system/lib/libart.so (art_quick_invoke_static_stub+222)
    #28 pc 0x00000000000a1427 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+154)
    #29 pc 0x000000000034884d /system/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+52)
    #30 pc 0x00000000003492cb /system/lib/libart.so (art::InvokeWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+310)
    #31 pc 0x00000000002865cb /system/lib/libart.so (art::JNI::CallStaticObjectMethodA(_JNIEnv*, _jclass*, _jmethodID*, jvalue*)+446)
    #32 pc 0x00000000003c045d /system/lib/libart.so (art::InvokeProxyInvocationHandler(art::ScopedObjectAccessAlreadyRunnable&, char const*, _jobject*, _jobject*, std::__1::vector<jvalue, std::__1::allocator<jvalue>>&)+444)
    #33 pc 0x00000000003d7441 /system/lib/libart.so (artQuickProxyInvokeHandler+724)
    #34 pc 0x00000000004130d5 /system/lib/libart.so (art_quick_proxy_invoke_handler+20)
    #35 pc 0x000000000040ed75 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
    #36 pc 0x00000000003e8209 /system/lib/libart.so (art_quick_invoke_stub+224)
    #37 pc 0x00000000000a1415 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
    #38 pc 0x00000000001e6691 /system/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+236)
    #39 pc 0x00000000001e117f /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+814)
    #40 pc 0x00000000003e3a33 /system/lib/libart.so (MterpInvokeInterface+1010)
    #41 pc 0x0000000000401d94 /system/lib/libart.so (ExecuteMterpImpl+14740)
    #42 pc 0x0000000000483a96 /data/app/com.org.gamename-Njr97qIH5aY0p9SsEbNyuA==/oat/arm/base.vdex (com.ironsource.unity.androidbridge.AndroidBridge$39.run+24)
    #43 pc 0x00000000001c58fb /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2130134057)+378)
    #44 pc 0x00000000001c9f27 /system/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+82)
    #45 pc 0x00000000003d6949 /system/lib/libart.so (artQuickToInterpreterBridge+880)
    #46 pc 0x00000000004132ff /system/lib/libart.so (art_quick_to_interpreter_bridge+30)
    #47 pc 0x0000000000219861 /system/framework/arm/boot.oat (java.lang.Thread.run+64)
    #48 pc 0x000000000040ed75 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
    #49 pc 0x00000000003e8209 /system/lib/libart.so (art_quick_invoke_stub+224)
    #50 pc 0x00000000000a1415 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
    #51 pc 0x000000000034884d /system/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+52)
    #52 pc 0x00000000003495a5 /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+320)
    #53 pc 0x000000000036a54f /system/lib/libart.so (art::Thread::CreateCallback(void*)+866)
    #54 pc 0x0000000000063475 /system/lib/libc.so (__pthread_start(void*)+22)
    #55 pc 0x000000000001de69 /system/lib/libc.so (__start_thread+24)

    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    pid: 0, tid: 26860 >>> com.org.gamename <<<

    backtrace:
    #00 pc 0x0000000000a5405c /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID()+89)
    #01 pc 0x0000000000a45294 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+618)
    #02 pc 0x00000000005065b1 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x0000000000511eed /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x0000000000511083 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #05 pc 0x00000000002c45f1 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/lib/arm/libunity.so (UnityJavaProxy_LogJNIInvokeException(_JNIEnv*, _jobject*, long long))
    #06 pc 0x00000000003ae99d /apex/com.android.art/lib/libart.so (art_quick_generic_jni_trampoline+44)
    #07 pc 0x00000000000e8c2c /apex/com.android.art/lib/libart.so (nterp_helper+1948)
    #08 pc 0x000000000074c490 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/base.apk (com.unity3d.player.ReflectionHelper.-$$Nest$smnativeProxyLogJNIInvokeException)
    #09 pc 0x00000000000e84c8 /apex/com.android.art/lib/libart.so (nterp_helper+56)
    #10 pc 0x000000000074c292 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/base.apk (com.unity3d.player.ReflectionHelper$a.invoke+110)
    #11 pc 0x0000000000155a7b /system/framework/arm/boot.oat (java.lang.reflect.Proxy.invoke+74)
    #12 pc 0x00000000003a9fd5 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
    #13 pc 0x00000000002b631d /apex/com.android.art/lib/libart.so (void art::quick_invoke_reg_setup<true>(art::ArtMethod*, unsigned int*, unsigned int, art::Thread*, art::JValue*, char const*) (.__uniq.192663596067446536341070919852553954320.llvm.1260006661547204787)+260)
    #14 pc 0x000000000034937b /apex/com.android.art/lib/libart.so (art::JValue art::InvokeWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+414)
    #15 pc 0x0000000000348b43 /apex/com.android.art/lib/libart.so (art::JNI<false>::CallStaticObjectMethodA(_JNIEnv*, _jclass*, _jmethodID*, jvalue const*)+154)
    #16 pc 0x0000000000534b15 /apex/com.android.art/lib/libart.so (art::InvokeProxyInvocationHandler(art::ScopedObjectAccessAlreadyRunnable&, char const*, _jobject*, _jobject*, std::__1::vector<jvalue, std::__1::allocator<jvalue> >&)+124)
    #17 pc 0x00000000002e6a35 /apex/com.android.art/lib/libart.so (artQuickProxyInvokeHandler+392)
    #18 pc 0x00000000003ae835 /apex/com.android.art/lib/libart.so (art_quick_proxy_invoke_handler+20)
    #19 pc 0x00000000000e999c /apex/com.android.art/lib/libart.so (nterp_helper+5388)
    #20 pc 0x0000000000743950 /data/app/~~FYqXKub_jAv8FTzfl1OuNA==/com.org.gamename-sFjo6LORubo7CiSoJev0FQ==/base.apk (com.ironsource.unity.androidbridge.AndroidBridge$39.run+24)
    #21 pc 0x000000000014ba27 /system/framework/arm/boot.oat (java.lang.Thread.run+70)
    #22 pc 0x00000000003a9fd5 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
    #23 pc 0x00000000003a9a1b /apex/com.android.art/lib/libart.so (void art::quick_invoke_reg_setup<false>(art::ArtMethod*, unsigned int*, unsigned int, art::Thread*, art::JValue*, char const*) (.__uniq.192663596067446536341070919852553954320.llvm.1260006661547204787)+158)
    #24 pc 0x00000000002754a5 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
    #25 pc 0x00000000002f8fb9 /apex/com.android.art/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) (.__uniq.245181933781456475607640333933569312899.llvm.10268395726941630156)+40)
    #26 pc 0x00000000002f8ee9 /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+164)
    #27 pc 0x000000000033ad8f /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+42)
    #28 pc 0x00000000002d965d /apex/com.android.art/lib/libart.so (art::Thread::CreateCallback(void*)+416)
    #29 pc 0x00000000000ad143 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40)
    #30 pc 0x00000000000642dd /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)

    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    pid: 0, tid: 14660 >>> com.org.gamename <<<

    backtrace:
    #00 pc 0x0000000000a5405c /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID()+89)
    #01 pc 0x0000000000a45294 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+618)
    #02 pc 0x00000000005065b1 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x0000000000511eed /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x0000000000511083 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #05 pc 0x00000000005107fb /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool))
    #06 pc 0x000000000051a1a5 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (MonoBehaviour::CallUpdateMethod(int))
    #07 pc 0x000000000039c709 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (void BaseBehaviourManager::CommonUpdate<BehaviourManager>())
    #08 pc 0x0000000000437dbf /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #09 pc 0x0000000000437de1 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #10 pc 0x0000000000437fc3 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (PlayerLoop())
    #11 pc 0x000000000056524b /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (UnityPlayerLoop())
    #12 pc 0x0000000000578937 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (nativeRender(_JNIEnv*, _jobject*))
    #13 pc 0x0000000000109dd3 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/oat/arm/base.odex

    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    pid: 0, tid: 15013 >>> com.org.gamename <<<

    backtrace:
    #00 pc 0x0000000000a5405c /data/app/~~ubX7imye5Lk_Q9T6Yg5TBQ==/com.org.gamename-FlRaW9WHJELcbihdwyRoJA==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID()+89)
    #01 pc 0x0000000000a45294 /data/app/~~ubX7imye5Lk_Q9T6Yg5TBQ==/com.org.gamename-FlRaW9WHJELcbihdwyRoJA==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+618)
    #02 pc 0x00000000005065b1 /data/app/~~ubX7imye5Lk_Q9T6Yg5TBQ==/com.org.gamename-FlRaW9WHJELcbihdwyRoJA==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x0000000000511eed /data/app/~~ubX7imye5Lk_Q9T6Yg5TBQ==/com.org.gamename-FlRaW9WHJELcbihdwyRoJA==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x0000000000511083 /data/app/~~ubX7imye5Lk_Q9T6Yg5TBQ==/com.org.gamename-FlRaW9WHJELcbihdwyRoJA==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #05 pc 0x00000000002c45f1 /data/app/~~ubX7imye5Lk_Q9T6Yg5TBQ==/com.org.gamename-FlRaW9WHJELcbihdwyRoJA==/lib/arm/libunity.so (UnityJavaProxy_LogJNIInvokeException(_JNIEnv*, _jobject*, long long))
    #06 pc 0x00000000003c1b9d /apex/com.android.art/lib/libart.so (art_quick_generic_jni_trampoline+44)
    #07 pc 0x00000000000f0a2c /apex/com.android.art/lib/libart.so (nterp_helper+1948)
    #08 pc 0x00000000004a0278 /data/dalvik-cache/arm/data@app@~~ubX7imye5Lk_Q9T6Yg5TBQ==@com.org.gamename-FlRaW9WHJELcbihdwyRoJA==@base.apk@classes.vdex (com.unity3d.player.ReflectionHelper.-$$Nest$smnativeProxyLogJNIInvokeException)
    #09 pc 0x00000000000f02c8 /apex/com.android.art/lib/libart.so (nterp_helper+56)
    #10 pc 0x00000000001e3e3a /data/dalvik-cache/arm/data@app@~~ubX7imye5Lk_Q9T6Yg5TBQ==@com.org.gamename-FlRaW9WHJELcbihdwyRoJA==@base.apk@classes.vdex (com.unity3d.player.ReflectionHelper$a.invoke+110)
    #11 pc 0x000000000049907b /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (java.lang.reflect.Proxy.invoke+74)
    #12 pc 0x00000000003bd1d5 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
    #13 pc 0x00000000002cc731 /apex/com.android.art/lib/libart.so (void art::quick_invoke_reg_setup<true>(art::ArtMethod*, unsigned int*, unsigned int, art::Thread*, art::JValue*, char const*) (.__uniq.192663596067446536341070919852553954320.llvm.16200230356545185596)+260)
    #14 pc 0x0000000000346a57 /apex/com.android.art/lib/libart.so (art::JValue art::InvokeWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+414)
    #15 pc 0x000000000034621f /apex/com.android.art/lib/libart.so (art::JNI<false>::CallStaticObjectMethodA(_JNIEnv*, _jclass*, _jmethodID*, jvalue const*)+154)
    #16 pc 0x000000000054c7d5 /apex/com.android.art/lib/libart.so (art::InvokeProxyInvocationHandler(art::ScopedObjectAccessAlreadyRunnable&, char const*, _jobject*, _jobject*, std::__1::vector<jvalue, std::__1::allocator<jvalue> >&)+124)
    #17 pc 0x00000000002fc63d /apex/com.android.art/lib/libart.so (artQuickProxyInvokeHandler+392)
    #18 pc 0x00000000003c1a35 /apex/com.android.art/lib/libart.so (art_quick_proxy_invoke_handler+20)
    #19 pc 0x00000000000f179c /apex/com.android.art/lib/libart.so (nterp_helper+5388)
    #20 pc 0x000000000049cb14 /data/dalvik-cache/arm/data@app@~~ubX7imye5Lk_Q9T6Yg5TBQ==@com.org.gamename-FlRaW9WHJELcbihdwyRoJA==@base.apk@classes.vdex (com.ironsource.unity.androidbridge.AndroidBridge$39.run+24)
    #21 pc 0x000000000048f01f /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (java.lang.Thread.run+70)
    #22 pc 0x00000000003bd1d5 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
    #23 pc 0x00000000003bcc77 /apex/com.android.art/lib/libart.so (void art::quick_invoke_reg_setup<false>(art::ArtMethod*, unsigned int*, unsigned int, art::Thread*, art::JValue*, char const*) (.__uniq.192663596067446536341070919852553954320.llvm.16200230356545185596)+158)
    #24 pc 0x000000000028a4c5 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
    #25 pc 0x0000000000313969 /apex/com.android.art/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) (.__uniq.245181933781456475607640333933569312899.llvm.2586733929373010981)+40)
    #26 pc 0x0000000000313875 /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+164)
    #27 pc 0x000000000033a3af /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+42)
    #28 pc 0x00000000002f0625 /apex/com.android.art/lib/libart.so (art::Thread::CreateCallback(void*)+416)
    #29 pc 0x00000000000ad483 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40)
    #30 pc 0x000000000006459d /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)
     
  26. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    Oh wow, 3 of the stack traces seem ironsource related.

    Edit: Which I think I got rid off by following the advice of ikuriscak in this thread : https://forum.unity.com/threads/lot...s-il2cppobject-2021-3-19f1-lts.1403710/page-2

    The new released version with these fixes doesn't have those ironsource crashes any more.
    Apparently some IronSource callbacks/android bridges are faulty.


    Still left with these crashes :

    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    pid: 0, tid: 14660 >>> com.org.gamename <<<

    backtrace:
    #00 pc 0x0000000000a5405c /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID()+89)
    #01 pc 0x0000000000a45294 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+618)
    #02 pc 0x00000000005065b1 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x0000000000511eed /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x0000000000511083 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #05 pc 0x00000000005107fb /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool))
    #06 pc 0x000000000051a1a5 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (MonoBehaviour::CallUpdateMethod(int))
    #07 pc 0x000000000039c709 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (void BaseBehaviourManager::CommonUpdate<BehaviourManager>())
    #08 pc 0x0000000000437dbf /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #09 pc 0x0000000000437de1 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #10 pc 0x0000000000437fc3 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (PlayerLoop())
    #11 pc 0x000000000056524b /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (UnityPlayerLoop())
    #12 pc 0x0000000000578937 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/lib/arm/libunity.so (nativeRender(_JNIEnv*, _jobject*))
    #13 pc 0x0000000000109dd3 /data/app/com.org.gamename-ZML2179ZqCm_A3htgabHHQ==/oat/arm/base.odex

    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    pid: 0, tid: 2985 >>> com.org.gamename <<<

    backtrace:
    #00 pc 0x0000000000a5419c /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libil2cpp.so (il2cpp::eek:s::Image::GetELFImageBuildID()+89)
    #01 pc 0x0000000000a453d4 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libil2cpp.so (il2cpp_native_stack_trace+618)
    #02 pc 0x0000000000507291 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&))
    #03 pc 0x0000000000512bcd /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (Scripting::LogExceptionFromManaged(ScriptingExceptionPtr, int, char const*, bool, Scripting::LogExceptionFromMangedSettings const*))
    #04 pc 0x0000000000511d63 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (Scripting::LogException(ScriptingExceptionPtr, int, char const*, bool))
    #05 pc 0x00000000005114db /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool))
    #06 pc 0x000000000051ae85 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (MonoBehaviour::CallUpdateMethod(int))
    #07 pc 0x000000000039ce41 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (void BaseBehaviourManager::CommonUpdate<BehaviourManager>())
    #08 pc 0x000000000043896f /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #09 pc 0x0000000000438991 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*))
    #10 pc 0x0000000000438b73 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (PlayerLoop())
    #11 pc 0x0000000000565f2b /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (UnityPlayerLoop())
    #12 pc 0x0000000000579617 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/lib/arm/libunity.so (nativeRender(_JNIEnv*, _jobject*))
    #13 pc 0x000000000003addb /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/oat/arm/base.odex (art_jni_trampoline+74)
    #14 pc 0x0000000002005435 /memfd:/jit-cache (com.unity3d.player.UnityPlayer$C$a.handleMessage+1332)
    #15 pc 0x00000000006bcee7 /system/framework/arm/boot-framework.oat (android.os.Handler.dispatchMessage+110)
    #16 pc 0x00000000006bf96d /system/framework/arm/boot-framework.oat (android.os.Looper.loop+1276)
    #17 pc 0x00000000000d7bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68)
    #18 pc 0x0000000000437589 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+248)
    #19 pc 0x00000000000dffff /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+198)
    #20 pc 0x0000000000213b45 /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+280)
    #21 pc 0x000000000020f45d /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+716)
    #22 pc 0x000000000042ec4d /apex/com.android.runtime/lib/libart.so (MterpInvokeStatic+348)
    #23 pc 0x00000000000d2994 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static+20)
    #24 pc 0x000000000046fdf6 /data/app/com.org.gamename-3OZ6EgeXe9HrU4aECSho4w==/oat/arm/base.vdex (com.unity3d.player.UnityPlayer$C.run+48)
    #25 pc 0x00000000001eee49 /apex/com.android.runtime/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3423471796909848127)+192)
    #26 pc 0x00000000001f363b /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+126)
    #27 pc 0x0000000000420f5d /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+852)
    #28 pc 0x00000000000dc5a1 /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+32)
    #29 pc 0x00000000000d7bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68)
    #30 pc 0x0000000000437475 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+252)
    #31 pc 0x00000000000dffeb /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+178)
    #32 pc 0x000000000037817b /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+54)
    #33 pc 0x0000000000378f03 /apex/com.android.runtime/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+306)
    #34 pc 0x00000000003aa54b /apex/com.android.runtime/lib/libart.so (art::Thread::CreateCallback(void*)+982)
    #35 pc 0x00000000000abcfb /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20)
    #36 pc 0x0000000000062db3 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)
     
    Last edited: Sep 6, 2023
  27. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    Thanks for the details. I don't have an ETA on a fix yet, but we will prioritize this bug. I was not aware that it was impacting so many users.

    This is an interesting angle, I'm not sure. It seems odd that only some users would hit this issue, as it is related to the binaries shipped with the game, so maybe it would be all or nothing. We will investigate this aspect as we correct the bug.

    Thanks - I think we might finally have a way to fix this IronSource issue as well, so hopefully we can get a full fix for it released.
     
  28. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    The reason I asked is because the linked bug report talks about modifying LIBIL2CPP.SO - but maybe that's just to reproduce it.

    It seems to me as if this is a reflection crash when Unity tries to call a Java method through JNI which doesn't exist or has different params ( at least in the ironsource cases ), and then the stack reporting for the reflection fault runs into another issue, which seems to be the GetELFImageBuildID, and that's why we see the same command pop up in unrelated issues?

    All stack traces seem to have in common that there's some JNI fault. ( I don't know yet what the last 2 stacktraces are about, but it seems some Java code calling some Unity methods? )
     
    Last edited: Sep 7, 2023
  29. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    I'm actually not sure what "Modify libil2cpp.so" does in that case. I think this is something in Android Studio, not Unity, so it may not be related. But we will investigate.

    That is an interesting point - we will follow up on it in this bug report.
     
  30. Alan-Liu

    Alan-Liu

    Joined:
    Jan 23, 2014
    Posts:
    391
    Yes, I just modified the note section of libil2cpp.so to reproduce it. The modified file can be read correctly by llvm-readelf, but incorrectly (crashed) by
    GetELFImageBuildID
    .
     
    JoshPeterson likes this.
  31. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    I may be getting partially to the bottom of this and why it suddenly affects so many users. We have all these with Unity 2022.3.6 & 2022.3.8 which have UUM-30243. Apparently that bugfix causes issues if android code tries to call a private method ( which worked before ), that then Unity cannot find any longer.

    So for example we have this declaration in Unity IAP :
    void onPurchasesUpdated(AndroidJavaObject billingResult, AndroidJavaObject javaPurchasesList)


    But if the java code sends
    onPurchasesUpdated(object, null)
    to Unity, it fails due to that "bugfix" with :
    Code (CSharp):
    1. Exception: No such proxy method:
    2. UnityEngine.Purchasing.GooglePurchaseUpdatedListener.onPurchasesUpdated(UnityEngine.AndroidJavaObject, null)
    Apparently before JNI was able to call private methods, but is now limited to only public methods. This would maybe explain why suddenly a lot of IronSource reflection calls could fail as well?

    Related reading : https://forum.unity.com/threads/uni...-method-onbillingservicedisconnected.1400938/

    At least this would explain why there's an increased number of failed reflection calls from java->c# and likewise. I'm going to test now by downgrading to 2022.3.4 if that reduces the crashes.

    Edit: Apparently the JNI now can only find public methods after that patch. Related reading : https://forum.unity.com/threads/exceptions-after-uum-30243-fix.1465151/
     
    Last edited: Sep 10, 2023
    JoshPeterson likes this.
  32. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    Yeah so @JoshPeterson it seems as if GetELFImageBuildID is a failure within the stacktrace code of Unity - preventing us from seeing the real ( e.g. failed reflection call ) stacktrace.

    I just get a lot of those grouped together that have completely different backtraces.

    Edit for comparison here's a similar stacktrace from unity crash reporter :
    Code (CSharp):
    1. Native StackTrace:
    2.  
    3. Thread 0 (crashed)
    4. 0   libil2cpp.so                       0x000000007fbda05c GetELFImageBuildID (/opt/unity/Editor/Data/il2cpp/libil2cpp/os/Posix/Image.cpp:89)
    5. 1   libil2cpp.so                       0x000000007fbcb294 il2cpp_native_stack_trace (/opt/unity/Editor/Data/il2cpp/libil2cpp/il2cpp-api.cpp:618)
    6. 2   libunity.so                        0x00000000827515b1 scripting_stack_trace_info_for (/home/bokken/build/output/unity/unity/Runtime/ScriptingBackend/Il2Cpp/ScriptingApi_Il2Cpp.cpp:608)
    7. 3   libunity.so                        0x000000008275ceed LogExceptionFromManaged (/home/bokken/build/output/unity/unity/Runtime/Scripting/Scripting.cpp:907)
    8. 4   libunity.so                        0x000000008275c083 LogException (/home/bokken/build/output/unity/unity/Runtime/Scripting/Scripting.cpp:945)
    9. 5   libunity.so                        0x000000008250f5f1 UnityJavaProxy_LogJNIInvokeException (/home/bokken/build/output/unity/unity/Modules/AndroidJNI/Public/AndroidJNIBindingsHelpers.h:79)
    10. 6   base.odex                          0x0000000085222bd7 <symbols missing for uuid: 0000000000000000000000000000000000000000>
    They have in general less info
     
    Last edited: Sep 11, 2023
    JoshPeterson likes this.
  33. i9mobile

    i9mobile

    Joined:
    Aug 8, 2013
    Posts:
    54
    Last edited: Sep 18, 2023
  34. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    That fix causes more reflection crashes, which then show up as GetELFImageBuildID type crashes, due to some unrelated error inside that method.

    We downgraded to Unity version 2022.3.4 before that UUM-30243 fix, and we're still getting ( albeit less ) GetELFImageBuildID type crashes.

    So there's some code in GetELFImageBuildID that needs to be fixed on Unity's side.

    We didn't have this issue with e.g. Unity 2020.3.45. We got it after upgrading to 2022.3.x
     
    Last edited: Sep 18, 2023
    i9mobile likes this.
  35. WNP78

    WNP78

    Joined:
    Oct 8, 2016
    Posts:
    5
    Posted this also on this issue tracker post: https://issuetracker.unity3d.com/is...yer-crashes-when-libil2cpp-dot-so-is-modified but I'll post it again here as for visibility and better code formatting.

    I believe I've tracked down the error to in
    libil2cpp/os/Posix/Image.cpp
    , method
    GetELFImageBuildID()
    . The issue is with the expression
    phdr[i].p_offset + imageBase
    on lines 84 and 86. This is not the correct way to get the memory location of that section. The correct way to do this is described in a UNIX stackexchange post:
    https://unix.stackexchange.com/ques...elf-program-header-is-the-real-memory-address

    Making edits to libil2cpp on our disk and re-exporting has fixed the issue for us, showing that this is the cause of the issue. In our case, the trigger was google automatic integrity protection modifying the libil2cpp.so file. Comparing the files pre and post google AIP, we see that google does not modify at all the contents of the
    PT_NOTE
    section that contains the build ID, or any other note section. However, it does relocate it in the file. In the unmodified library, the
    p_offset
    and the
    p_vaddr
    are the same. This is why it works, despite the code incorrectly using
    p_offset
    . After google edits the .so, it is relocated and
    p_offset
    is no longer equal to
    p_vaddr
    .

    Swapping
    p_offset
    to
    p_vaddr
    was enough to stop the crashes for us. You can find the file in the unity install directory:
    Editor/Data/il2cpp/libil2cpp/os/Posix/Image.cpp
    . As stated in the stackexchange I linked earlier, in some cases you may also have to subtract the offset of the lowest
    PT_LOAD
    section. In our case this always turned out to be zero, so we're good for now, but to stop this coming up again in the future it shouldn't be difficult to factor that in as well. I'll include below some example code (I'm not super versed in C++ so don't take my word for it, do your own research etc):

    Code (CPlusPlus):
    1.         // find lowest PT_LOAD section offset
    2.         uint32_t lowest_pt_load = -1;
    3.  
    4.         for (int i = 0; i < ehdr->e_phnum; i++)
    5.         {
    6.             if (phdr[i].p_type == PT_LOAD && phdr[i].p_vaddr < lowest_pt_load)
    7.             {
    8.                 lowest_pt_load = phdr[i].p_vaddr;
    9.             }
    10.         }
    11.  
    12.         if (lowest_pt_load == -1) { lowest_pt_load = 0; }

    and these 3 lines in the loop:

    Code (CPlusPlus):
    1.                 size_t nhdr_ptr = phdr[i].p_vaddr + imageBase - lowest_pt_load;
    2.                 int j = 0;
    3.                 while (nhdr_ptr < imageBase + phdr[i].p_vaddr - lowest_pt_load + phdr[i].p_memsz)
     
  36. i9mobile

    i9mobile

    Joined:
    Aug 8, 2013
    Posts:
    54
    can you share your libil2cpp or guide us on how to make the edit and re-export?
     
  37. WNP78

    WNP78

    Joined:
    Oct 8, 2016
    Posts:
    5
    libil2cpp located in your unity install. In my case the file in question was located at
    C:\Program Files\Unity\Hub\Editor\2022.3.9f1\Editor\Data\il2cpp\libil2cpp\os\Posix\Image.cpp
    .

    The only changes that were necessary to make, in our case, to fix the crash, were to change
    p_offset
    to
    p_vaddr
    on lines 84 and 86.

    (the other code in my comment is exemplary of how I think the proper way to do things is, though that code is not fully tested)

    On our end, we then deleted the project's library folder to ensure that it got properly rebuilt. This might not be necessary, so feel free to experiment, but that's what we did.
     
    i9mobile and trooper like this.
  38. trooper

    trooper

    Joined:
    Aug 21, 2009
    Posts:
    748
    I'm gonna try this
     
  39. i9mobile

    i9mobile

    Joined:
    Aug 8, 2013
    Posts:
    54
    Thanks I'll make this change to the cpp file and will submit a new build today, using Google's Dynamite security...
    I'll back here after a few days of crash reports and see how this goes...
     
  40. WNP78

    WNP78

    Joined:
    Oct 8, 2016
    Posts:
    5
    Another thing we found, is that it only happened on 32-bit (Armv7) devices, which is why none of our devices could reproduce it. If you have a device that supports 32-bit compatibility mode (it's only some of the newer ARM chips that are 64-bit only) then you can force install the 32-bit version with the command
    adb install -r -d --abi armeabi-v7a .\game.apk
    , obviously setting the path to your game apk. You'll have to download that APK from google play after their security has modified it of course, see "Download a signed, universal APK" here: https://support.google.com/googleplay/android-developer/answer/9844279

    This way I was able to recreate the bug on my device and verify the fix.
     
    i9mobile likes this.
  41. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    Oh yeah that makes sense - that's also a new feature that was enabled in the Google Play console for us.

    May be also related to an issue where we see the first line of a stacktrace unrelated to the error itself.
     
    Last edited: Oct 3, 2023
  42. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    Got rid of GetELFImageBuildID errors for now by disabling Google Play's integrity protection. Also messed up stacktraces seem to have disappeared, too. ( We had weird stacktraces where the first line didn't make sense
     
  43. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    @JoshPeterson have you guys looked into those? The issue is that to reproduce you need to build and publish through Google Play with integrity protection enabled.
     
  44. makomarkus

    makomarkus

    Joined:
    Oct 28, 2020
    Posts:
    61
    Saw GetELFImageBuildID / Google Play's integrity protection was fixed in 2022.3.14f1 : "IL2CPP: Fixed GetELFImageBuildID() to handle Google AIP relocating PT_NOTE section. (UUM-46346)"
     
    i9mobile likes this.
  45. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,926
    @makomarkus Sorry that I missed your earlier ping. I think this issue should be fixed now, as you noted in your latest post there. Let me know if it is not working though.