Closed mattylase closed 1 year ago
Unrolled stacktrace:
Unrolling /Users/clemente.tort/realm-java/tools/stack.log from Realm Java 10.11.0 (base) using ABI arm64-v8a
********** Crash dump: **********
#01 0x000000000039ccc4 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
abort_message
/buildbot/src/android/ndk-release-r23/toolchain/llvm-project/libcxx/../../../toolchain/llvm-project/libcxxabi/src/abort_message.cpp:76:5
#02 0x000000000039ceec /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
demangling_terminate_handler()
/buildbot/src/android/ndk-release-r23/toolchain/llvm-project/libcxx/../../../toolchain/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:62:21
#03 0x000000000039cd7c /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
std::__terminate(void (*)())
/buildbot/src/android/ndk-release-r23/toolchain/llvm-project/libcxx/../../../toolchain/llvm-project/libcxxabi/src/cxa_handlers.cpp:59:9
#04 0x000000000039cd14 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (std::terminate()+56) (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
std::terminate()
/buildbot/src/android/ndk-release-r23/toolchain/llvm-project/libcxx/../../../toolchain/llvm-project/libcxxabi/src/cxa_handlers.cpp:88:17
#05 0x00000000003b837c /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
__clang_call_terminate
??:0:0
#06 0x00000000004ba69c /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Allocator::translate_critical(realm::Allocator::RefTranslation*, unsigned long) const
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/alloc.hpp:592:1
realm::Allocator::translate(unsigned long) const
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/alloc.hpp:598:16
#07 0x0000000000622398 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Array::init_from_ref(unsigned long)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/array.hpp:112:32
realm::Spec::init(realm::MemRef)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/spec.cpp:47:13
#08 0x0000000000626e94 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Spec::init(unsigned long)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/spec.cpp:36:5
realm::Spec::init_from_parent()
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/spec.hpp:178:12
realm::Table::init(unsigned long, realm::ArrayParent*, unsigned long, bool, bool)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/table.cpp:571:12
#09 0x00000000005b4ff0 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Group::create_table_accessor(unsigned long)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/group.cpp:942:20
#10 0x00000000004240ac /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Group::do_get_table(unsigned long)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/group.cpp:816:21
realm::Group::do_get_table(unsigned long) const
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/group.hpp:1145:38
realm::Group::get_table(realm::TableKey) const
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/group.hpp:951:26
realm::ObjectSchema::ObjectSchema(realm::Group const&, realm::StringData, realm::TableKey)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/object_schema.cpp:127:23
#11 0x000000000042d714 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
void std::__ndk1::allocator<realm::ObjectSchema>::construct<realm::ObjectSchema, realm::Group const&, realm::StringData&, realm::TableKey&>(realm::ObjectSchema*, realm::Group const&, realm::StringData&, realm::TableKey&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:1921:31
void std::__ndk1::allocator_traits<std::__ndk1::allocator<realm::ObjectSchema> >::__construct<realm::ObjectSchema, realm::Group const&, realm::StringData&, realm::TableKey&>(std::__ndk1::integral_constant<bool, true>, std::__ndk1::allocator<realm::ObjectSchema>&, realm::ObjectSchema*, realm::Group const&, realm::StringData&, realm::TableKey&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:1784:21
void std::__ndk1::allocator_traits<std::__ndk1::allocator<realm::ObjectSchema> >::construct<realm::ObjectSchema, realm::Group const&, realm::StringData&, realm::TableKey&>(std::__ndk1::allocator<realm::ObjectSchema>&, realm::ObjectSchema*, realm::Group const&, realm::StringData&, realm::TableKey&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:1605:14
void std::__ndk1::vector<realm::ObjectSchema, std::__ndk1::allocator<realm::ObjectSchema> >::__construct_one_at_end<realm::Group const&, realm::StringData&, realm::TableKey&>(realm::Group const&, realm::StringData&, realm::TableKey&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/vector:924:5
realm::ObjectSchema& std::__ndk1::vector<realm::ObjectSchema, std::__ndk1::allocator<realm::ObjectSchema> >::emplace_back<realm::Group const&, realm::StringData&, realm::TableKey&>(realm::Group const&, realm::StringData&, realm::TableKey&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/vector:1683:9
realm::ObjectStore::schema_from_group(realm::Group const&)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/object_store.cpp:909:20
#12 0x00000000004686e0 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Realm::read_schema_from_group_if_needed()
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/shared_realm.cpp:232:19
#13 0x0000000000468120 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Realm::Realm(realm::Realm::Config, realm::util::Optional<realm::VersionID>, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>, realm::Realm::MakeSharedTag)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/shared_realm.cpp:85:9
#14 0x000000000048fe50 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
std::__ndk1::__compressed_pair_elem<realm::Realm, 1, false>::__compressed_pair_elem<realm::Realm::Config&&, realm::util::Optional<realm::VersionID>&&, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>&&, realm::Realm::MakeSharedTag&&, 0ul, 1ul, 2ul, 3ul>(std::__ndk1::piecewise_construct_t, std::__ndk1::tuple<realm::Realm::Config&&, realm::util::Optional<realm::VersionID>&&, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>&&, realm::Realm::MakeSharedTag&&>, std::__ndk1::__tuple_indices<0ul, 1ul, 2ul, 3ul>)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:2278:9
std::__ndk1::__compressed_pair<std::__ndk1::allocator<realm::Realm>, realm::Realm>::__compressed_pair<std::__ndk1::allocator<realm::Realm>&, realm::Realm::Config&&, realm::util::Optional<realm::VersionID>&&, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>&&, realm::Realm::MakeSharedTag&&>(std::__ndk1::piecewise_construct_t, std::__ndk1::tuple<std::__ndk1::allocator<realm::Realm>&>, std::__ndk1::tuple<realm::Realm::Config&&, realm::util::Optional<realm::VersionID>&&, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>&&, realm::Realm::MakeSharedTag&&>)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:2362:9
std::__ndk1::__shared_ptr_emplace<realm::Realm, std::__ndk1::allocator<realm::Realm> >::__shared_ptr_emplace<realm::Realm::Config, realm::util::Optional<realm::VersionID>, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>, realm::Realm::MakeSharedTag>(std::__ndk1::allocator<realm::Realm>, realm::Realm::Config&&, realm::util::Optional<realm::VersionID>&&, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>&&, realm::Realm::MakeSharedTag&&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:3635:16
std::__ndk1::enable_if<!(is_array<realm::Realm>::value), std::__ndk1::shared_ptr<realm::Realm> >::type std::__ndk1::make_shared<realm::Realm, realm::Realm::Config, realm::util::Optional<realm::VersionID>, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>, realm::Realm::MakeSharedTag>(realm::Realm::Config&&, realm::util::Optional<realm::VersionID>&&, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>&&, realm::Realm::MakeSharedTag&&)
/opt/android-sdk-linux/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/memory:4441:26
realm::Realm::make_shared_realm(realm::Realm::Config, realm::util::Optional<realm::VersionID>, std::__ndk1::shared_ptr<realm::_impl::RealmCoordinator>)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/shared_realm.hpp:416:16
realm::_impl::RealmCoordinator::do_get_realm(realm::Realm::Config, std::__ndk1::shared_ptr<realm::Realm>&, realm::util::Optional<realm::VersionID>, realm::util::CheckedUniqueLock&)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/impl/realm_coordinator.cpp:320:13
realm::_impl::RealmCoordinator::get_realm(realm::Realm::Config, realm::util::Optional<realm::VersionID>)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/impl/realm_coordinator.cpp:284:5
#15 0x00000000004693b0 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
realm::Realm::get_shared_realm(realm::Realm::Config)
/tmp/realm-java/realm/realm-library/src/main/cpp/realm-core/src/realm/object-store/shared_realm.cpp:157:25
#16 0x00000000003ea8d8 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/base.apk!librealm-jni.so (Java_io_realm_internal_OsSharedRealm_nativeGetSharedRealm+132) (BuildId: 8233dde6fe4a96bdf9f1846a1e12689b58a893c1)
Java_io_realm_internal_OsSharedRealm_nativeGetSharedRealm
/tmp/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp:70:28
#19 0x00000000024a08d8 /data/app/~~l-fpfTv3JOEU-rNFGVXnvA==/com.ourapp.sm-OzTGXILDWCH9vNJbAAejRg==/oat/arm64/base.vdex
@jedelbo
@clementetb thanks & sorry for the spam, I'm the essentially the sole developer for an enterprise product with a large amount of angry customers & business people, so was banging the drum where I could.
As a temporary solution, I ended up having to downgrade back to 4.3.3, and rewrite the toflow()
operator myself using a normal RealmChangeListener
, but the majority of the native crashes no longer appear in the Play Console.
@mattylase Have you gathered any other observations around this issue that could be used to reason about the root cause?
@rorbech - nope. I rolled it back to the working version of 4.3.3, and ended up leaving that job.
For what it's worth, the context I can add is that this was for an "enterprise" use case, with lots of really weird device manufacturers that would be farther outside of the typical popular consumer models (though we were seeing issues on your average Samsung/Pixel device as well). I don't think that should make a difference, but who knows.
Thanks for getting back to us @mattylase. The most likely guess is that there might still be an unhandled corner case when migrating from a really old release. In v4.3.3 we were using Core v5.1.2 and since then there has been two major refactorings in Core so it seems like your specific use case, whichever it is, went under the radar. We will close the issue as we can't investigate further.
How frequently does the bug occur?
All the time
Description
Our app crashes on startup, after a period of not crashing.
Overview
We recently performed an upgrade from a very old
realm-gradle-plugin
of version4.3.3
to version10.11.0
. The upgrade went fine, and we saw no issues in testing, or in our initial rollout to customers.Now, after around a month or so in production, we have begun to see random native crashes. None of these are reproducible in test, but happen consistently to customers who have had the app installed for some time.
Stacktrace & log output
Can you reproduce the bug?
Not yet
Reproduction Steps
Can't repro locally - employees within our own company have it happening on their devices, but it isn't something I can produce on my dev machine.
Version
10.11.0, 10.9.0 (tried downgrading and pushing to an affected user)
What SDK flavour are you using?
Local Database only
Are you using encryption?
Yes, using encryption
Platform OS and version(s)
Android 9, 10, 11 - possibly more
Build environment
Android Studio version: 2021.2.1 (but our CI pipeline does not use AS) Android Build Tools version: 30.0.3 Gradle version: 7.1.3