rive-app / rive-app/rive-android

Animation crashes and close host activity

Open
#426 1 comment 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

triage
Dominant language
Kotlin
Stars
538
Forks
66
PR merge metrics
No merged PRs in 30d

Description

Description

While playing an animation and navigating through the artboards, the application crashes at an unpredictable point (the crash happens at a different position each time). When the crash occurs, the host activity is immediately closed, and the user is returned to the previous activity(not terminating the app). A native crash log is generated and displayed/logged after the crash.

Versions, Device, and Other Information
  • Rive Android Runtime Version: 10.5.1
  • Rive API: Legacy
  • Device: Samsung S22 Ultra | Android Emulator
  • Frequency: often
  • Dependencies with native libraries: ExoPlayer
Reproduction Steps
  1. open rive experience, leave it advancing automatically without interacting with it
  2. it advance through arboards
  3. at certain point when it's auto-advancing the activity crashes and comeback to previous one
Expected Behavior

Expected behavior is that the animation auto advance and finishes normally

Additional context
-  A  tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
-  A  pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
-  A  signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000004
-  A  Cause: null pointer dereference
-  A      x0  b400006f3ab93150  x1  b40000700ab7a530  x2  b400006fdaba0630  x3  0000000000000000
-  A      x4  0000000000000003  x5  0000000000000000  x6  0000000000000000  x7  0000000000000000
-  A      x8  0000006cb8fe0500  x9  0000000000000000  x10 0000000000000780  x11 0000000000000000
-  A      x12 0000000000000000  x13 0000000000000780  x14 0000000000000438  x15 0000000080000000
-  A      x16 0000006cd17bd488  x17 0000006cd16fecfc  x18 0000006cb31ec000  x19 b400006f3ab93150
-  A      x20 b400006fdaba0630  x21 0000000000000000  x22 b40000700ab7a530  x23 b400006e6aebc6f0
-  A      x24 0000006cb8fe0880  x25 0000000000000000  x26 0000000000000000  x27 0000000000000000
-  A      x28 0000000000000000  x29 0000006cb8fdef30
-  A      lr  0000006cd163a2e8  sp  0000006cb8fdef30  pc  0000006cd16fed18  pst 0000000060000000
-  A  28 total frames
-  A  backtrace:
-  A        #00 pc 0000000000358d18  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive::gpu::RenderBufferGLImpl::onMap()+28) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #01 pc 00000000002942e4  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive::Mesh::draw(rive::Renderer*, rive::RenderImage const*, rive::ImageSampler, rive::BlendMode, float)+100) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #02 pc 000000000028f028  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive::Image::draw(rive::Renderer*)+116) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #03 pc 00000000001e0d30  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive::Artboard::draw(rive::Renderer*, rive::Artboard::DrawOption)+688) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #04 pc 00000000001b42f8  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (Java_app_rive_runtime_kotlin_core_Artboard_cppDrawAligned+392) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #05 pc 000000000033f500  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #06 pc 0000000000328194  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #07 pc 00000000002d9348  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+216) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #08 pc 0000000000566ca4  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+1752) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #09 pc 00000000005cb010  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+11904) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #10 pc 0000000000317a88  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #11 pc 00000000016b5ec8  <anonymous:6d811a7000>
-  A        #12 pc 00000000002d763c  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.11186287395527938019)+332) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #13 pc 00000000002d6e70  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+888) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #14 pc 000000000033f638  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #15 pc 0000000000b333f0  [anon_shmem:dalvik-jit-code-cache] (offset 0x2000000) (app.rive.runtime.kotlin.renderers.RiveArtboardRenderer.draw+704)
-  A        #16 pc 0000000000328194  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #17 pc 00000000003262f8  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+924) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #18 pc 00000000006625f4  /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+116) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #19 pc 000000000035024c  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType) (.__uniq.99033978352804627313491551960229047428)+412) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #20 pc 00000000005e5b40  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list) (.__uniq.99033978352804627313491551960229047428.llvm.12752159728553650626)+72) (BuildId: b229f9d1b6196afaae086f29f029f907)
-  A        #21 pc 00000000001c5e1c  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive_android::JNIExceptionHandler::CallVoidMethod(_JNIEnv*, _jobject*, _jmethodID*, ...)+120) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #22 pc 00000000001cd6b8  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive_android::WorkerImpl::doFrame(rive_android::ITracer*, rive_android::DrawableThreadState*, _jobject*, std::__ndk1::chrono::time_point<std::__ndk1::chrono::steady_clock, std::__ndk1::chrono::duration<long long, std::__ndk1::ratio<1l, 1000000000l>>>)+160) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #23 pc 00000000001cd298  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #24 pc 00000000001c7c74  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (rive_android::WorkerThread::threadMain()+488) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #25 pc 00000000001c7a54  /data/app/~~mFYiiy5_b_CrOSRZhL4rjg==/com.myapp.android-NKgQBSdv45Pibvv1vU8yOw==/base.apk!librive-android.so (offset 0x2780000) (BuildId: 87822c46b0e81c2e907cdd023e839a3aa3a6a07d)
-  A        #26 pc 0000000000080df8  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+232) (BuildId: 2445fc73ede03b9536eef49355aff375)
-  A        #27 pc 0000000000073dd8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 2445fc73ede03b9536eef49355aff375)
-  E  Tombstone written to: tombstone_04

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the native crash entry point rive::gpu::RenderBufferGLImpl::onMap(), then follow the Mesh::draw, Artboard::draw, and RiveArtboardRenderer.draw frames shown in the stack trace. Reproduce automatic artboard navigation on the listed device or emulator with runtime 10.5.1 and ExoPlayer. Done means the animation completes without a SIGSEGV or closing the host activity.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.