"signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)" (792333)

Hey,

So on our most recent game we’re getting a high crash rate on Google Play. Our general crash rate is 0.77% but on Android 10 it’s higher, about 1.46% (above the bad behaviour threshold). We have a bunch of similar crashes all signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), but the two below are the most common.

We’ve spent a couple of weeks trying to work out what’s going on and have tried a bunch of different things, but in all honesty I don’t really know where to start, so was wondering if anyone could give us a pointer. We’re on 2019.3.13f1. We’ve updated all our plugins to the most recent versions (Google Play Games, IronSource, PlayFab etc) and this hasn’t made a difference to the crash rate.

We haven’t been able to reproduce these issues locally and we’re not getting reports from players (we have quite a tight reddit community, so I would expect at least some reports if it was disrupting gameplay), so I don’t think the crashes are player facing. I’m wondering if the game crashes silently when you resume playing or when you close it.

Any help is massively appreciated.

Error Message 1

pid: 0, tid: 0 >>> com.grumpyrhinogames.idlemastermind <<< backtrace:

#00 pc 00000000001424fc /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#01 pc 00000000006244a0 /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#02 pc 0000000000624454 /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#03 pc 0000000000622340 /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#04 pc 0000000000621814 /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#05 pc 000000000062033c /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#06 pc 000000000064e678 /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/lib/arm64/libunity.so

#07 pc 000000000004883c /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/oat/arm64/base.odex (art_jni_trampoline+124)

#08 pc 0000000000088fc4 /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/oat/arm64/base.odex (com.unity3d.player.UnityPlayer.resume+948)

#09 pc 0000000000089c1c /data/app/com.grumpyrhinogames.idlemastermind-atYXsde-gpBYoX2KKqZdTA==/oat/arm64/base.odex (com.unity3d.player.UnityPlayerActivity.onResume+76)

#10 pc 00000000003e3b60 /system/framework/arm64/boot-framework.oat (android.app.Instrumentation.callActivityOnResume+80)

#11 pc 00000000006c1afc /system/framework/arm64/boot-framework.oat (android.app.Activity.performResume+444)

#12 pc 00000000004dfdf0 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.performResumeActivity+640)

#13 pc 00000000004dd634 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.handleResumeActivity+276)

#14 pc 00000000006ddc90 /system/framework/arm64/boot-framework.oat (android.app.servertransaction.ResumeActivityItem.execute+128)

#15 pc 000000000040df24 /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.executeLifecycleState+340)

#16 pc 000000000040e6e8 /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.execute+776)

#17 pc 00000000004c3350 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread$H.handleMessage+496)

#18 pc 000000000074dfc4 /system/framework/arm64/boot-framework.oat (android.os.Handler.dispatchMessage+180)

#19 pc 0000000000751560 /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+1440)

#20 pc 00000000004d4b14 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.main+788)

#21 pc 00000000001375b8 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)

#22 pc 000000000014600c /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)

#23 pc 00000000004b1884 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)

#24 pc 00000000004b3428 /apex/com.android.runtime/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1480)

#25 pc 000000000043e1c8 /apex/com.android.runtime/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52)

#26 pc 00000000000c2c54 /system/framework/arm64/boot.oat (art_jni_trampoline+180)

#27 pc 00000000009c39f8 /system/framework/arm64/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)

#28 pc 00000000009cbfa4 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+3124)

#29 pc 00000000001375b8 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)

#30 pc 000000000014600c /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)

#31 pc 00000000004b1884 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)

#32 pc 00000000004b1474 /apex/com.android.runtime/lib64/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+408)

#33 pc 00000000003bbb9c /apex/com.android.runtime/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+624)

#34 pc 00000000000ed9e4 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, …)+116)

#35 pc 00000000000f0b04 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vectorandroid::String8 const&, bool)+792)

#36 pc 00000000000034f8 /system/bin/app_process64 (main+1192)

#37 pc 000000000007e898 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108)

Error Message 2

pid: 0, tid: 0 >>> com.grumpyrhinogames.idlemastermind <<< backtrace:

#00 pc 00000000001424fc /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#01 pc 00000000006244a0 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#02 pc 0000000000624454 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#03 pc 0000000000622340 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#04 pc 0000000000621808 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#05 pc 000000000062033c /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#06 pc 000000000064e6d0 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/lib/arm64/libunity.so

#07 pc 0000000000045758 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/oat/arm64/base.odex (art_jni_trampoline+152)

#08 pc 00000000000724d4 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/oat/arm64/base.odex (com.unity3d.player.UnityPlayer$e$1.handleMessage+1956)

#09 pc 0000000000733578 /system/framework/arm64/boot-framework.oat (android.os.Handler.dispatchMessage+136)

#10 pc 0000000000736b50 /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+1440)

#11 pc 0000000000072ef8 /data/app/com.grumpyrhinogames.idlemastermind-kVtZIMYn8sDsSfNr-GwXag==/oat/arm64/base.odex (com.unity3d.player.UnityPlayer$e.run+216)

#12 pc 0000000000136334 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)

#13 pc 000000000014506c /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)

#14 pc 00000000004a9668 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)

#15 pc 00000000004aa6fc /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)

#16 pc 00000000004ea494 /apex/com.android.runtime/lib64/libart.so (art::thread::CreateCallback(void*)+1176)

#17 pc 00000000000e10a0 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)

#18 pc 0000000000083ab0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

void VFXSystemDescT<VFXTaskDesc>::Transfer<StreamedBinaryWrite>(StreamedBinaryWrite&)
glsl::ExtractDefineBlock(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >*)
glsl::ExtractDefineBlock(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >*)
RenderMultipleMeshes(RenderNodeQueue const&, RenderMultipleData const&, VertexInputMasks)
ProcessDynamicBatchGeometryJob(SharedGeometryJobData*, unsigned int)
void std::__ndk1::__sort<vector_map<int, InstancingBatcher::PropertyType, std::__ndk1::less<int>, stl_allocator<std::__ndk1::pair<int, InstancingBatcher::PropertyType>, (MemLabelIdentifier)1, 16> >::value_compare&, std::__ndk1::pair<int, InstancingBatcher::PropertyType>*>(std::__ndk1::pair<int, InstancingBatcher::PropertyType>*, std::__ndk1::pair<int, InstancingBatcher::PropertyType>*, vector_map<int, InstancingBatcher::PropertyType, std::__ndk1::less<int>, stl_allocator<std::__ndk1::pair<int, InstancingBatcher::PropertyType>, (MemLabelIdentifier)1, 16> >::value_compare&)
insphereexact(double*, double*, double*, double*, double*)
??
AvatarBuilder::BuildAvatarConstantFromTransformHierarchy(Avatar*, GameObject const&, RuntimeBaseAllocator&)
AvatarMask::RemoveTransformPath(Transform&, bool)
TrailRenderer_CUSTOM_get_startColor_Injected(ScriptingBackendNativeObjectPtrOpaque*, ColorRGBAf&)
void NoiseModule::CalculateNoiseJob<1, true, true>(NoiseJobData*)
void LightProbes::Transfer<SafeBinaryRead>(SafeBinaryRead&)
OcclusionArea::VirtualRedirectTransfer(GenerateTypeTreeTransfer&)
void ApplyForceField<(ParticleSystemForceFieldShape)3>(ParticleSystemParticles&, unsigned int, unsigned int, math::affineX const&, math::affineX const&, ParticleSystemForceFieldParameters const&, float __vector(4) const&, MinMaxCurve const&)
ExportCoreBindingsNew()
ExportCoreBindingsNew()
LensFlare::VirtualRedirectTransfer(SafeBinaryRead&)
unsigned int std::__ndk1::__sort3<bool (*&)(UnityVRTrackedObjectInfo const&, UnityVRTrackedObjectInfo const&), UnityVRTrackedObjectInfo*>(UnityVRTrackedObjectInfo*, UnityVRTrackedObjectInfo*, UnityVRTrackedObjectInfo*, bool (*&)(UnityVRTrackedObjectInfo const&, UnityVRTrackedObjectInfo const&))
Rigidbody_CUSTOM_get_position_Injected(ScriptingBackendNativeObjectPtrOpaque*, Vector3f&)
void Light::Transfer<StreamedBinaryWrite>(StreamedBinaryWrite&)
VFXExpressionNoiseFunctions::Cellular::Generate2D(float __vector(2) const&)
VFXSpawnerSystem::Validate(VFXSystemDesc const&, dynamic_array<VFXCPUBuffer, 0u> const&)
GlslGpuProgramGLES::LoadFromBinaryShaderCache(unsigned int&, core::basic_string<char, core::StringStorageDefault<char> > const&, ShaderChannelMask&, char const*, int*, int*)
CompileFragmentShader(core::basic_string<char, core::StringStorageDefault<char> > const&, bool, bool)
Camera_Set_Custom_PropAllowDynamicResolution(ScriptingBackendNativeObjectPtrOpaque*, unsigned char)
InvalidatePropertySceneHandleBoundCurvesCallback(void*, void*, int)
physx::pvdsdk::PvdMarshalling<short, float>::marshalBlock(unsigned char const*, unsigned char*, unsigned int)
physx::NpShape::setFlagsInternal(physx::PxFlags<physx::PxShapeFlag::Enum, unsigned char>)
VFXExpressionNoiseFunctions::Cellular::Generate2D(float __vector(2) const&)
VFXSpawnerSystem::Validate(VFXSystemDesc const&, dynamic_array<VFXCPUBuffer, 0u> const&)
GlslGpuProgramGLES::LoadFromBinaryShaderCache(unsigned int&, core::basic_string<char, core::StringStorageDefault<char> > const&, ShaderChannelMask&, char const*, int*, int*)
GlslGpuProgramGLES::SwitchProgram(unsigned int)
ControllerFilterCallback::filter(physx::PxController const&, physx::PxController const&)
RegisterModule_HotReload
void Transfer_ManagedObject<JSONRead, false>(SerializationCommandArguments const&, RuntimeSerializationCommandInfo&)
??
Scripting::UnityEngine::RenderTextureProxy::InitProxy()

So I’ve done addr2line (heh, didn’t know that was a thing) and this is what’s come out. So it looks like a shader issue if I’m reading that right?

We have a lot of similar crashes, with the latest 2019.2 or 2019.3. Nobody really cares. Some of the games has 0.70% crash rate, other crossed bad behaviour with 1.25% or so. Downloads are constantly drops. Very sad, that Unity Team doing nothing for this ;(

In our games we have AdMob (and Chartboost + Applovin mediation) and Unity Ads. Ads and ads plugins - all the latest versions. Unity 2019.3.14f + Api Level 29

Updated just yesterday, still no success, same crashes everywhere.

We tried to fix it with “backup prefs” solution (.xmls and androidmanifest), but this is does not worked.

Are you sure you’re using correct path for symbols, the resolved stacktrace doesn’t look correct.

Hi Tomas, thanks very much for the reply. We followed the instructions on https://support.unity3d.com/hc/en-us/articles/115000292166-Symbolicate-Android-crash, but needed to use a different path to what’s on there and used the wrong one.

We tried again using the following which I think is the correct symbol file.

./toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line -f -C -e /Applications/Unity/Hub/Editor/2019.3.13f1/PlaybackEngines/AndroidPlayer/Variations/il2cpp/Release/Symbols/arm64-v8a/libunity.sym.so    00000000001424fc  00000000006244a0  0000000000624454  0000000000622340  0000000000621808  000000000062033c  000000000064e678  000000000004e83c  00000000000a39b4  00000000000a469c  000000000044a930  000000000074b3cc  0000000000558540  0000000000555cf4  000000000076b460  000000000047cf04  000000000047d6c8  000000000053a670  00000000007e1104  00000000007e4770  000000000054c8d4  00000000001375b8  000000000014600c  00000000004b1718  00000000004b32bc  000000000043e05c  00000000000c9d34  0000000000a97268  0000000000a9fa24  00000000001375b8  000000000014600c  00000000004b1718  00000000004b1308  00000000003bba30  00000000000ee4dc  00000000000f15fc  00000000000034f8  000000000007e898

This produces the following.

void std::__ndk1::__tree_balance_after_insert<std::__ndk1::__tree_node_base<void*>*>(std::__ndk1::__tree_node_base<void*>*, std::__ndk1::__tree_node_base<void*>*)
??:?
std::__ndk1::__tree<std::__ndk1::__value_type<int, sigaction>, std::__ndk1::__map_value_compare<int, std::__ndk1::__value_type<int, sigaction>, std::__ndk1::less<int>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<int, sigaction> > >::__insert_node_at(std::__ndk1::__tree_end_node<std::__ndk1::__tree_node_base<void*>*>*, std::__ndk1::__tree_node_base<void*>*&, std::__ndk1::__tree_node_base<void*>*)
??:?
std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<int, sigaction>, std::__ndk1::__tree_node<std::__ndk1::__value_type<int, sigaction>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<int, sigaction>, std::__ndk1::__map_value_compare<int, std::__ndk1::__value_type<int, sigaction>, std::__ndk1::less<int>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<int, sigaction> > >::__emplace_unique_key_args<int, std::__ndk1::piecewise_construct_t const&, std::__ndk1::tuple<int const&>, std::__ndk1::tuple<> >(int const&, std::__ndk1::piecewise_construct_t const&, std::__ndk1::tuple<int const&>&&, std::__ndk1::tuple<>&&)
??:?
NativeRuntimeException::chain_handler(int, sigaction&)
??:?
NativeRuntimeException::install_signal_handlers()
??:?
NativeRuntimeException::GetExceptionState()
??:?
nativeRestartActivityIndicator(_JNIEnv*, _jobject*)
??:?
??
??:0
??
??:0
??
??:0
Cubemap::VirtualRedirectTransfer(SafeBinaryRead&)
??:?
vk::CommandBuffer::FlushBarriers(bool)
??:?
TransformChangeDispatch::RemoveTransformHierarchy(TransformHierarchy&)
??:?
dynamic_array<dynamic_array<StreamingTextureMipLevel, 0ul>, 0ul>::emplace_back()
??:?
prcore::StretchRGB9e5Bilinear(prcore::InnerInfo const*)
??:?
AmbientProbeBaker::CalculateAmbientFaceProcessor::operator()(Image&, int, Vector3f const&, Vector3f const&, Vector3f const&, bool)
??:?
AmbientProbeBaker::CalculateAmbientFaceProcessor::operator()(Image&, int, Vector3f const&, Vector3f const&, Vector3f const&, bool)
??:?
std::__ndk1::pair<core::pair<ShaderTagID, ShaderTagID, false>*, long> std::__ndk1::get_temporary_buffer<core::pair<ShaderTagID, ShaderTagID, false> >(long)
??:?
FrustumCullReflectionProbesJob(ReflectionProbeCullJobData*, unsigned int)
??:?
DeferredRenderLoopJob(GfxDeviceAsyncCommand::ArgScratch*, GfxDeviceAsyncCommand::Arg const*)
??:?
ShaderLab::IntShader::ResolveFallback(ShaderLab::SerializedShader const&, Shader*, std::__ndk1::vector<PPtr<Shader>, std::__ndk1::allocator<PPtr<Shader> > >&, bool)
??:?
AnimationState::UpdateFading(float)
??:?
std::__ndk1::vector<AnimationClip::FloatCurve, stl_allocator<AnimationClip::FloatCurve, (MemLabelIdentifier)30, 16> >::__vallocate(unsigned long)
??:?
void GrowableBuffer::WriteArrayType<Matrix4x4f>(Matrix4x4f const*, int, unsigned long)
??:?
RenderingCommandBuffer::ExecuteCommandBufferWithState(ShaderPassContext&, RenderNodeQueue&, RenderingCommandBufferState*, unsigned int, ComputeQueueType) const
??:?
DoDeCruncherJob(TextureUploadInstruction*)
??:?
??
??:0
ClipperLib::Clipper::Clipper(int)
??:?
AnchoredJoint2D::ConfigureDistance(b2Vec2 const&, b2Vec2 const&)
??:?
AnimationState::UpdateFading(float)
??:?
std::__ndk1::vector<AnimationClip::FloatCurve, stl_allocator<AnimationClip::FloatCurve, (MemLabelIdentifier)30, 16> >::__vallocate(unsigned long)
??:?
void GrowableBuffer::WriteArrayType<Matrix4x4f>(Matrix4x4f const*, int, unsigned long)
??:?
void GrowableBuffer::WriteValueType<RenderCommandSetGlobalTexture>(RenderCommandSetGlobalTexture const&, unsigned long)
??:?
void std::__ndk1::__insertion_sort_3<std::__ndk1::__less<Hash128, Hash128>&, Hash128*>(Hash128*, Hash128*, std::__ndk1::__less<Hash128, Hash128>&)
??:?
_GLOBAL__sub_I_Runtime_Graphics_9.cpp
??:?
_GLOBAL__sub_I_Modules_Physics_2.cpp
??:?
??
??:0
??
??:0

Does this look correct and does it mean anything to you if so?

Lines [1-15] looks correct, everything else doesn’t look correct. Can you copy paste unresolved stacktrace?

This is the one.

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.grumpyrhinogames.idlemastermind <<<

backtrace:
  #00  pc 00000000001424fc  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #01  pc 00000000006244a0  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #02  pc 0000000000624454  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #03  pc 0000000000622340  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #04  pc 0000000000621808  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #05  pc 000000000062033c  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #06  pc 000000000064e678  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/lib/arm64/libunity.so
  #07  pc 000000000005883c  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/oat/arm64/base.odex (art_jni_trampoline+124)
  #08  pc 00000000000d31d4  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/oat/arm64/base.odex (com.unity3d.player.UnityPlayer.resume+932)
  #09  pc 00000000000d3d2c  /data/app/com.grumpyrhinogames.idlemastermind-qsgtog0u09-7C6OGF0ODFg==/oat/arm64/base.odex (com.unity3d.player.UnityPlayerActivity.onResume+76)
  #10  pc 00000000003dad10  /system/framework/arm64/boot-framework.oat (android.app.Instrumentation.callActivityOnResume+80)
  #11  pc 00000000006a5a18  /system/framework/arm64/boot-framework.oat (android.app.Activity.performResume+360)
  #12  pc 00000000004d0318  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.performResumeActivity+600)
  #13  pc 00000000004cdf5c  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.handleResumeActivity+268)
  #14  pc 00000000006c3d20  /system/framework/arm64/boot-framework.oat (android.app.servertransaction.ResumeActivityItem.execute+128)
  #15  pc 0000000000403534  /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.executeLifecycleState+340)
  #16  pc 0000000000403cf8  /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.execute+776)
  #17  pc 00000000004b5070  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread$H.handleMessage+496)
  #18  pc 00000000007335a4  /system/framework/arm64/boot-framework.oat (android.os.Handler.dispatchMessage+180)
  #19  pc 0000000000736b50  /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+1440)
  #20  pc 00000000004c5d24  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.main+756)
  #21  pc 00000000001365b8  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
  #22  pc 000000000014508c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
  #23  pc 00000000004a9668  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #24  pc 00000000004ab090  /apex/com.android.runtime/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1476)
  #25  pc 0000000000437ab0  /apex/com.android.runtime/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52)
  #26  pc 00000000000c2c34  /system/framework/arm64/boot.oat (art_jni_trampoline+180)
  #27  pc 00000000009a9988  /system/framework/arm64/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)
  #28  pc 00000000009b155c  /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2076)
  #29  pc 00000000001365b8  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
  #30  pc 000000000014508c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
  #31  pc 00000000004a9668  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #32  pc 00000000004a92d4  /apex/com.android.runtime/lib64/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+408)
  #33  pc 00000000003b67c4  /apex/com.android.runtime/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+628)
  #34  pc 00000000000be560  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+116)
  #35  pc 00000000000c13e8  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+780)
  #36  pc 00000000000034e0  /system/bin/app_process64 (main+1168)
  #37  pc 000000000007d780  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108)

so as you see only frames from [#00#06] are from libunity.so, others are not, so you can’t use libunity symbols on them.

Sadly, It’s not clear what exactly is wrong here, it seems it crashed on application start.

Re:libunity. Are you saying here that everything beyond frame #06 is from before Unity is invoked, and so not relevant, or that it could be relevant but we can’t see what it is? If it’s from before unity is invoked and unity is being killed within the first lines, what could be causing it to crash so early?

Here’s the second most common crash which I assume is connected.

void std::__ndk1::__tree_balance_after_insert<std::__ndk1::__tree_node_base<void*>*>(std::__ndk1::__tree_node_base<void*>*, std::__ndk1::__tree_node_base<void*>*)
??:?
std::__ndk1::__tree<std::__ndk1::__value_type<int, sigaction>, std::__ndk1::__map_value_compare<int, std::__ndk1::__value_type<int, sigaction>, std::__ndk1::less<int>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<int, sigaction> > >::__insert_node_at(std::__ndk1::__tree_end_node<std::__ndk1::__tree_node_base<void*>*>*, std::__ndk1::__tree_node_base<void*>*&, std::__ndk1::__tree_node_base<void*>*)
??:?
std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<int, sigaction>, std::__ndk1::__tree_node<std::__ndk1::__value_type<int, sigaction>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<int, sigaction>, std::__ndk1::__map_value_compare<int, std::__ndk1::__value_type<int, sigaction>, std::__ndk1::less<int>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<int, sigaction> > >::__emplace_unique_key_args<int, std::__ndk1::piecewise_construct_t const&, std::__ndk1::tuple<int const&>, std::__ndk1::tuple<> >(int const&, std::__ndk1::piecewise_construct_t const&, std::__ndk1::tuple<int const&>&&, std::__ndk1::tuple<>&&)
??:?
NativeRuntimeException::chain_handler(int, sigaction&)
??:?
NativeRuntimeException::install_signal_handlers()
??:?
NativeRuntimeException::GetExceptionState()
??:?
nativeSetLaunchURL(_JNIEnv*, _jobject*, _jstring*)

Everything is relevant, the problem it’s not enough information… It’s sad that google doesn’t provide logcat together with crash stacktrace.

Do you have information about which devices produce stacktrace containing

NativeRuntimeException::install_signal_handlers()

They’re all Android 10 devices, main culprits are Pixel 4 XL, Pixel 3, Pixel 2, Galaxy S9.

I did some digging, and there is one place which might be suspicious and might cause a crash, but it would be a blind fix since there’s no repro.

We’re happy to try anything at this point!

Is this fix something we can try out? Or will it be coming out in a new version of Unity?

The fix has to first land into our master branch, only then we can backport it to previous Unity versions, assuming it’s not causing any regressions. Sadly it might take few weeks to happen, and another few weeks for the new Unity release

Anything you can share regarding the cause of the issue or a way to find a workaround?
Our crash rate also skyrocketted on our live version and mostly points at this stack.

Without the repro case, it’s hard to say. But please provide Unity version and stacktraces where this happens, this will help identify if this is a regression.

The specific code above haven’t been touched for several years, so I doubt the issue is there, there’s probably an external factor. Like Android API level upgrade.

If it’s really Android API problem, I guess you could always lower the target API level

Yes, we are also have unacceptable tons of crashes in several games built with Unity 2019.3. We are always stick with the latest API level 29, so I saw hope in your post. Yesterday our team have uploaded game built with the latest 2019.3 and API level 28 and I confirm that it does not help, same crashes. It does not make a sense.

Unity Technologies team, please do something about this, because the latest releases of Unity is not good for Android Developer, 2018.4, 2019.2, 2019.3 - have different problems, but they share unacceptable level of crashes.

FYI, few days ago Google just mailed a letter to all developers about incoming changes, so they won’t accept API 28 soon, only 29 will be acceptable since August for a new apps, and since November for an updates.

Can you share more information, like stacktraces?

We should raise verbosity level and update the game we are testing on, will let you know later.