realm / realm-js

Realm is a mobile database: an alternative to SQLite & key-value stores
https://realm.io
Apache License 2.0
5.62k stars 558 forks source link

6.0.3 iOS native crash - Attempted to dereference null pointer. #3112

Closed cristianoccazinsp closed 9 months ago

cristianoccazinsp commented 3 years ago

Goals

Regular offline use (no syncing)

Expected Results

No crashes

Actual Results

Random crash due to garbage / null reference.

The following crash was reported from Realm code.

EXC_BAD_ACCESS Attempted to dereference null pointer. 
    Tenant Move-In realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

While I understand this is probably extremely hard to debug/reproduce in a controlled environment, it would be great for Realm to attempt to handle null pointer exceptions in a way that won't crash the whole app, but rather cause a query error or something. This is probably one out of 10 different realm-related native crashes that are reported daily from our crash reporting tool.

Similar crashes: https://github.com/realm/realm-js/issues/3111 https://github.com/realm/realm-js/issues/2853 https://github.com/realm/realm-js/issues/2828 https://github.com/realm/realm-js/issues/2713

Steps to Reproduce

Regular realm usage without any sync/online features.

Code Sample

Regular offline use, no special code required.

Version of Realm and Tooling

cristianoccazinsp commented 3 years ago

Another one popped out today... May be related:

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x10. 
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool JSC::symbolTableGet<JSC::JSGlobalObject>(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSObject::get(JSC::JSGlobalObject*, JSC::PropertyName) const
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectGetProperty
    zinspector3 void std::__1::__call_once_proxy<std::__1::tuple<realm::SyncManager& realm::js::syncManagerShared<realm::jsc::Types>(realm::jsc::Types::Context&)::{lambda()#1}&&> >(void*)
    zinspector3 void std::__1::__call_once_proxy<std::__1::tuple<realm::SyncManager& realm::js::syncManagerShared<realm::jsc::Types>(realm::jsc::Types::Context&)::{lambda()#1}&&> >(void*)
    zinspector3 bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    zinspector3 OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    zinspector3 OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::sorted>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

We have been getting a significant amount of crashes ever since 5.0.3 to 6.x migration from Realm.

brianomchugh commented 3 years ago

@cristianoccazinsp did you not get these errors with 5.03? I just started testing my first app with realm and already ran into these errors (specifically the 2nd one you posted)

cristianoccazinsp commented 3 years ago

I definitely got various similar errors with 5.0.3, but they have become much more frequent with 6.x, and also look like new errors (and possibly even a memleak).

cristianoccazinsp commented 3 years ago

Another similar one just popped, yet different:

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x8. 
    zinspector3 realm::util::EventLoopSignal<realm::util::EventLoopDispatcher<void (std::__1::shared_ptr<realm::SyncSession>, realm::SyncError)>::Callback>::EventLoopSignal(realm::util::EventLoopDispatcher<void (std::__1::shared_ptr<realm::SyncSession>, realm::SyncError)>::Callback&&)::{lambda(void const*)#2}::__invoke(void const*)
    zinspector3 bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    zinspector3 bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    zinspector3 realm::util::EventLoopSignal<realm::util::EventLoopDispatcher<void (realm::ThreadSafeReference<realm::Realm>&&, std::exception_ptr)>::Callback>::EventLoopSignal(realm::util::EventLoopDispatcher<void (realm::ThreadSafeReference<realm::Realm>&&, std::exception_ptr)>::Callback&&)::{lambda(void const*)#2}::__invoke(void const*)
    zinspector3 OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    zinspector3 realm::util::EventLoopSignal<realm::util::EventLoopDispatcher<void (realm::ThreadSafeReference<realm::Realm>&&, std::exception_ptr)>::Callback>::EventLoopSignal(realm::util::EventLoopDispatcher<void (realm::ThreadSafeReference<realm::Realm>&&, std::exception_ptr)>::Callback&&)::{lambda(void const*)#2}::__invoke(void const*)
    zinspector3 OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Why would "sync session" even be used if the database is used entirely offline? Either way, there are about 10 crashes / day for an app that's actively used by about 2000 people. The number seem to have increased significantly after the 5 to 6 migration.

Looking at breadcrumbs, this one seemed to happen in a very curious scenario:

cristianoccazinsp commented 3 years ago

Here's another crash stack trace, looks like this is a recurring crash. I wish I could provide more info:

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x8. 
    Tenant Move-In realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start
cristianoccazinsp commented 3 years ago

Sorry for the spam, here's another one (new) crash, a SIGABRT this time. These crashes are happening too frequently.

SIGABRT
    /usr/lib/system/libsystem_kernel.dylib ___pthread_kill
    /usr/lib/system/libsystem_pthread.dylib _pthread_kill
    /usr/lib/system/libsystem_c.dylib _abort
    Tenant Move-In realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    Tenant Move-In realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    Tenant Move-In realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    Tenant Move-In realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    Tenant Move-In realm::StringData realm::ConstObj::get<realm::StringData>(realm::ColKey) const
    Tenant Move-In void std::__1::__call_once_proxy<std::__1::tuple<void (&)()> >(void*)
    Tenant Move-In void std::__1::__call_once_proxy<std::__1::tuple<void (&)()> >(void*)
    Tenant Move-In void std::__1::__call_once_proxy<std::__1::tuple<void (&)()> >(void*)
    Tenant Move-In realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    Tenant Move-In realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Tenant Move-In realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Tenant Move-In realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Tenant Move-In realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Tenant Move-In realm::Obj realm::Results::get<realm::Obj>(unsigned long)
    Tenant Move-In unsigned long realm::Results::index_of<realm::util::Optional<double> >(realm::util::Optional<double> const&)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_length>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::getStaticValue(JSC::JSGlobalObject*, JSC::PropertyName)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::getOwnPropertySlot(JSC::JSObject*, JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_slow_path_get_by_id
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start
cristianoccazinsp commented 3 years ago

Crash logs from XCode reporting. Interestingly, it says it should be reported here:

Screen Shot 2020-08-11 at 14 51 10 Screen Shot 2020-08-11 at 14 52 36

@kneth I have attached the XCode crash log files, perhaps this can help with diagnosing the problem. crash files.zip

cristianoccazinsp commented 3 years ago

This is a new one, also on 6.0.3:

EXC_BAD_ACCESS Attempted to dereference null pointer. 
    Tenant Move-In realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    Tenant Move-In bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const
    Tenant Move-In realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    Tenant Move-In realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmObjectClass<realm::jsc::Types>::get_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmObjectClass<realm::jsc::Types>::get_property>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::call(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::callGetter(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_slow_path_get_by_id
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Perhaps this is caused by having a single global realm instance across the app instead of creating a new one before each query?

kneth commented 3 years ago

@cristianoccazinsp As we are trying to get a hold on this issue, I would like to know if you see the same error on Android?

cristianoccazinsp commented 3 years ago

Haven't seen this on Android at all.

kneth commented 3 years ago

@cristianoccazinsp

App was sleeping / background for ~ minutes App resumed, and 2 seconds afterwards crashed with this error.

Can it be related to https://github.com/realm/realm-js/issues/3162?

cristianoccazinsp commented 3 years ago

@kneth the crash seems different, and I'm not entirely sure how to reproduce that one. Does realm just crash if the app is in background and the phone is locked? I'm sure I have seen the app run just fine in that situation since we use background tasks all the time.

kneth commented 3 years ago

@cristianoccazinsp When an iOS app is suspended (in recent iOS versions), the data and files are encrypted. Once the app is activated, the decryption might happen later than Realm's access to the realm files. Then Realm will believe the file is corrupted. Unfortunately it is easy to solve (a pure Objective C or Swift app can be fixed: https://github.com/realm/realm-cocoa/issues/5912#issuecomment-421094170).

I wanted to bring it to your attention and have you verify it is not the same issue.

cristianoccazinsp commented 3 years ago

@kneth I will try to reproduce the scenario locally to see if it is in fact the same issue. I never noticed any crash when the phone is suspended though, but perhaps I wasn't giving it enough time.

On the other hand, the crash / stack trace message seems different, doesn't it?

kneth commented 3 years ago

@cristianoccazinsp Thanks for the update.

On the other hand, the crash / stack trace message seems different, doesn't it?

Indeed but corruption (true or due to an encrypted file) will turn up is many random ways.

You mention that you are not using sync, but the original stack trace hints otherwise:

realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**)
cristianoccazinsp commented 3 years ago

Hmm, I'm definitely not using sync, at least not on purpose. Having said this, I have never been able to reproduce the crash myself, not even locking the device.

Would it be too complex to add some extra defensive programming here and there to add null checks and prevent crashes? It would be great to have just the query crash rather than the whole app, even if we don't know why the object was suddenly garbage collected / null.

kneth commented 3 years ago

@cristianoccazinsp

Would it be too complex to add some extra defensive programming here and there to add null checks and prevent crashes?

It is possible, and a JavaScript exception will be better in many cases. I'll add it to the backlog and get it prioritized.

cristianoccazinsp commented 3 years ago

I keep seeing iOS crashes with similar stack traces, and they all seem to happen with very little free memory (~45mb reported by the crash analytics tool). Not sure how easy it would be to debug a possible memory leak within the C++ or Objective C Realm's code, or even in the non Realm code. I've tried to profile the app for a while and didn't observe any memory leak or anything that would cause the app to end up with so little memory.

Here's another stack trace:

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x8. 
    Tenant Move-In realm::jsc::ObjectWrap<realm::js::ObservableClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start
steffenagger commented 3 years ago

@cristianoccazinsp We have released v6.1.1 with core fixes which addresses these issues. Could I ask you to upgrade & test this out?

cristianoccazinsp commented 3 years ago

I will, it may take some days or a few weeks until the release is live and we get enough testing, but I will keep you posted.

steffenagger commented 3 years ago

@cristianoccazinsp any update on this?

cristianoccazinsp commented 3 years ago

@steffenagger I'm still seeing crashes. See the following stack trace (different app but updated Realm (6.1.2) with the same code):

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x10. 
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool JSC::symbolTableGet<JSC::JSGlobalObject>(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSObject::get(JSC::JSGlobalObject*, JSC::PropertyName) const
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectGetProperty
    zinspector3 realm::js::SSLVerifyCallbackSyncThreadFunctor<realm::jsc::Types>::main_loop_handler(realm::js::SSLVerifyCallbackSyncThreadFunctor<realm::jsc::Types>*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned short, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int)
    zinspector3 realm::js::SSLVerifyCallbackSyncThreadFunctor<realm::jsc::Types>::main_loop_handler(realm::js::SSLVerifyCallbackSyncThreadFunctor<realm::jsc::Types>*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned short, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int)
    zinspector3 realm::NodeHeader::get_byte_size_from_header(char const*)
    zinspector3 OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    zinspector3 OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::sorted>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start
kneth commented 3 years ago

@cristianoccazinsp

realm::js::wrap<&realm::js::ResultsClass::sorted>(OpaqueJSContext const, OpaqueJSValue, OpaqueJSValue, unsigned long, OpaqueJSValue const const*, OpaqueJSValue const**)

Does it also happen when you don't sort?

cristianoccazinsp commented 3 years ago

I will need to go through the various stack traces to see if there are other similar crashes with realm in it, but it's impossible to tell since it happens randomly and only in production (i.e., can't reproduce locally).

cristianoccazinsp commented 3 years ago

Here's another crash report, this time from XCode (seems more comprehensive than the above):

Thread 2 name:
Thread 2 Crashed:
0   zinspector3                     0x00000001006dc85c std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_map<std:... + 116 (__hash_table:2494)
1   zinspector3                     0x00000001006dc814 std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_trait... + 4 (unordered_map:445)
2   zinspector3                     0x00000001006dc814 std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_map<std:... + 44 (__hash_table:2489)
3   zinspector3                     0x000000010070dc60 unsigned long std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_map<std::__1::basic_strin... + 20 (__hash_table:2718)
4   zinspector3                     0x000000010070dc60 std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std:... + 20 (unordered_map:1282)
5   zinspector3                     0x000000010070dc60 realm::jsc::ObjectWrap<realm::js::RealmObjectClass<realm::jsc::Types> >::create_instance_by_schema(OpaqueJSContext const*, OpaqueJSValue*&, realm::ObjectSchema const&, realm::js::RealmObject<realm:... + 388 (jsc_class.hpp:679)
6   zinspector3                     0x000000010070d914 OpaqueJSValue* realm::js::Object<realm::jsc::Types>::create_instance_by_schema<realm::js::RealmObjectClass<realm::jsc::Types> >(OpaqueJSContext const*, OpaqueJSValue*&, realm::ObjectSchema const&, ... + 20 (jsc_object.hpp:125)
7   zinspector3                     0x000000010070d914 realm::jsc::Types::Object realm::js::create_instance_by_schema<realm::jsc::Types, realm::js::RealmObjectClass<realm::jsc::Types> >(realm::jsc::Types::Context, realm::jsc::Types::Function&, realm::O... + 20 (js_types.hpp:369)
8   zinspector3                     0x000000010070d914 realm::js::RealmObjectClass<realm::jsc::Types>::create_instance(OpaqueJSContext const*, realm::js::RealmObject<realm::jsc::Types>) + 220 (js_realm_object.hpp:146)
9   zinspector3                     0x0000000100725ffc realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key(OpaqueJSContext const*, OpaqueJSValue*, realm::js::Arguments<realm::jsc::Types>&, realm::js::ReturnValue<realm::jsc::Types>&) + 272 (js_realm.hpp:935)
10  zinspector3                     0x0000000100721484 OpaqueJSValue const* realm::js::wrap<&(realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key(OpaqueJSContext const*, OpaqueJSValue*, realm::js::Arguments<realm::jsc::Types>&, realm::js::... + 56 (jsc_class.hpp:989)
11  JavaScriptCore                  0x00000001bf843a0c long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*) + 420 (APICallbackFunction.h:63)
12  JavaScriptCore                  0x00000001bf7f8a88 llint_entry + 135240
13  JavaScriptCore                  0x00000001bf7f6118 llint_entry + 124632
14  JavaScriptCore                  0x00000001bf7f61c0 llint_entry + 124800
15  JavaScriptCore                  0x00000001bf7d77f8 vmEntryToJavaScript + 248
16  JavaScriptCore                  0x00000001bfd868c8 JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 444 (JITCodeInlines.h:38)
17  JavaScriptCore                  0x00000001bff6c348 JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 168 (CallData.cpp:59)
18  JavaScriptCore                  0x00000001bf858690 JSObjectCallAsFunction + 504 (JSObjectRef.cpp:738)
19  zinspector3                     0x000000010072725c realm::js::Function<realm::jsc::Types>::call(OpaqueJSContext const*, OpaqueJSValue* const&, OpaqueJSValue* const&, unsigned long, OpaqueJSValue const* const*) + 32 (jsc_function.hpp:29)
20  zinspector3                     0x000000010072725c realm::js::RealmClass<realm::jsc::Types>::write(OpaqueJSContext const*, OpaqueJSValue*, realm::js::Arguments<realm::jsc::Types>&, realm::js::ReturnValue<realm::jsc::Types>&) + 164 (js_realm.hpp:1078)
21  zinspector3                     0x00000001007216e4 OpaqueJSValue const* realm::js::wrap<&(realm::js::RealmClass<realm::jsc::Types>::write(OpaqueJSContext const*, OpaqueJSValue*, realm::js::Arguments<realm::jsc::Types>&, realm::js::ReturnValue<realm... + 56 (jsc_class.hpp:989)
22  JavaScriptCore                  0x00000001bf843a0c long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*) + 420 (APICallbackFunction.h:63)
23  JavaScriptCore                  0x00000001bf7f8a88 llint_entry + 135240
24  JavaScriptCore                  0x00000001bf7f6118 llint_entry + 124632
25  JavaScriptCore                  0x00000001bf7f61c0 llint_entry + 124800
26  JavaScriptCore                  0x00000001bf7f6118 llint_entry + 124632
27  JavaScriptCore                  0x00000001bf7f75f4 llint_entry + 129972
28  JavaScriptCore                  0x00000001bf7f6118 llint_entry + 124632
29  JavaScriptCore                  0x00000001bf7f61c0 llint_entry + 124800
30  JavaScriptCore                  0x00000001bf7f6118 llint_entry + 124632
31  JavaScriptCore                  0x00000001bf7d77f8 vmEntryToJavaScript + 248
32  JavaScriptCore                  0x00000001bfd868c8 JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 444 (JITCodeInlines.h:38)
33  JavaScriptCore                  0x00000001c0005158 JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*) + 712 (JSBoundFunction.cpp:63)
34  JavaScriptCore                  0x00000001bf7d7974 vmEntryToNative + 260
35  JavaScriptCore                  0x00000001bfd8691c JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 528 (Interpreter.cpp:900)
36  JavaScriptCore                  0x00000001bff6c348 JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 168 (CallData.cpp:59)
37  JavaScriptCore                  0x00000001bf858690 JSObjectCallAsFunction + 504 (JSObjectRef.cpp:738)
38  zinspector3                     0x00000001006af6a8 facebook::jsc::JSCRuntime::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) + 172 (JSCRuntime.cpp:1208)
39  zinspector3                     0x00000001006b79e0 facebook::jsi::Function::call(facebook::jsi::Runtime&, facebook::jsi::Value const*, unsigned long) const + 44 (jsi-inl.h:224)
40  zinspector3                     0x00000001006b79e0 facebook::jsi::Function::call(facebook::jsi::Runtime&, std::initializer_list<facebook::jsi::Value>) const + 44 (jsi-inl.h:229)
41  zinspector3                     0x00000001006b79e0 facebook::jsi::Value facebook::jsi::Function::call<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<c... + 244 (jsi-inl.h:237)
42  zinspector3                     0x00000001006b7840 facebook::react::JSIExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, st... + 68 (JSIExecutor.cpp:217)
43  zinspector3                     0x00000001006b7840 decltype(std::__1::forward<facebook::react::JSIExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std:... + 68 (type_traits:3545)
44  zinspector3                     0x00000001006b7840 void std::__1::__invoke_void_return_wrapper<void>::__call<facebook::react::JSIExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, st... + 68 (__functional_base:348)
45  zinspector3                     0x00000001006b7840 std::__1::__function::__alloc_func<facebook::react::JSIExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<ch... + 68 (functional:1546)
46  zinspector3                     0x00000001006b7840 std::__1::__function::__func<facebook::react::JSIExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, st... + 96 (functional:1720)
47  zinspector3                     0x00000001005e1108 decltype(std::__1::forward<void (*&)(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)>(fp)(std::__1:... + 32 (type_traits:3545)
48  zinspector3                     0x00000001005e1108 void std::__1::__invoke_void_return_wrapper<void>::__call<void (*&)(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::alloca... + 72 (__functional_base:348)
49  zinspector3                     0x00000001006b5900 std::__1::__function::__value_func<void (std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)>::operator... + 32 (functional:1873)
50  zinspector3                     0x00000001006b5900 std::__1::function<void (std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)>::operator()(std::__1::fun... + 32 (functional:2548)
51  zinspector3                     0x00000001006b5900 facebook::react::JSIExecutor::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, st... + 356 (JSIExecutor.cpp:215)
52  zinspector3                     0x00000001006abca4 std::__1::__function::__value_func<void (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*&&) const + 24 (functional:1873)
53  zinspector3                     0x00000001006abca4 std::__1::function<void (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*) const + 24 (functional:2548)
54  zinspector3                     0x00000001006abca4 facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void (facebook::react::JSExecutor*)>)::$_7::operator()() const + 48 (NativeToJsBridge.cpp:290)
55  zinspector3                     0x00000001006abca4 decltype(std::__1::forward<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void (facebook::react::JSExecutor*)>)::$_7&>(fp)()) std::__1::__invoke<facebook::react::NativeToJ... + 48 (type_traits:3545)
56  zinspector3                     0x00000001006abca4 void std::__1::__invoke_void_return_wrapper<void>::__call<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void (facebook::react::JSExecutor*)>)::$_7&>(facebook::react::Nati... + 48 (__functional_base:348)
57  zinspector3                     0x00000001006abca4 std::__1::__function::__alloc_func<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void (facebook::react::JSExecutor*)>)::$_7, std::__1::allocator<facebook::react::NativeTo... + 48 (functional:1546)
58  zinspector3                     0x00000001006abca4 std::__1::__function::__func<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void (facebook::react::JSExecutor*)>)::$_7, std::__1::allocator<facebook::react::NativeToJsBrid... + 60 (functional:1720)
59  zinspector3                     0x00000001005fd1f8 std::__1::__function::__value_func<void ()>::operator()() const + 20 (functional:1873)
60  zinspector3                     0x00000001005fd1f8 std::__1::function<void ()>::operator()() const + 20 (functional:2548)
61  zinspector3                     0x00000001005fd1f8 facebook::react::tryAndReturnError(std::__1::function<void ()> const&) + 40 (RCTCxxUtils.mm:72)
62  zinspector3                     0x0000000100609944 facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()> const&) + 24 (RCTMessageThread.mm:59)
63  CoreFoundation                  0x00000001b06aba4c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 20 (CFRunLoop.c:1774)
64  CoreFoundation                  0x00000001b06ab1d8 __CFRunLoopDoBlocks + 264 (CFRunLoop.c:1815)
65  CoreFoundation                  0x00000001b06a6318 __CFRunLoopRun + 772 (CFRunLoop.c:2880)
66  CoreFoundation                  0x00000001b06a5ce8 CFRunLoopRunSpecific + 424 (CFRunLoop.c:3192)
67  zinspector3                     0x00000001005f28e0 +[RCTCxxBridge runRunLoop] + 264 (RCTCxxBridge.mm:269)
68  Foundation                      0x00000001b0b17e20 __NSThread__start__ + 848 (NSThread.m:724)
69  libsystem_pthread.dylib         0x00000001b0443d98 _pthread_start + 156 (pthread.c:896)
70  libsystem_pthread.dylib         0x00000001b044774c thread_start + 8
steffenagger commented 3 years ago

Seeing that all previous stack-traces springs from defaultTimeoutInvoker, combined with the declared React Native version: v0.61.5. I'm asking myself if this could be related to this RN fix ("apps crashing on iOS 13.x when running timer in the background"), listed under iOS specific (for RN v0.62.0 changelog)?

@cristianoccazinsp It could be that the errors we're seeing here, happens when the app is closed/goes to the background AND is terminated prematurely (in context of RN). I hate to recommend "just" updating RN, as it's usually not a trivial task - but in this case, perhaps an update would resolve the issue(s)? We'll continue investigating, but are there a chance you could try updating RN to v0.62.0+?

cristianoccazinsp commented 3 years ago

@steffenagger I have updated to RN 0.62 a while ago and some of these crashes still happen (like the one from the most recent stack trace I've uploaded).

fronck commented 3 years ago

@cristianoccazinsp Okay, thanks. We'll keep investigating.

cristianoccazinsp commented 3 years ago

Hey guys, this wasn't a null pointer exception, but perhaps related somehow. For this crash, I noticed the user didn't really use the app, it was just started up, and without interacting a lot with it (30 seconds afterwards in the home screen of the app), the following crash occurred:

EXC_BREAKPOINT
    /usr/lib/system/libsystem_platform.dylib __os_unfair_lock_recursive_abort
    /usr/lib/system/libsystem_platform.dylib __os_unfair_lock_lock_slow
    Frameworks/BackgroundTasks.framework/BackgroundTasks -[BGTask dealloc]
    /usr/lib/system/libsystem_blocks.dylib __Block_object_dispose
    /usr/lib/system/libsystem_blocks.dylib __Block_release
    Frameworks/BackgroundTasks.framework/BackgroundTasks -[BGTask _unsafe_setTaskCompletedWithSuccess:afterDelay:]
    Frameworks/BackgroundTasks.framework/BackgroundTasks -[BGTask _setTaskCompletedWithSuccess:actionsIfNotAlreadyCompleted:]
    zinspector3 realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    zinspector3 folly::detail::function::FunctionTraits<bool (folly::dynamic const&, folly::dynamic const&) const>::uninitCall(folly::detail::function::Data&, folly::dynamic const&, folly::dynamic const&)
    Frameworks/CoreFoundation.framework/CoreFoundation ___invoking___
    Frameworks/CoreFoundation.framework/CoreFoundation -[NSInvocation invoke]
    Frameworks/CoreFoundation.framework/CoreFoundation -[NSInvocation invokeWithTarget:]
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    zinspector3 facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_workloop_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread
feliperoan commented 3 years ago

Hello everyone, for my part I also have this problem very often, in addition to what has been said It happens to me sporadically but very often, I handle offline listings so I keep consulting queries I have version 0.63.2, And I use .tsx and I invoke the queries in the componentdimount I updated and I get the error

CoSNaYe commented 3 years ago

Hello, I've received plenty of errors, only iOS, after migrating realm from 3.4.2 to 6.1.5 and react-native from 0.62.2 to 0.63.3 (update both of them in an app release).

I just release my apps about 1 day and have received many complaints so it happens quite a lot. And when the user encounters this issue, then his/her app will 100% crashes when visiting the same screen. But not all users will run into this issue. I'm not sure how Bugsnag's sampling works, but we have ~1500 iOS daily active users and get about 70 crashes.

Also, some of our users have reported that sign out and sign in again can solve the issue. Our app will do deleteAll to clean Realm DB after user signs out.

Here is the information, please kindly help @@ thank you

STACKTRACE:

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x8000000000000008. 
    /usr/lib/swift/libswiftCore.dylib _swift_isUniquelyReferenced_nonNull_native
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Frameworks/Foundation.framework/Foundation _NSKeyValueNotifyObserver
    Frameworks/Foundation.framework/Foundation _NSKeyValueDidChange
    Frameworks/Foundation.framework/Foundation _NSKeyValueDidChangeWithPerThreadPendingNotifications
    Frameworks/AVFoundation.framework/AVFoundation -[AVPlayer setRate:withVolumeRampDuration:playImmediately:rateChangeReason:]
    Frameworks/AVFoundation.framework/AVFoundation -[AVPlayer setRate:]
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Frameworks/CoreFoundation.framework/CoreFoundation ___invoking___
    Frameworks/CoreFoundation.framework/CoreFoundation -[NSInvocation invoke]
    Frameworks/CoreFoundation.framework/CoreFoundation -[NSInvocation invokeWithTarget:]
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_workloop_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

THREAD

Thread 0
    /usr/lib/libobjc.A.dylib bool objc::DenseMapBase<objc::DenseMap<DisguisedPtr<objc_object>, objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> >, objc::DenseMapValueInfo<objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> > >, objc::DenseMapInfo<DisguisedPtr<objc_object> >, objc::detail::DenseMapPair<DisguisedPtr<objc_object>, objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> > > >, DisguisedPtr<objc_object>, objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> >, objc::DenseMapValueInfo<objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> > >, objc::DenseMapInfo<DisguisedPtr<objc_object> >, objc::detail::DenseMapPair<DisguisedPtr<objc_object>, objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> > > >::LookupBucketFor<DisguisedPtr<objc_object> >(DisguisedPtr<objc_object> const&, objc::detail::DenseMapPair<DisguisedPtr<objc_object>, objc::DenseMap<void const*, objc::ObjcAssociation, objc::DenseMapValueInfo<objc::ObjcAssociation>, objc::DenseMapInfo<void const*>, objc::detail::DenseMapPair<void const*, objc::ObjcAssociation> > > const*&) const
    /usr/lib/libobjc.A.dylib __object_remove_assocations
    /usr/lib/libobjc.A.dylib _objc_destructInstance
    /usr/lib/libobjc.A.dylib __objc_rootDealloc
    /usr/lib/system/libxpc.dylib -[OS_xpc_object dealloc]
    /usr/lib/system/libxpc.dylib __xpc_connection_call_reply_async
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout3
    /usr/lib/system/libdispatch.dylib __dispatch_mach_msg_async_reply_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_main_queue_callback_4CF
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    PrivateFrameworks/GraphicsServices.framework/GraphicsServices _GSEventRunModal
    PrivateFrameworks/UIKitCore.framework/UIKitCore _UIApplicationMain
    WORD UP _mh_execute_header
    /usr/lib/system/libdyld.dylib _start

Thread 1
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 2
    /usr/lib/system/libsystem_malloc.dylib _nanov2_allocate_from_block
    /usr/lib/system/libsystem_malloc.dylib _nanov2_allocate
    /usr/lib/system/libsystem_malloc.dylib _nanov2_calloc
    /usr/lib/system/libsystem_malloc.dylib _malloc_zone_calloc
    /usr/lib/system/libsystem_malloc.dylib _calloc
    /usr/lib/system/libdispatch.dylib __dispatch_calloc
    /usr/lib/system/libdispatch.dylib __dispatch_source_timer_create
    /usr/lib/system/libdispatch.dylib _dispatch_source_create
    /usr/lib/system/libdispatch.dylib _dispatch_after
    Frameworks/MediaPlayer.framework/MediaPlayer -[MPNowPlayingInfoCenter(NowPlayingInfo) _onQueue_pushNowPlayingInfoAndRetry:]
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_workloop_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 3
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 4
    /usr/lib/swift/libswiftCore.dylib _swift_isUniquelyReferenced_nonNull_native
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Frameworks/Foundation.framework/Foundation _NSKeyValueNotifyObserver
    Frameworks/Foundation.framework/Foundation _NSKeyValueDidChange
    Frameworks/Foundation.framework/Foundation _NSKeyValueDidChangeWithPerThreadPendingNotifications
    Frameworks/AVFoundation.framework/AVFoundation -[AVPlayer setRate:withVolumeRampDuration:playImmediately:rateChangeReason:]
    Frameworks/AVFoundation.framework/AVFoundation -[AVPlayer setRate:]
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    Frameworks/CoreFoundation.framework/CoreFoundation ___invoking___
    Frameworks/CoreFoundation.framework/CoreFoundation -[NSInvocation invoke]
    Frameworks/CoreFoundation.framework/CoreFoundation -[NSInvocation invokeWithTarget:]
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_workloop_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 5
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Frameworks/Foundation.framework/Foundation -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
    Frameworks/Foundation.framework/Foundation -[NSRunLoop(NSRunLoop) runUntilDate:]
    PrivateFrameworks/UIKitCore.framework/UIKitCore -[UIEventFetcher threadMain]
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 6
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 7
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    /usr/lib/libc++.1.dylib std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore void std::__1::condition_variable_any::wait<std::__1::unique_lock<bmalloc::Mutex> >(std::__1::unique_lock<bmalloc::Mutex>&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bmalloc::Scavenger::threadRunLoop()
    Frameworks/JavaScriptCore.framework/JavaScriptCore bmalloc::Scavenger::threadEntryPoint(bmalloc::Scavenger*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*> >(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 8
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 9
    /usr/lib/system/libsystem_kernel.dylib _semaphore_timedwait_trap
    /usr/lib/system/libdispatch.dylib __dispatch_sema4_timedwait
    /usr/lib/system/libdispatch.dylib __dispatch_semaphore_wait_slow
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_queue_override_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_root_queue_drain
    /usr/lib/system/libdispatch.dylib __dispatch_worker_thread2
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 10
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 11
    /usr/lib/system/libsystem_kernel.dylib ___psynch_mutexwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_mutex_firstfit_lock_wait
    /usr/lib/system/libsystem_pthread.dylib __pthread_mutex_firstfit_lock_slow
    Frameworks/MediaToolbox.framework/MediaToolbox _playerasync_runImmediateCommand
    Frameworks/MediaToolbox.framework/MediaToolbox _itemasync_CopyProperty
    Frameworks/AVFoundation.framework/AVFoundation +[AVPlayerItem _copyTimebaseFromFigPlaybackItem:]
    Frameworks/AVFoundation.framework/AVFoundation ___31-[AVPlayerItem _updateTimebase]_block_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_workloop_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 12

Thread 13
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Frameworks/CFNetwork.framework/CFNetwork 0x1836e2eb8 (-0x22b80000 + 7082487480)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 14
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 15
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 16
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 17
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 18
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 19
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 20
    /usr/lib/system/libsystem_kernel.dylib _kevent
    WORD UP realm::util::FunctionRef<void (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<void (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 21
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    /usr/lib/system/libsystem_kernel.dylib _thread_suspend
    WORD UP __cxa_throw
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 22

Thread 23
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Frameworks/AVFoundation.framework/Frameworks/AVFAudio.framework/AVFAudio GenericRunLoopThread::Entry(void*)
    Frameworks/AVFoundation.framework/Frameworks/AVFAudio.framework/AVFAudio CAPThread::Entry(CAPThread*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 24
    /usr/lib/system/libsystem_kernel.dylib _select$DARWIN_EXTSN
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFSocketManager
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 25
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 26
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 27
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 28

Thread 29

Thread 30
    /usr/lib/system/libsystem_kernel.dylib _semaphore_timedwait_trap
    /usr/lib/system/libdispatch.dylib __dispatch_sema4_timedwait
    /usr/lib/system/libdispatch.dylib __dispatch_semaphore_wait_slow
    /usr/lib/system/libdispatch.dylib __dispatch_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 31
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    /usr/lib/system/libdispatch.dylib __dispatch_mach_send_and_wait_for_reply
    /usr/lib/system/libdispatch.dylib _dispatch_mach_send_with_result_and_wait_for_reply
    /usr/lib/system/libxpc.dylib _xpc_connection_send_message_with_reply_sync
    Frameworks/CoreMedia.framework/CoreMedia _FigXPCRemoteClientSendSyncMessageCreatingReply
    Frameworks/CoreMedia.framework/CoreMedia _FigXPCSendStdSetPropertyMessage
    Frameworks/MediaToolbox.framework/MediaToolbox _remoteXPCItem_SetProperty
    Frameworks/MediaToolbox.framework/MediaToolbox _playerasync_runOneCommand
    Frameworks/MediaToolbox.framework/MediaToolbox _playerasync_runAsynchronousCommandOnQueue
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_root_queue_drain
    /usr/lib/system/libdispatch.dylib __dispatch_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 32
    /usr/lib/system/libsystem_kernel.dylib _semaphore_timedwait_trap
    /usr/lib/system/libdispatch.dylib __dispatch_sema4_timedwait
    /usr/lib/system/libdispatch.dylib __dispatch_semaphore_wait_slow
    /usr/lib/system/libdispatch.dylib __dispatch_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

And it seems not relates to low memory, here are some data of memory auto collected by bugsnags of crashed apps.

freeMemory 249.4 MB
freeMemory 166.1 MB
freeMemory 1.0 GB
freeMemory 41.9 MB
freeMemory 876.4 MB
CoSNaYe commented 3 years ago

And this type of exception emerges together after Realm library upgrade. I'm not sure if it relates.

SIGABRT
    /usr/lib/system/libsystem_kernel.dylib ___pthread_kill
    /usr/lib/system/libsystem_pthread.dylib _pthread_kill
    /usr/lib/system/libsystem_c.dylib _abort
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const
    WORD UP bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const
    WORD UP realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    WORD UP realm::StringData realm::ConstObj::get<realm::StringData>(realm::ColKey) const
    WORD UP realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::Optional<realm::Obj> realm::Results::first<realm::Obj>()
    WORD UP realm::Obj realm::Results::get<realm::Obj>(unsigned long)
    WORD UP realm::Obj realm::Results::get<realm::Obj>(unsigned long)
    WORD UP OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    WORD UP OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    WORD UP OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::getOwnPropertySlot(JSC::JSObject*, JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::getOwnPropertySlotByIndex(JSC::JSObject*, JSC::JSGlobalObject*, unsigned int, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSObject::hasPropertyGeneric(JSC::JSGlobalObject*, unsigned int, JSC::PropertySlot::InternalMethodType) const
    Frameworks/JavaScriptCore.framework/JavaScriptCore _slow_path_in_by_val
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

THREAD

Thread 0
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    PrivateFrameworks/GraphicsServices.framework/GraphicsServices _GSEventRunModal
    PrivateFrameworks/UIKitCore.framework/UIKitCore -[UIApplication _run]
    PrivateFrameworks/UIKitCore.framework/UIKitCore _UIApplicationMain
    WORD UP _mh_execute_header
    /usr/lib/system/libdyld.dylib _start

Thread 1
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 2
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 3
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 4
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 5
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Frameworks/Foundation.framework/Foundation -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
    Frameworks/Foundation.framework/Foundation -[NSRunLoop(NSRunLoop) runUntilDate:]
    PrivateFrameworks/UIKitCore.framework/UIKitCore -[UIEventFetcher threadMain]
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 6
    /usr/lib/system/libsystem_kernel.dylib ___pthread_kill
    /usr/lib/system/libsystem_pthread.dylib _pthread_kill
    /usr/lib/system/libsystem_c.dylib _abort
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const
    WORD UP bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const
    WORD UP realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    WORD UP realm::StringData realm::ConstObj::get<realm::StringData>(realm::ColKey) const
    WORD UP realm::Obj& realm::Obj::set<realm::Timestamp>(realm::ColKey, realm::Timestamp, bool)
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::util::FunctionRef<unsigned long (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::Timestamp>::erase(unsigned long)::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::Optional<realm::Obj> realm::Results::first<realm::Obj>()
    WORD UP realm::Obj realm::Results::get<realm::Obj>(unsigned long)
    WORD UP realm::Obj realm::Results::get<realm::Obj>(unsigned long)
    WORD UP OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    WORD UP OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    WORD UP OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::getOwnPropertySlot(JSC::JSObject*, JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSCallbackObject<JSC::JSNonFinalObject>::getOwnPropertySlotByIndex(JSC::JSObject*, JSC::JSGlobalObject*, unsigned int, JSC::PropertySlot&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::JSObject::hasPropertyGeneric(JSC::JSGlobalObject*, unsigned int, JSC::PropertySlot::InternalMethodType) const
    Frameworks/JavaScriptCore.framework/JavaScriptCore _slow_path_in_by_val
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    WORD UP facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 7
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    /usr/lib/libc++.1.dylib std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore void std::__1::condition_variable_any::wait<std::__1::unique_lock<bmalloc::Mutex> >(std::__1::unique_lock<bmalloc::Mutex>&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bmalloc::Scavenger::threadRunLoop()
    Frameworks/JavaScriptCore.framework/JavaScriptCore bmalloc::Scavenger::threadEntryPoint(bmalloc::Scavenger*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*> >(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 8
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 9
    /usr/lib/system/libsystem_kernel.dylib _semaphore_timedwait_trap
    /usr/lib/system/libdispatch.dylib __dispatch_sema4_timedwait
    /usr/lib/system/libdispatch.dylib __dispatch_semaphore_wait_slow
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_queue_override_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_root_queue_drain
    /usr/lib/system/libdispatch.dylib __dispatch_worker_thread2
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 10
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 11
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 12
    /usr/lib/system/libsystem_kernel.dylib ___guarded_open_dprotected_np
    /usr/lib/system/libsystem_kernel.dylib _guarded_open_dprotected_np
    /usr/lib/libsqlite3.dylib _sqlite3_sourceid
    /usr/lib/libsqlite3.dylib _sqlite3_snprintf
    /usr/lib/libsqlite3.dylib _sqlite3_free_table
    /usr/lib/libsqlite3.dylib _sqlite3_free_table
    /usr/lib/libsqlite3.dylib _sqlite3_free_table
    /usr/lib/libsqlite3.dylib _sqlite3_step
    /usr/lib/libsqlite3.dylib _sqlite3_step
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    /usr/lib/system/libdispatch.dylib __dispatch_call_block_and_release
    /usr/lib/system/libdispatch.dylib __dispatch_client_callout
    /usr/lib/system/libdispatch.dylib __dispatch_lane_serial_drain
    /usr/lib/system/libdispatch.dylib __dispatch_lane_invoke
    /usr/lib/system/libdispatch.dylib __dispatch_workloop_worker_thread
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 13
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    WORD UP realm::ObjKey realm::Table::find_first<realm::util::Optional<long long> >(realm::ColKey, realm::util::Optional<long long>) const
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 14
    /usr/lib/system/libsystem_kernel.dylib ___workq_kernreturn
    /usr/lib/system/libsystem_pthread.dylib __pthread_wqthread

Thread 15
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 16
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 17
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 18
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 19
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 20
    /usr/lib/system/libsystem_kernel.dylib ___psynch_cvwait
    /usr/lib/system/libsystem_pthread.dylib __pthread_cond_wait
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore bool WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::$_0, void>::call()
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore WTF::wtfThreadEntryPoint(void*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 21
    /usr/lib/system/libsystem_kernel.dylib _kevent
    WORD UP realm::util::FunctionRef<void (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    WORD UP realm::util::FunctionRef<void (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 22
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Frameworks/CFNetwork.framework/CFNetwork __CFURLStorageSessionCopyCache
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 23
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    /usr/lib/system/libsystem_kernel.dylib _thread_suspend
    WORD UP __cxa_throw
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 24
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    WORD UP __cxa_throw
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 25
    /usr/lib/system/libsystem_kernel.dylib _mach_msg_trap
    /usr/lib/system/libsystem_kernel.dylib _mach_msg
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopServiceMachPort
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    PrivateFrameworks/AudioSession.framework/AudioSession GenericRunLoopThread::Entry(void*)
    PrivateFrameworks/AudioSession.framework/AudioSession CAPThread::Entry(CAPThread*)
    /usr/lib/system/libsystem_pthread.dylib __pthread_start

Thread 26
    /usr/lib/system/libsystem_kernel.dylib _select$DARWIN_EXTSN
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFSocketManager
    /usr/lib/system/libsystem_pthread.dylib __pthread_start
kneth commented 3 years ago

@CoSNaYe Since an upgrade of Realm Core is involved, I have asked @finnschiermer and @jedelbo to take a look.

ryanbourneuk commented 3 years ago

Just adding to this thread, that I've started to see this in a client's React Native app since updating to Realm JS 10.0.1, alongside react-native @ 0.63.3.

The crash logs basically match the ones above, and Sentry & Firebase (along with internal logs) are reporting that they're always occurring whilst the app isn't active. Happy to help with testing fixes, let me know if that'd be useful!

cristianoccazinsp commented 3 years ago

New crash with 10.0.x versions, but mostly related:

Hardware Model:     iPhone12,1
Process:            zinspector3
Identifier:         com.zinspector.zinspector3
Version:            3.1.39
Role:               Background
OS Version:         iOS 14.2

std::__1::system_error: mutex lock failed: Invalid argument

0  libc++.1.dylib          std::__1::__throw_system_error(int, char const*)
1  libc++.1.dylib          std::__1::mutex::lock()
2  zinspector3             bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const (zinspector3)
3  zinspector3             bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const (zinspector3)
4  zinspector3             bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const (zinspector3)
5  zinspector3             bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const (zinspector3)
6  zinspector3             bool realm::Array::find<realm::Less, (realm::Action)0, 64ul>(long long, unsigned long, unsigned long, unsigned long, realm::QueryState<long long>*) const (zinspector3)
7  zinspector3             unsigned long realm::Results::index_of<realm::util::Optional<realm::ObjectId> >(realm::util::Optional<realm::ObjectId> const&) (zinspector3)
8  zinspector3             realm::util::FunctionRef<bool (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long) (zinspector3)
9  zinspector3             realm::util::FunctionRef<bool (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long) (zinspector3)
10 zinspector3             realm::util::FunctionRef<bool (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::util::Optional<realm::ObjectId> >::find_first(realm::util::Optional<realm::ObjectId>) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long) (zinspector3)
11 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
12 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
13 libsystem_pthread.dylib __pthread_start
14 libsystem_pthread.dylib _thread_start
enigmablue commented 3 years ago

Similar problem as well

realm::jsc::ObjectWrap<realm::js::SessionClass >::set_readonly_property(OpaqueJSContext const, OpaqueJSValue, OpaqueJSString, OpaqueJSValue const, OpaqueJSValue const**)

I keep seeing iOS crashes with similar stack traces, and they all seem to happen with very little free memory (~45mb reported by the crash analytics tool). Not sure how easy it would be to debug a possible memory leak within the C++ or Objective C Realm's code, or even in the non Realm code. I've tried to profile the app for a while and didn't observe any memory leak or anything that would cause the app to end up with so little memory.

Here's another stack trace:

EXC_BAD_ACCESS Attempted to dereference garbage pointer 0x8. 
    Tenant Move-In realm::jsc::ObjectWrap<realm::js::ObservableClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_is_partial_realm>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**)
    Tenant Move-In OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
    Frameworks/JavaScriptCore.framework/JavaScriptCore long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _llint_entry
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToJavaScript
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _vmEntryToNative
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
    Frameworks/JavaScriptCore.framework/JavaScriptCore _JSObjectCallAsFunction
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopDoBlocks
    Frameworks/CoreFoundation.framework/CoreFoundation ___CFRunLoopRun
    Frameworks/CoreFoundation.framework/CoreFoundation _CFRunLoopRunSpecific
    Tenant Move-In facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>)
    Frameworks/Foundation.framework/Foundation ___NSThread__start__
    /usr/lib/system/libsystem_pthread.dylib __pthread_start
fronck commented 3 years ago

@enigmablue @cristianoccazinsp @ryanbourneuk @feliperoan @CoSNaYe Have any of you tried this on the newer Realm-JS v10? We have made some changes to the way open realms are cached in v10, and the stack traces indicate that this may be related.

ryanbourneuk commented 3 years ago

@fronck with "realm": "10.1.1", my client is still seeing the same crashes. I do see however that there are some more recent releases available, so I'll check those out and see if the issues still occur.

enigmablue commented 3 years ago

mm my realm is "realm": "^10.0.1",

will check as well

cristianoccazinsp commented 3 years ago

I've been using v10 for a good while now and I still see these crashes happen randomly. We haven't got many complains, so we are mostly ignoring these errors for now, but they are very annoying since they keep spamming our crash reporting tool.

bmunkholm commented 3 years ago

@cristianoccazinsp I assume you are creating other issues for them? That would be needed to help fix them of course.

cristianoccazinsp commented 3 years ago

@bmunkholm I really haven't since they are always similar to this and the other 4 issues I also opened on the first comment. If it is of any help, I can start gathering all the crash logs / stack traces I have been getting for the past month or so, and open a new issue for v10. But again, they are all very similar crashes due to null pointers here and there.

enigmablue commented 3 years ago

me too

image

image

cristianoccazinsp commented 3 years ago

Here are my stack traces for v10 (10.1.2 and 10.1.3):

CrashReporter Key:  06c2a452b89c7a27c48f4c0c06340e46f5dd4d5f
Hardware Model:     iPhone12,8
Process:            zinspector3
Identifier:         com.zinspector.zinspector3
Version:            3.1.45
Role:               Background
OS Version:         iOS 14.3
Exception Type:     EXC_BAD_ACCESS 
Exception Subtype:  KERN_INVALID_ADDRESS

EXC_BAD_ACCESS: Attempted to dereference garbage pointer 0x10.

0  JavaScriptCore          bool JSC::symbolTableGet<JSC::JSGlobalObject>(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
1  JavaScriptCore          JSC::JSObject::get(JSC::JSGlobalObject*, JSC::PropertyName) const
2  JavaScriptCore          _JSObjectGetProperty
3  zinspector3             realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
4  zinspector3             realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
5  zinspector3             realm::util::FunctionRef<void (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long) (zinspector3)
6  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**) (zinspector3)
7  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::sorted>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) (zinspector3)
8  JavaScriptCore          long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
9  JavaScriptCore          _llint_entry
10 JavaScriptCore          _llint_entry
11 JavaScriptCore          _llint_entry
12 JavaScriptCore          _llint_entry
13 JavaScriptCore          _llint_entry
14 JavaScriptCore          _llint_entry
15 JavaScriptCore          _llint_entry
16 JavaScriptCore          _llint_entry
17 JavaScriptCore          _llint_entry
18 JavaScriptCore          _vmEntryToJavaScript
19 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
20 JavaScriptCore          JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
21 JavaScriptCore          _vmEntryToNative
22 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
23 JavaScriptCore          JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
24 JavaScriptCore          _JSObjectCallAsFunction
25 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
26 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
27 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
28 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
29 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
30 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
31 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
32 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
33 CoreFoundation          ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
34 CoreFoundation          ___CFRunLoopDoBlocks
35 CoreFoundation          ___CFRunLoopRun
36 CoreFoundation          _CFRunLoopRunSpecific
37 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
38 Foundation              ___NSThread__start__
39 libsystem_pthread.dylib __pthread_start
CrashReporter Key:  d3699468d40cbe9d6d359e257007c97cf2fee001
Hardware Model:     iPhone8,1
Process:            zinspector3
Identifier:         com.zinspector.zinspector3
Version:            3.1.45
Role:               Background
OS Version:         iOS 14.3
Exception Type:     EXC_BAD_ACCESS 
Exception Subtype:  KERN_INVALID_ADDRESS

EXC_BAD_ACCESS: Attempted to dereference null pointer.

0  zinspector3             realm::jsc::ObjectWrap<realm::js::ObservableClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
1  zinspector3             bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
2  zinspector3             bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
3  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_sync_session>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**) (zinspector3)
4  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) (zinspector3)
5  JavaScriptCore          long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
6  JavaScriptCore          _llint_entry
7  JavaScriptCore          _llint_entry
8  JavaScriptCore          _llint_entry
9  JavaScriptCore          _vmEntryToJavaScript
10 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
11 JavaScriptCore          JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
12 JavaScriptCore          _JSObjectCallAsFunction
13 zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_sync_session>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**) (zinspector3)
14 zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) (zinspector3)
15 JavaScriptCore          long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
16 JavaScriptCore          _llint_entry
17 JavaScriptCore          _llint_entry
18 JavaScriptCore          _llint_entry
19 JavaScriptCore          _llint_entry
20 JavaScriptCore          _llint_entry
21 JavaScriptCore          _llint_entry
22 JavaScriptCore          _llint_entry
23 JavaScriptCore          _llint_entry
24 JavaScriptCore          _vmEntryToJavaScript
25 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
26 JavaScriptCore          JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
27 JavaScriptCore          _vmEntryToNative
28 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
29 JavaScriptCore          JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
30 JavaScriptCore          _JSObjectCallAsFunction
31 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
32 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
33 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
34 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
35 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
36 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
37 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
38 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
39 CoreFoundation          ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
40 CoreFoundation          ___CFRunLoopDoBlocks
41 CoreFoundation          ___CFRunLoopRun
42 CoreFoundation          _CFRunLoopRunSpecific
43 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
44 Foundation              ___NSThread__start__
45 libsystem_pthread.dylib __pthread_start
CrashReporter Key:  acccf142f57af5fc9c51f8d7764032039ecf9e4b
Hardware Model:     iPad7,6
Process:            zinspector3
Identifier:         com.zinspector.zinspector3
Version:            3.1.39
Role:               Background
OS Version:         iOS 13.7
Exception Type:     EXC_BAD_ACCESS 
Exception Subtype:  KERN_INVALID_ADDRESS

EXC_BAD_ACCESS: Attempted to dereference garbage pointer 0x8.

0  zinspector3             realm::jsc::ObjectWrap<realm::js::ObservableClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
1  zinspector3             bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
2  zinspector3             bool realm::js::wrap<&realm::js::ListClass<realm::jsc::Types>::set_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
3  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_sync_session>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**) (zinspector3)
4  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::object_for_primary_key>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) (zinspector3)
5  JavaScriptCore          long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
6  JavaScriptCore          _llint_entry
7  JavaScriptCore          _llint_entry
8  JavaScriptCore          _llint_entry
9  JavaScriptCore          _vmEntryToJavaScript
10 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
11 JavaScriptCore          JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
12 JavaScriptCore          _JSObjectCallAsFunction
13 zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::get_sync_session>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**) (zinspector3)
14 zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::RealmClass<realm::jsc::Types>::write>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) (zinspector3)
15 JavaScriptCore          long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
16 JavaScriptCore          _llint_entry
17 JavaScriptCore          _llint_entry
18 JavaScriptCore          _llint_entry
19 JavaScriptCore          _llint_entry
20 JavaScriptCore          _llint_entry
21 JavaScriptCore          _llint_entry
22 JavaScriptCore          _llint_entry
23 JavaScriptCore          _llint_entry
24 JavaScriptCore          _vmEntryToJavaScript
25 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
26 JavaScriptCore          JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
27 JavaScriptCore          _vmEntryToNative
28 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
29 JavaScriptCore          JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
30 JavaScriptCore          _JSObjectCallAsFunction
31 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
32 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
33 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
34 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
35 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
36 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
37 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
38 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
39 CoreFoundation          ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
40 CoreFoundation          ___CFRunLoopDoBlocks
41 CoreFoundation          ___CFRunLoopRun
42 CoreFoundation          _CFRunLoopRunSpecific
43 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
44 Foundation              ___NSThread__start__
45 libsystem_pthread.dylib __pthread_start
cristianoccazinsp commented 3 years ago

This is a new one from 10.1.4, recent update:

CrashReporter Key:  d5bd347a9cd6a077a0a30ed1412220009a862b03
Hardware Model:     iPhone13,3
Process:            zinspector3
Identifier:         com.zinspector.zinspector3
Version:            3.1.50
Role:               Background
OS Version:         iOS 14.3
Exception Type:     EXC_BAD_ACCESS 
Exception Subtype:  KERN_INVALID_ADDRESS

EXC_BAD_ACCESS: Attempted to dereference garbage pointer 0x10.

0  JavaScriptCore          bool JSC::symbolTableGet<JSC::JSGlobalObject>(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&)
1  JavaScriptCore          JSC::JSObject::get(JSC::JSGlobalObject*, JSC::PropertyName) const
2  JavaScriptCore          _JSObjectGetProperty
3  zinspector3             realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
4  zinspector3             realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >::set_readonly_property(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) (zinspector3)
5  zinspector3             realm::util::FunctionRef<void (realm::BPlusTreeNode*, unsigned long)>::FunctionRef<realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&>(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&)::{lambda(void*, realm::BPlusTreeNode*, unsigned long)#1}::__invoke(realm::BPlusTree<realm::ObjKey>::get(unsigned long) const::{lambda(realm::BPlusTreeNode*, unsigned long)#1}&, realm::BPlusTreeNode*, unsigned long) (zinspector3)
6  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::get_index>(OpaqueJSContext const*, OpaqueJSValue*, unsigned int, OpaqueJSValue const**) (zinspector3)
7  zinspector3             OpaqueJSValue const* realm::js::wrap<&realm::js::ResultsClass<realm::jsc::Types>::sorted>(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) (zinspector3)
8  JavaScriptCore          long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::JSGlobalObject*, JSC::CallFrame*)
9  JavaScriptCore          _llint_entry
10 JavaScriptCore          _llint_entry
11 JavaScriptCore          _llint_entry
12 JavaScriptCore          _llint_entry
13 JavaScriptCore          _llint_entry
14 JavaScriptCore          _llint_entry
15 JavaScriptCore          _llint_entry
16 JavaScriptCore          _llint_entry
17 JavaScriptCore          _llint_entry
18 JavaScriptCore          _vmEntryToJavaScript
19 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
20 JavaScriptCore          JSC::boundThisNoArgsFunctionCall(JSC::JSGlobalObject*, JSC::CallFrame*)
21 JavaScriptCore          _vmEntryToNative
22 JavaScriptCore          JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
23 JavaScriptCore          JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
24 JavaScriptCore          _JSObjectCallAsFunction
25 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
26 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
27 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
28 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
29 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
30 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
31 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
32 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
33 CoreFoundation          ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
34 CoreFoundation          ___CFRunLoopDoBlocks
35 CoreFoundation          ___CFRunLoopRun
36 CoreFoundation          _CFRunLoopRunSpecific
37 zinspector3             facebook::react::JSIExecutor::defaultTimeoutInvoker(std::__1::function<void ()> const&, std::__1::function<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > ()>) (zinspector3)
38 Foundation              ___NSThread__start__
39 libsystem_pthread.dylib __pthread_start

image

cristianoccazinsp commented 3 years ago

@bmunkholm about the stack trace I've just posted above. After further research, looks like this crash is quite new and wasn't seen in any previous versions (it is either realm 10.1.3 or 10.1.4)

kneth commented 3 years ago

@cristianoccazinsp

The stacktrace is a bit confusing since it looks like you are using sync: realm::jsc::ObjectWrap<realm::js::SessionClass<realm::jsc::Types> >, and as I recall, you are not using sync.

Moreover, do you observe the crashes on Android?

cristianoccazinsp commented 3 years ago

@kneth I'm definitely not using sync. Also, no, I am only seeing this on iOS. Lastly, the same crash occurred to the same user twice already in less than 1 day, so it is also that happens "frequently".

I'm sorry I can't get a more detailed stack trace.

ryanbourneuk commented 3 years ago

Hey @kneth, just to dive in here, I'm also seeing crash logs similar to @cristianoccazinsp's most recent one - only on iOS and not using sync. Would it help for me to also upload an example? Another note, is that Sentry (and our own internal logging systems) show that the user has put the app in the background prior to the crash occurring. Might be related?

kneth commented 3 years ago

put the app in the background

I think it is actually an important observation. When you bring back an app from the background, the (encrypted) file system might not be ready so quickly. And since Realm instances are tied to Realm files (using mmap()), you might be accessing something not ready.