Uploaded image for project: 'Realm Core'
  1. Realm Core
  2. RCORE-1170

Randomly crash when append objects to list in write transaction

      SDK and version

      SDK : RealmSwift
      Version: 10.28.1

      Observations

      • How frequent do the crash occur? Random, but always if happened in specific device
      • Does it happen in production or during dev/test? Production
      • Can the crash be reproduced by you? No
      • Can you provide instructions for how we can reproduce it? ``Not sure, but in this case just append some object into list.``

      Crash log / stacktrace

      MAIN THREAD - CRASHED
      
      libsystem_kernel.dylib
      __pthread_kill
      libsystem_c.dylib
      abort
      Realm
      please_report_this_issue_in_github_realm_realm_core
      Realm
      realm::util::terminate_internal(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
      Realm
      realm::util::terminate(char const*, char const*, long, std::initializer_list<realm::util::Printable>&&)
      Realm
      void realm::util::terminate<unsigned long long, unsigned long long>(char const*, char const*, long, unsigned long long, unsigned long long) terminate.hpp:45
      Realm
      realm::ArraySmallBlobs::insert(unsigned long, realm::BinaryData, bool)
      Realm
      void realm::Cluster::do_insert_row<realm::ArrayString>(unsigned long, realm::ColKey, realm::Mixed, bool)
      Realm
      realm::util::FunctionRef<bool (realm::ColKey)>::FunctionRef<realm::Cluster::insert_row(unsigned long, realm::ObjKey, realm::FieldValues const&)::$_1&>(realm::Cluster::insert_row(unsigned long, realm::ObjKey, realm::FieldValues const&)::$_1&&&)::'lambda'(void*, realm::ColKey)::__invoke(void*, realm::ColKey)
      Realm
      realm::TableClusterTree::for_each_and_every_column(realm::util::FunctionRef<bool (realm::ColKey)>) const
      Realm
      realm::Cluster::insert_row(unsigned long, realm::ObjKey, realm::FieldValues const&)
      Realm
      realm::Cluster::insert(realm::ObjKey, realm::FieldValues const&, realm::ClusterNode::State&)
      Realm
      realm::ClusterNodeInner::insert(realm::ObjKey, realm::FieldValues const&, realm::ClusterNode::State&)::$_1::operator()(realm::ClusterNode*, realm::ClusterNodeInner::ChildInfo&) const
      Realm
      realm::ClusterNodeInner::insert(realm::ObjKey, realm::FieldValues const&, realm::ClusterNode::State&)
      Realm
      realm::ClusterTree::insert_fast(realm::ObjKey, realm::FieldValues const&, realm::ClusterNode::State&)
      Realm
      realm::ClusterTree::insert(realm::ObjKey, realm::FieldValues const&)
      Realm
      realm::TableClusterTree::insert(realm::ObjKey, realm::FieldValues const&)
      Realm
      realm::Table::create_object_with_primary_key(realm::Mixed const&, realm::FieldValues&&, realm::Table::UpdateMode, bool*)
      Realm
      realm::Table::create_object_with_primary_key(realm::Mixed const&, bool*) table.hpp:258
      Realm
      realm::Object realm::Object::create<objc_object* __strong, RLMAccessorContext>(RLMAccessorContext&, std::__1::shared_ptr<realm::Realm> const&, realm::ObjectSchema const&, objc_object* __strong, realm::CreatePolicy, realm::ObjKey, realm::Obj*) object_accessor.hpp:305
      Realm
      RLMAccessorContext::createObject(objc_object*, realm::CreatePolicy, bool, realm::ObjKey) RLMAccessor.mm:1102
      Realm
      realm::Obj RLMAccessorContext::unbox<realm::Obj>(objc_object*, realm::CreatePolicy, realm::ObjKey) RLMAccessor.mm:1134
      Realm
      auto realm::List::dispatch<void realm::List::insert<objc_object* const __strong&, RLMAccessorContext>(RLMAccessorContext&, unsigned long, objc_object* const __strong&&&, realm::CreatePolicy)::'lambda'(RLMAccessorContext&)>(objc_object* const __strong&) const list.hpp:212
      Realm
      void realm::List::insert<objc_object* const __strong&, RLMAccessorContext>(RLMAccessorContext&, unsigned long, objc_object* const __strong&&&, realm::CreatePolicy) list.hpp:211
      Realm
      ___ZL15RLMInsertObjectP15RLMManagedArrayP11objc_objectm_block_invoke RLMManagedArray.mm:270
      Realm
      auto translateErrors<void () block_pointer __strong&>(void () block_pointer __strong&&&) RLMManagedArray.mm:181
      Realm
      changeArray(RLMManagedArray*, NSKeyValueChange, unsigned long, void () block_pointer) RLMManagedArray.mm:202
      Realm
      RLMInsertObject(RLMManagedArray*, objc_object*, unsigned long) RLMManagedArray.mm:268
      Realm
      -[RLMManagedArray addObject:] RLMManagedArray.mm:275
      RealmSwift
      RealmSwift.List.append(A) -> () List.swift:114
      
      ... My Production call stack, call `root.records.append(record)`
      

      Steps & Code to Reproduce

      <!-- What steps/operations resulted in the crash? Please show any relevant code or steps that WE can
      <!-- use to reproduce it. Even better is a full sample project that can reproduce the crash. -->
      <!-- Code and files can be shared privately at help@realm.io if needed. -->

      In some device, just run:

      let realm = try! Realm()
      let root = findOrCreateRootObject() // create a custom root object
      let record = RecordObject()
      
      try! realm.write {
        root.account = currentAccount ?? ""
        root.records.append(record)
      }
      

      , and it happened

            Assignee:
            jorgen.edelbo@mongodb.com Jørgen Edelbo
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: