Uploaded image for project: 'Realm Cocoa SDK'
  1. Realm Cocoa SDK
  2. RCOCOA-2105

Index out of bounds error after delete when using @ObservedSectionedResults in SwiftUI

      How frequently does the bug occur?

      Always

      Description

      When using ObservedSectionedResults in SwiftUI, if you delete an item within a section, the app will crash with an index out of bounds error.

      Stacktrace & log output

      Unable to find source-code formatter for language: shell. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      2023-07-07 16:59:30.123938-0500 realm-bug-example[6128:92124] *** Terminating app due to uncaught exception 'RLMException', reason: 'Index 2 is out of bounds (must be less than 2).'
      *** First throw call stack:
      (
      	0   CoreFoundation                      0x0000000180437330 __exceptionPreprocess + 172
      	1   libobjc.A.dylib                     0x0000000180051274 objc_exception_throw + 56
      	2   realm-bug-example                   0x0000000104677318 _Z27RLMThrowCollectionExceptionP8NSString + 248
      	3   realm-bug-example                   0x0000000104696d20 _ZL24translateCollectionErrorIZ28-[RLMSection objectAtIndex:]E3$_5EDaOT_P8NSString + 120
      	4   realm-bug-example                   0x0000000104690d60 -[RLMSection objectAtIndex:] + 136
      	5   realm-bug-example                   0x0000000104690ccc -[RLMSection objectAtIndexedSubscript:] + 40
      	6   realm-bug-example                   0x00000001047daa3c $s10RealmSwift14ResultsSectionVyq_Sicig + 272
      	7   realm-bug-example                   0x00000001047dc428 $s10RealmSwift14ResultsSectionVyq_Sicir + 156
      	8   realm-bug-example                   0x00000001047dc310 $s10RealmSwift14ResultsSectionVyxq_GSlAASly7ElementQz5IndexQzcirTW + 92
      	9   SwiftUI                             0x000000010d0e0450 OUTLINED_FUNCTION_61 + 944
      	10  SwiftUI                             0x000000010d0e8494 OUTLINED_FUNCTION_61 + 33780
      	11  SwiftUI                             0x000000010d0e8c80 OUTLINED_FUNCTION_61 + 35808
      	12  SwiftUI                             0x000000010d0e8be8 OUTLINED_FUNCTION_61 + 35656
      	13  SwiftUI                             0x000000010d1cf064 OUTLINED_FUNCTION_34 + 21608
      	14  SwiftUI                             0x000000010cff5418 OUTLINED_FUNCTION_9 + 7060
      	15  SwiftUI                             0x000000010cff5888 OUTLINED_FUNCTION_9 + 8196
      	16  SwiftUI                             0x000000010d265f50 OUTLINED_FUNCTION_3 + 20752
      	17  SwiftUI                             0x000000010d266120 OUTLINED_FUNCTION_3 + 21216
      	18  SwiftUI                             0x000000010d266040 OUTLINED_FUNCTION_3 + 20992
      	19  SwiftUI                             0x000000010c7506fc OUTLINED_FUNCTION_1 + 5468
      	20  SwiftUI                             0x000000010c75095c OUTLINED_FUNCTION_1 + 6076
      	21  SwiftUI                             0x000000010c7508a4 OUTLINED_FUNCTION_1 + 5892
      	22  libswiftCore.dylib                  0x000000018bd0d7f0 $ss16IndexingIteratorVyxGStsSt4next7ElementQzSgyFTW + 356
      	23  libswiftCore.dylib                  0x000000018be02250 $sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tF + 368
      	24  libswiftCore.dylib                  0x000000018bcca4a8 $ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlF + 516
      	25  libswiftCore.dylib                  0x000000018bcbacd4 $sSTsE22_copyToContiguousArrays0cD0Vy7ElementQzGyFTm + 40
      	26  libswiftCore.dylib                  0x000000018bcbfd8c $ss15ContiguousArrayVyAByxGqd__c7ElementQyd__RszSTRd__lufC + 32
      	27  SwiftUI                             0x000000010c750098 OUTLINED_FUNCTION_1 + 3832
      	28  SwiftUI                             0x000000010c916680 OUTLINED_FUNCTION_35 + 4584
      	29  SwiftUI                             0x000000010c91602c OUTLINED_FUNCTION_35 + 2964
      	30  SwiftUI                             0x000000010c915594 OUTLINED_FUNCTION_35 + 252
      	31  SwiftUI                             0x000000010d1e13c4 OUTLINED_FUNCTION_2 + 33020
      	32  SwiftUI                             0x000000010d1ddc6c OUTLINED_FUNCTION_2 + 18852
      	33  SwiftUI                             0x000000010d1da604 OUTLINED_FUNCTION_2 + 4924
      	34  SwiftUI                             0x000000010d1d9d04 OUTLINED_FUNCTION_2 + 2620
      	35  SwiftUI                             0x000000010cddfa58 OUTLINED_FUNCTION_11 + 27760
      	36  SwiftUI                             0x000000010d32a178 OUTLINED_FUNCTION_26 + 616
      	37  SwiftUI                             0x000000010c6da518 OUTLINED_FUNCTION_80 + 30888
      	38  SwiftUI                             0x000000010c62ba00 OUTLINED_FUNCTION_5 + 26808
      	39  AttributeGraph                      0x000000019d23fe34 _ZN2AG5Graph11UpdateStack6updateEv + 512
      	40  AttributeGraph                      0x000000019d240534 _ZN2AG5Graph16update_attributeENS_4data3ptrINS_4NodeEEEj + 428
      	41  AttributeGraph                      0x000000019d24d7a4 _ZN2AG8Subgraph6updateEj + 844
      	42  SwiftUI                             0x000000010d304c40 OUTLINED_FUNCTION_37 + 1896
      	43  SwiftUI                             0x000000010d307090 OUTLINED_FUNCTION_37 + 11192
      	44  SwiftUI                             0x000000010ca00cf0 OUTLINED_FUNCTION_0 + 1716
      	45  SwiftUI                             0x000000010d17f88c OUTLINED_FUNCTION_58 + 28272
      	46  SwiftUI                             0x000000010d179c54 OUTLINED_FUNCTION_58 + 4664
      	47  SwiftUI                             0x000000010ca00bcc OUTLINED_FUNCTION_0 + 1424
      	48  SwiftUI                             0x000000010d30705c OUTLINED_FUNCTION_37 + 11140
      	49  SwiftUI                             0x000000010d306f94 OUTLINED_FUNCTION_37 + 10940
      	50  SwiftUI                             0x000000010ccc4e3c OUTLINED_FUNCTION_16 + 4404
      	51  SwiftUI                             0x000000010c754110 OUTLINED_FUNCTION_1 + 20336
      	52  SwiftUI                             0x000000010c754090 OUTLINED_FUNCTION_1 + 20208
      	53  SwiftUI                             0x000000010c754188 OUTLINED_FUNCTION_1 + 20456
      	54  CoreFoundation                      0x0000000180399c10 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
      	55  CoreFoundation                      0x000000018039457c __CFRunLoopDoObservers + 512
      	56  CoreFoundation                      0x0000000180394a20 __CFRunLoopRun + 948
      	57  CoreFoundation                      0x0000000180394254 CFRunLoopRunSpecific + 584
      	58  GraphicsServices                    0x0000000188eb7c9c GSEventRunModal + 160
      	59  UIKitCore                           0x0000000109152ff0 -[UIApplication _run] + 868
      	60  UIKitCore                           0x0000000109156f3c UIApplicationMain + 124
      	61  SwiftUI                             0x000000010d1ff34c OUTLINED_FUNCTION_54 + 500
      	62  SwiftUI                             0x000000010d1ff1ec OUTLINED_FUNCTION_54 + 148
      	63  SwiftUI                             0x000000010c9f7474 OUTLINED_FUNCTION_16 + 88
      	64  realm-bug-example                   0x00000001043e4318 $s17realm_bug_example0a1_b1_C3AppV5$mainyyFZ + 40
      	65  realm-bug-example                   0x00000001043e43c4 main + 12
      	66  dyld                                0x0000000107f81514 start_sim + 20
      	67  ???                                 0x0000000108085f28 0x0 + 4429733672
      	68  ???                                 0x2549000000000000 0x0 + 2686678652703211520
      )
      libc++abi: terminating due to uncaught exception of type NSException
      

      Can you reproduce the bug?

      Always

      Reproduction Steps

      I've created a repo here: https://github.com/GriffinMeyer/section-list-delete-bug
      Simply building and running the app, adding multiple Todos and then swiping to delete will cause the app to crash.
      This also happens when using a synced realm, and the object is deleted from another source, so the issue is not specifically with the delete code.

      Version

      10.41.0

      What Atlas Services are you using?

      Atlas Device Sync

      Are you using encryption?

      No

      Platform OS and version(s)

      iOS 16.4, iOS 17

      Build environment

      Xcode version: 14.3.1
      Dependency manager and version: SPM

            Assignee:
            lee.maguire@mongodb.com Lee Maguire
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: