You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Although I'm aware that the 0xdead10cc issue has been extensively discussed (e.g., #8017, #7863, #7053, #6861, etc.), I believe the problem I'm encountering is slightly different and can be reproduced 100% of the time, which is why I've decided to bring it up.
I've noticed that on the Vision Pro, if my Realm database is stored within an App Group, then holding any observation to Realm in the app will lead to a 100% crash when entering the background. This means that if your database is within an App Group, even the most basic SwiftUI examples cannot function properly on visionOS:
// official SwiftUI example
structContactsView:View{@ObservedResults(Person.self)varpersons // ←💥 causes a 0xdead10cc crash on visionOS in App Group
varbody:someView{List{ForEach(persons){ person inText(person.name)}.onMove(perform: $persons.move).onDelete(perform: $persons.remove)}.navigationBarItems(trailing:Button("Add"){
$persons.append(Person())})}}
More specifically, the app will 100% crash with either a 0xdead10cc error or a RUNNINGBOARD 3735883980 error upon entering the background, provided the following conditions are met:
The app utilizes @ObservedResults or any other Realm observation object.
The realm file is located in an App Group container.
The app is running on a physical Vision Pro device, not on a simulator.
The app is a native visionOS app, rather than an compatible iOS app.
I have provided a sample project along with the steps to reproduce the issue. The sample project is quite straightforward—it uses @ObservedResults and stores the database in an App Group.
@aehlke I resolved the issue by moving the Realm database out of the shared group. I still use the shared group to exchange data between processes, but I never open a Realm database file within the shared group. Additionally, I utilize UserDefaults to implement observation.
Overall, any flock() in the shared group will lead to a background crash.
Looks like we aren't using the emulated file lock that we wrote for iOS on visionOS and need to be. This doesn't fix all of the problems, but does make it so that merely reading from an already-open Realm won't kill the process.
How frequently does the bug occur?
Always
Description
Hello everyone!
Although I'm aware that the
0xdead10cc
issue has been extensively discussed (e.g., #8017, #7863, #7053, #6861, etc.), I believe the problem I'm encountering is slightly different and can be reproduced 100% of the time, which is why I've decided to bring it up.I've noticed that on the Vision Pro, if my Realm database is stored within an App Group, then holding any observation to Realm in the app will lead to a 100% crash when entering the background. This means that if your database is within an App Group, even the most basic SwiftUI examples cannot function properly on visionOS:
More specifically, the app will 100% crash with either a
0xdead10cc
error or aRUNNINGBOARD 3735883980
error upon entering the background, provided the following conditions are met:@ObservedResults
or any other Realm observation object.Stacktrace & log output
Incident Identifier: A1FA1A77-0CC6-409B-B555-FFDDD2F26544 CrashReporter Key: 1b2668797ebb0d3ce434ac760fbcd8168635b1bb Hardware Model: RealityDevice14,1 Process: RealmFileLockTest [756] Path: /private/var/containers/Bundle/Application/FA8A9582-4DAA-4600-BEB4-D24CC7740D31/RealmFileLockTest.app/RealmFileLockTest Identifier: io.gongzhang.RealmFileLockTest Version: 1.0 (1) Code Type: ARM-64 (Native) Role: unknown Parent Process: launchd [1] Coalition: io.gongzhang.RealmFileLockTest [784] Date/Time: 2024-03-27 15:37:11.8581 +0800 Launch Time: 2024-03-27 15:37:03.0253 +0800 OS Version: xrOS 1.1.1 (21O224) Release Type: Beta Report Version: 104 Exception Type: EXC_CRASH (SIGKILL) Exception Codes: 0x0000000000000000, 0x0000000000000000 Termination Reason: RUNNINGBOARD 3735883980 Triggered by Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x24457a5c8 mach_msg2_trap + 8 1 libsystem_kernel.dylib 0x2445826b4 mach_msg2_internal + 80 2 libsystem_kernel.dylib 0x244582948 mach_msg_overwrite + 436 3 libsystem_kernel.dylib 0x244582788 mach_msg + 24 4 CoreFoundation 0x1a10e09b8 __CFRunLoopServiceMachPort + 160 5 CoreFoundation 0x1a10dac70 __CFRunLoopRun + 1208 6 CoreFoundation 0x1a10da394 CFRunLoopRunSpecific + 608 7 GraphicsServices 0x1dc9da4f8 GSEventRunModal + 164 8 UIKitCore 0x22c67c720 -[UIApplication _run] + 888 9 UIKitCore 0x22c680f80 UIApplicationMain + 340 10 SwiftUI 0x1b1c57ca8 0x1b0b28000 + 18021544 11 SwiftUI 0x1b1c57b04 0x1b0b28000 + 18021124 12 SwiftUI 0x1b18084f4 0x1b0b28000 + 13501684 13 RealmFileLockTest 0x1022bf060 static RealmFileLockTestApp.$main() + 40 14 RealmFileLockTest 0x1022bf10c main + 12 15 dyld 0x23da918b8 start + 2204
Can you reproduce the bug?
Always
Reproduction Steps
I have provided a sample project along with the steps to reproduce the issue. The sample project is quite straightforward—it uses
@ObservedResults
and stores the database in an App Group.Steps to reproduce can be found here: https://github.com/gongzhang/RealmFileLockTest/tree/main?tab=readme-ov-file#steps-to-reproduce
Version
v10.49.1
What Atlas Services are you using?
Local Database only
Are you using encryption?
No
Platform OS and version(s)
visionOS 1.0-1.1.1 are confirmed
Build environment
Xcode version: 15.3
Dependency manager and version: XCFramework and SPM
The text was updated successfully, but these errors were encountered: