firebase / firebase/firebase-unity-sdk

[Bug] SIGSEGV - Pure virtual function called!

Open
#1,006 11 comments 0 reactions 0 assignees View on GitHub
api: storage type: question
Dominant language
C#
Stars
320
Forks
60
Avg merge
13h 32m
Merged PRs (30d)
13

Description

### Description

We have caught the following issue with Firebase 11.9.0

In the Thread message in Google Play there is the message "Pure virtual function called!"

### Reproducing the issue

This does not seem to affect all users so far it seems to affect lower end Android devices like the Lenovo TB310FU with Android 13 (SDK 33)

### Firebase Unity SDK Version

11.9.0

### Unity editor version

2021.3.33f1

### Installation Method

.unitypackage

### Problematic Firebase Component(s)

Database

### Other Firebase Component(s) in use

Analytics, Authentication, Crashlytics, DynamicLinks, Remote Config, Storage

### Additional SDKs you are using

_No response_

### Targeted Platform(s)

Android

### Unity editor platform

Mac

### Scripting Runtime

IL2CPP

### Release Distribution Type

Pre-built SDK from https://firebase.google.com/download/unity

### Relevant Log Output

```shell
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 1881 >>> com.theapp <<<

backtrace:
#00 pc 0x0000000000053324 /apex/com.android.runtime/lib64/bionic/libc.so (abort+180)
#01 pc 0x000000000033b1cc /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/lib/arm64/libFirebaseCppApp-11_9_0.so (abort_message+236)
#02 pc 0x0000000000337f3c /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/lib/arm64/libFirebaseCppApp-11_9_0.so (__cxa_pure_virtual+16)
#03 pc 0x00000000002e6d7c /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/lib/arm64/libFirebaseCppApp-11_9_0.so (firebase::storage::internal::ControllerInternal::CppStorageListenerCallback(_JNIEnv*, _jclass*, long, long, _jobject*, unsigned char)+328)
#04 pc 0x0000000000351e30 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144)
#05 pc 0x00000000005b980c /apex/com.android.art/lib64/libart.so (nterp_helper+3852)
#06 pc 0x00000000000009fe /data/user/0/com.theapp/cache/storage_resources_lib.jar (com.google.firebase.storage.internal.cpp.CppStorageListener.onProgress+46)
#07 pc 0x00000000005ba674 /apex/com.android.art/lib64/libart.so (nterp_helper+7540)
#08 pc 0x00000000002da364 /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/oat/arm64/base.vdex (com.google.firebase.storage.j.a+8)
#09 pc 0x00000000005ba674 /apex/com.android.art/lib64/libart.so (nterp_helper+7540)
#10 pc 0x00000000002dcd28 /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/oat/arm64/base.vdex (com.google.firebase.storage.TaskListenerImpl.g+4)
#11 pc 0x00000000005b9854 /apex/com.android.art/lib64/libart.so (nterp_helper+3924)
#12 pc 0x00000000002dcba8 /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/oat/arm64/base.vdex (com.google.firebase.storage.TaskListenerImpl.b)
#13 pc 0x00000000005b8934 /apex/com.android.art/lib64/libart.so (nterp_helper+52)
#14 pc 0x00000000002dcaf0 /data/app/~~Xzi9mZ4hZj3vG7OLKnwmew==/com.theapp-fth9NRBb3RJsQYuigNJB5A==/oat/arm64/base.vdex (com.google.firebase.storage.x.run+12)
#15 pc 0x0000000000ab5e1c /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (android.os.Handler.dispatchMessage+76)
#16 pc 0x0000000000ab9ac8 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (android.os.Looper.loopOnce+1000)
#17 pc 0x0000000000ab962c /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (android.os.Looper.loop+1132)
#18 pc 0x0000000000864ec4 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (android.app.ActivityThread.main+2404)
#19 pc 0x000000000033b680 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640)
#20 pc 0x000000000037cb18 /apex/com.android.art/lib64/libart.so (_jobject* art::InvokeMethod<(art::PointerSize)8>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1556)
#21 pc 0x000000000037c4f4 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*) (.__uniq.165753521025965369065708152063621506277)+32)
#22 pc 0x00000000003846a8 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (art_jni_trampoline+120)
#23 pc 0x0000000000dd32b8 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)
#24 pc 0x0000000000ddef98 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (com.android.internal.os.ZygoteInit.main+3672)
#25 pc 0x000000000033b680 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640)
#26 pc 0x00000000004e2a90 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+728)
#27 pc 0x000000000057aa68 /apex/com.android.art/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+156)
#28 pc 0x00000000000bdcd8 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+120)
#29 pc 0x00000000000c9c94 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector const&, bool)+948)
#30 pc 0x0000000000002560 /system/bin/app_process64 (main+1280)
#31 pc 0x000000000004b630 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+96)
```

### If using CocoaPods for Apple platforms, the project's Podfile.lock

Expand Podfile.lock snippet

```yml

👀 Replace this line with the contents of your Podfile.lock!

```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing on the Lenovo TB310FU or a comparable Android 13 device using Unity 2021.3.33f1, IL2CPP, and Firebase Unity SDK 11.9.0. Inspect the stack entry points firebase::storage::internal::ControllerInternal::CppStorageListenerCallback and CppStorageListener.onProgress in libFirebaseCppApp-11_9_0.so. Done means the storage operation no longer reaches __cxa_pure_virtual and the regression is covered by an appropriate test.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, cpp, unity
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.