realm-js: Realm with sync enabled CRASHES the whole app when "path" is specified
How frequently does the bug occur?
All the time
Description
I created a demo project that crashes after login immediatelly when in realm configuration we add path variable. It seems like unintended behaviour. When removing path no crash appears.
https://github.com/boltss/realm-sync-demo demo project. That crashes when path is specified.
In our case having 2 realms side by side is mandatory. And to separate them we need to specify path to one.
Stacktrace & log output
ERROR [Error: Unable to open realm: Incompatible histories. Expected an empty or synced Realm, but found history type 2, top ref 344 Path: /Users/username/Library/Developer/CoreSimulator/Devices/A1DFCA63-1C6D-4666-AA79-024DB7533A92/data/Containers/Data/Application/67EA29FA-8BC7-470C-8B4D-950175BF4B50/Documents/sync.realm
Exception backtrace:
0 RealmSyncDemo 0x00000001032b655c _ZN5realm21IncompatibleHistoriesC1ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_ + 84
1 RealmSyncDemo 0x00000001032b54f4 _ZN5realm2DB4openERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEbNS_9DBOptionsE + 6728
2 RealmSyncDemo 0x00000001032b704c _ZN5realm2DB4openERNS_11ReplicationERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_9DBOptionsE + 124
3 RealmSyncDemo 0x00000001032bd868 _ZN5realm2DB6createENSt3__110unique_ptrINS_11ReplicationENS1_14default_deleteIS3_EEEERKNS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_9DBOptionsE + 156
4 RealmSyncDemo 0x00000001030bc618 _ZN5realm5_impl16RealmCoordinator7open_dbEv + 1212
5 RealmSyncDemo 0x00000001030bbe9c _ZN5realm5_impl16RealmCoordinator19create_sync_sessionEv + 36
6 RealmSyncDemo 0x00000001030be614 _ZN5realm5_impl16RealmCoordinator22get_synchronized_realmENS_11RealmConfigE + 80
7 RealmSyncDemo 0x000000010311a094 _ZN5realm5Realm22get_synchronized_realmENS_11RealmConfigE + 108
8 RealmSyncDemo 0x00000001030266ec _ZN5realm2js10RealmClassINS_3jsc5TypesEE16async_open_realmEPK15OpaqueJSContextP13OpaqueJSValueRNS0_9ArgumentsIS3_EERNS0_11ReturnValueIS3_EE + 772
9 RealmSyncDemo 0x000000010301be00 _ZN5realm2js4wrapIXadL_ZNS0_10RealmClassINS_3jsc5TypesEE16async_open_realmEPK15OpaqueJSContextP13OpaqueJSValueRNS0_9ArgumentsIS4_EERNS0_11ReturnValueIS4_EEEEEEPKS9_S8_SA_SA_mPKSI_PSI_ + 56
10 JavaScriptCore 0x000000019190e9c4 _ZN3JSCL22callJSCallbackFunctionEPNS_14JSGlobalObjectEPNS_9CallFrameE + 524
11 ??? 0x0000000134205664 0x0 + 5169501796
12 JavaScriptCore 0x0000000191882320 llint_entry + 151568
13 JavaScriptCore 0x0000000191882288 llint_entry + 151416
14 JavaScriptCore 0x0000000191882288 llint_entry + 151416
15 JavaScriptCore 0x0000000191882288 llint_entry + 151416
16 JavaScriptCore 0x0000000191883038 llint_entry + 154920
17 JavaScriptCore 0x0000000191882320 llint_entry + 151568
18 JavaScriptCore 0x0000000191882288 llint_entry + 151416
19 JavaScriptCore 0x0000000191882288 llint_entry + 151416
20 JavaScriptCore 0x0000000191882288 llint_entry + 151416
21 JavaScriptCore 0x0000000191882288 llint_entry + 151416
22 JavaScriptCore 0x0000000191882288 llint_entry + 151416
23 JavaScriptCore 0x0000000191882288 llint_entry + 151416
24 JavaScriptCore 0x0000000191882288 llint_entry + 151416
25 JavaScriptCore 0x0000000191882288 llint_entry + 151416
26 JavaScriptCore 0x0000000191882fa0 llint_entry + 154768
27 JavaScriptCore 0x0000000191882288 llint_entry + 151416
28 JavaScriptCore 0x0000000191882288 llint_entry + 151416
29 JavaScriptCore 0x0000000191882320 llint_entry + 151568
30 JavaScriptCore 0x0000000191882320 llint_entry + 151568
31 JavaScriptCore 0x0000000191882288 llint_entry + 151416
32 JavaScriptCore 0x0000000191882288 llint_entry + 151416
33 JavaScriptCore 0x0000000191882288 llint_entry + 151416
34 JavaScriptCore 0x0000000191882288 llint_entry + 151416
35 JavaScriptCore 0x0000000191882288 llint_entry + 151416
36 JavaScriptCore 0x0000000191882288 llint_entry + 151416
37 JavaScriptCore 0x0000000191882288 llint_entry + 151416
38 JavaScriptCore 0x0000000191882288 llint_entry + 151416
39 JavaScriptCore 0x0000000191882288 llint_entry + 151416
40 JavaScriptCore 0x0000000191882320 llint_entry + 151568
41 JavaScriptCore 0x0000000191882320 llint_entry + 151568
42 JavaScriptCore 0x00000001918835ec llint_entry + 156380
43 JavaScriptCore 0x0000000191882288 llint_entry + 151416
44 JavaScriptCore 0x0000000191882288 llint_entry + 151416
45 JavaScriptCore 0x00000001918835ec llint_entry + 156380
46 JavaScriptCore 0x0000000191882288 llint_entry + 151416
47 JavaScriptCore 0x0000000191882288 llint_entry + 151416
48 JavaScriptCore 0x0000000191882288 llint_entry + 151416
49 JavaScriptCore 0x000000019185d064 vmEntryToJavaScript + 264
50 JavaScriptCore 0x0000000192000e98 _ZN3JSC11Interpreter11executeCallEPNS_14JSGlobalObjectEPNS_8JSObjectERKNS_8CallDataENS_7JSValueERKNS_7ArgListE + 640
51 JavaScriptCore 0x0000000192329110 _ZN3JSC27boundThisNoArgsFunctionCallEPNS_14JSGlobalObjectEPNS_9CallFrameE + 744
52 JavaScriptCore 0x000000019185d210 vmEntryToNative + 280
53 JavaScriptCore 0x0000000192000ec0 _ZN3JSC11Interpreter11executeCallEPNS_14JSGlobalObjectEPNS_8JSObjectERKNS_8CallDataENS_7JSValueERKNS_7ArgListE + 680
54 JavaScriptCore 0x0000000191927b0c JSObjectCallAsFunction + 760
55 RealmSyncDemo 0x0000000102eb14b4 _ZN8facebook3jsc10JSCRuntime4callERKNS_3jsi8FunctionERKNS2_5ValueEPS7_m + 268
56 RealmSyncDemo 0x0000000102ec0820 _ZNK8facebook3jsi8Function4callERNS0_7RuntimeEPKNS0_5ValueEm + 100
57 RealmSyncDemo 0x0000000102ec075c _ZNK8facebook3jsi8Function4callERNS0_7RuntimeESt16initializer_listINS0_5ValueEE + 112
58 RealmSyncDemo 0x0000000102ee2800 _ZNK8facebook3jsi8Function4callIJRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEESB_NS0_5ValueEEEESC_RNS0_7RuntimeEDpOT_ + 284
59 RealmSyncDemo 0x0000000102ee2674 _ZZN8facebook5react11JSIExecutor12callFunctionERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEESA_RKN5folly7dynamicEENK3$_5clEv + 140
60 RealmSyncDemo 0x0000000102ee25c8 _ZNSt3__1L8__invokeIRZN8facebook5react11JSIExecutor12callFunctionERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESB_RKN5folly7dynamicEE3$_5JEEEDTclscT_fp_spscT0_fp0_EEOSI_DpOSJ_ + 24
61 RealmSyncDemo 0x0000000102ee2580 _ZNSt3__128__invoke_void_return_wrapperIvLb1EE6__callIJRZN8facebook5react11JSIExecutor12callFunctionERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESD_RKN5folly7dynamicEE3$_5EEEvDpOT_ + 28
62 RealmSyncDemo 0x0000000102ee2558 _ZNSt3__110__function12__alloc_funcIZN8facebook5react11JSIExecutor12callFunctionERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESC_RKN5folly7dynamicEE3$_5NS8_ISH_EEFvvEEclEv + 28
63 RealmSyncDemo 0x0000000102ee12f8 _ZNSt3__110__function6__funcIZN8facebook5react11JSIExecutor12callFunctionERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESC_RKN5folly7dynamicEE3$_5NS8_ISH_EEFvvEEclEv + 28
64 RealmSyncDemo 0x0000000102f217e8 _ZNKSt3__110__function12__value_funcIFvvEEclEv + 60
65 RealmSyncDemo 0x0000000102f216f8 _ZNKSt3__18functionIFvvEEclEv + 24
66 RealmSyncDemo 0x0000000102c53620 _ZN8facebook5react11JSIExecutor21defaultTimeoutInvokerERKNSt3__18functionIFvvEEENS3_IFNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvEEE + 24
67 RealmSyncDemo 0x0000000102c56584 _ZNSt3__1L8__invokeIRPFvRKNS_8functionIFvvEEENS1_IFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEvEEEEJS5_SD_EEEDTclscT_fp_spscT0_fp0_EEOSH_DpOSI_ + 92
68 RealmSyncDemo 0x0000000102c564f8 _ZNSt3__128__invoke_void_return_wrapperIvLb1EE6__callIJRPFvRKNS_8functionIFvvEEENS3_IFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEvEEEES7_SF_EEEvDpOT_ + 72
69 RealmSyncDemo 0x0000000102c5647c _ZNSt3__110__function12__alloc_funcIPFvRKNS_8functionIFvvEEENS2_IFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEvEEEENSA_ISG_EESF_EclES6_OSE_ + 72
70 RealmSyncDemo 0x0000000102c54ea0 _ZNSt3__110__function6__funcIPFvRKNS_8functionIFvvEEENS2_IFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEvEEEENSA_ISG_EESF_EclES6_OSE_ + 72
71 RealmSyncDemo 0x0000000102ee0854 _ZNKSt3__110__function12__value_funcIFvRKNS_8functionIFvvEEENS2_IFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEvEEEEEclES6_OSE_ + 104
72 RealmSyncDemo 0x0000000102ed0800 _ZNKSt3__18functionIFvRKNS0_IFvvEEENS0_IFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEvEEEEEclES4_SC_ + 72
73 RealmSyncDemo 0x0000000102ed04b0 _ZN8facebook5react11JSIExecutor12callFunctionERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEESA_RKN5folly7dynamicE + 324
74 RealmSyncDemo 0x0000000102e97d88 _ZZN8facebook5react16NativeToJsBridge12callFunctionEONSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEES9_ON5folly7dynamicEENK3$_2clEPNS0_10JSExecutorE + 636
75 RealmSyncDemo 0x0000000102e97aec _ZNSt3__1L8__invokeIRZN8facebook5react16NativeToJsBridge12callFunctionEONS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESA_ON5folly7dynamicEE3$_2JPNS2_10JSExecutorEEEEDTclscT_fp_spscT0_fp0_EEOSI_DpOSJ_ + 36
76 RealmSyncDemo 0x0000000102e97a98 _ZNSt3__128__invoke_void_return_wrapperIvLb1EE6__callIJRZN8facebook5react16NativeToJsBridge12callFunctionEONS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESC_ON5folly7dynamicEE3$_2PNS4_10JSExecutorEEEEvDpOT_ + 52
77 RealmSyncDemo 0x0000000102e97a58 _ZNSt3__110__function12__alloc_funcIZN8facebook5react16NativeToJsBridge12callFunctionEONS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESB_ON5folly7dynamicEE3$_2NS8_ISF_EEFvPNS3_10JSExecutorEEEclEOSI_ + 52
78 RealmSyncDemo 0x0000000102e964fc _ZNSt3__110__function6__funcIZN8facebook5react16NativeToJsBridge12callFunctionEONS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESB_ON5folly7dynamicEE3$_2NS8_ISF_EEFvPNS3_10JSExecutorEEEclEOSI_ + 52
79 RealmSyncDemo 0x0000000102ea3fb8 _ZNKSt3__110__function12__value_funcIFvPN8facebook5react10JSExecutorEEEclEOS5_ + 84
80 RealmSyncDemo 0x0000000102ea3f30 _ZNKSt3__18functionIFvPN8facebook5react10JSExecutorEEEclES4_ + 48
81 RealmSyncDemo 0x0000000102ea3ef0 _ZZN8facebook5react16NativeToJsBridge18runOnExecutorQueueENSt3__18functionIFvPNS0_10JSExecutorEEEEENK3$_8clEv + 92
82 RealmSyncDemo 0x0000000102ea3e74 _ZNSt3__1L8__invokeIRZN8facebook5react16NativeToJsBridge18runOnExecutorQueueENS_8functionIFvPNS2_10JSExecutorEEEEE3$_8JEEEDTclscT_fp_spscT0_fp0_EEOSB_DpOSC_ + 24
83 RealmSyncDemo 0x0000000102ea3e2c _ZNSt3__128__invoke_void_return_wrapperIvLb1EE6__callIJRZN8facebook5react16NativeToJsBridge18runOnExecutorQueueENS_8functionIFvPNS4_10JSExecutorEEEEE3$_8EEEvDpOT_ + 28
84 RealmSyncDemo 0x0000000102ea3e04 _ZNSt3__110__function12__alloc_funcIZN8facebook5react16NativeToJsBridge18runOnExecutorQueueENS_8functionIFvPNS3_10JSExecutorEEEEE3$_8NS_9allocatorISA_EEFvvEEclEv + 28
85 RealmSyncDemo 0x0000000102ea2764 _ZNSt3__110__function6__funcIZN8facebook5react16NativeToJsBridge18runOnExecutorQueueENS_8functionIFvPNS3_10JSExecutorEEEEE3$_8NS_9allocatorISA_EEFvvEEclEv + 28
86 RealmSyncDemo 0x0000000102f217e8 _ZNKSt3__110__function12__value_funcIFvvEEclEv + 60
87 RealmSyncDemo 0x0000000102f216f8 _ZNKSt3__18functionIFvvEEclEv + 24
88 RealmSyncDemo 0x0000000102ca8f70 _ZN8facebook5react17tryAndReturnErrorERKNSt3__18functionIFvvEEE + 24
89 RealmSyncDemo 0x0000000102cd64a8 _ZN8facebook5react16RCTMessageThread7tryFuncERKNSt3__18functionIFvvEEE + 36
90 RealmSyncDemo 0x0000000102cdc200 _ZZN8facebook5react16RCTMessageThread10runOnQueueEONSt3__18functionIFvvEEEENK3$_1clEv + 80
91 RealmSyncDemo 0x0000000102cdc190 _ZNSt3__1L8__invokeIRZN8facebook5react16RCTMessageThread10runOnQueueEONS_8functionIFvvEEEE3$_1JEEEDTclscT_fp_spscT0_fp0_EEOSA_DpOSB_ + 24
92 RealmSyncDemo 0x0000000102cdc148 _ZNSt3__128__invoke_void_return_wrapperIvLb1EE6__callIJRZN8facebook5react16RCTMessageThread10runOnQueueEONS_8functionIFvvEEEE3$_1EEEvDpOT_ + 28
93 RealmSyncDemo 0x0000000102cdc120 _ZNSt3__110__function12__alloc_funcIZN8facebook5react16RCTMessageThread10runOnQueueEONS_8functionIFvvEEEE3$_1NS_9allocatorIS9_EES6_EclEv + 28
94 RealmSyncDemo 0x0000000102cdab84 _ZNSt3__110__function6__funcIZN8facebook5react16RCTMessageThread10runOnQueueEONS_8functionIFvvEEEE3$_1NS_9allocatorIS9_EES6_EclEv + 28
95 RealmSyncDemo 0x0000000102f217e8 _ZNKSt3__110__function12__value_funcIFvvEEclEv + 60
96 RealmSyncDemo 0x0000000102f216f8 _ZNKSt3__18functionIFvvEEclEv + 24
97 RealmSyncDemo 0x0000000102cd6204 ___ZN8facebook5react16RCTMessageThread8runAsyncENSt3__18functionIFvvEEE_block_invoke + 48
98 CoreFoundation 0x0000000180361f94 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 20
99 CoreFoundation 0x0000000180361268 __CFRunLoopDoBlocks + 408
100 CoreFoundation 0x000000018035ba04 __CFRunLoopRun + 724
101 CoreFoundation 0x000000018035b218 CFRunLoopRunSpecific + 572
102 RealmSyncDemo 0x0000000102c7a8c8 +[RCTCxxBridge runRunLoop] + 764
103 Foundation 0x0000000180851578 __NSThread__start__ + 792
104 libsystem_pthread.dylib 0x00000001cc0b16c8 _pthread_start + 116
105 libsystem_pthread.dylib 0x00000001cc0ac910 thread_start + 8.]
Can you reproduce the bug?
Yes, always
Reproduction Steps
open App.tsx and either removing or adding path makes it run or crash.
const RealmContext = createRealmContext({
schema: [],
// This line crashes the app with sync.
path: 'sync.realm',
});
Crash happens after realm.logIn()
Version
10.19.1
What SDK flavour are you using?
Atlas App Services (auth, functions, etc.)
Are you using encryption?
No, not using encryption
Platform OS and version(s)
iOS 15.5
Build environment
System: OS: macOS 12.4 CPU: (10) arm64 Apple M1 Pro Memory: 105.23 MB / 16.00 GB Shell: 5.8.1 - /bin/zsh Binaries: Node: 17.9.0 - ~/.volta/tools/image/node/17.9.0/bin/node Yarn: 1.22.18 - ~/.volta/tools/image/yarn/1.22.18/bin/yarn npm: 8.5.5 - ~/.volta/tools/image/node/17.9.0/bin/npm Watchman: 2022.03.21.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.11.3 - /opt/homebrew/bin/pod SDKs: iOS SDK: Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5 Android SDK: Android NDK: 23.0.7344513-beta4 IDEs: Android Studio: Chipmunk 2021.2.1 Patch 1 Chipmunk 2021.2.1 Patch 1 Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild Languages: Java: 18.0.1 - /Users/username/.jenv/shims/javac npmPackages: @react-native-community/cli: Not Found react: 17.0.2 => 17.0.2 react-native: 0.68.2 => 0.68.2 react-native-macos: Not Found npmGlobalPackages: react-native: Not Found
Cocoapods version
1.11.3
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 25 (12 by maintainers)
@kneth, has the realm team tried talking to some of their MDB customers to understand their use cases? The current implementation of Atlas Sync Realm seems pretty out of touch with the needs of modern day mobile apps. For instance, if an app developer wants to implement a task app, good UX may let them use the app and start adding objects to realm, but only sign in to save their data to the cloud or share it with colleagues. That would delay user login to an unknown time in the app life cycle and while it may be necessary for Mongo Atlas to set the owner of those documents, Realm should be able to persist data locally until being logged in which will give app developers a lot more flexibility to create proper UX flows that do not force a user to sign in before they understand more about the app they are using and if they feel comfortable letting that app handle their data on the cloud.
I’d love to chat with your team more and give some references to design patterns that should be supported that we use in industry developed at UC Berkeley and Stanford.
@rogerkerse I’m still looking into this, you’re right that it’s non trivial with Realm React so I am trying to work out the best way to do this, and talking to the team about if we need to add additional functionality to support this flow. Sorry for the trouble!
@ZComwiz I’ll chat to the team about your suggestion as I do agree this is somewhat complicated but there might be valid reasons for it being so. I’ll get back to you with our thoughts, it might be an area where we can improve our API in future for sure.