realm-js
realm-js copied to clipboard
React Native Android application crashing when using syncSession.addConnectionNotification
How frequently does the bug occur?
Always
Description
The react native application is crashing when there is an active syncSession.addConnectionNotification and the app gets reloaded
Stacktrace & log output
Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x30 in tid 8357 (mqt_js), pid 8292 (om.synctutorial)
2024-03-26 17:24:24.007 8292-8292 unknown:Re...nceManager com.synctutorial E destroyRootView called
2024-03-26 17:24:24.009 8292-8292 unknown:Re...nceManager com.synctutorial E destroyRootView called, unmountReactApplication
Cmdline: com.synctutorial
2024-03-26 17:24:25.208 8538-8538 DEBUG crash_dump64 A pid: 8292, tid: 8357, name: mqt_js >>> com.synctutorial <<<
2024-03-26 17:24:25.208 8538-8538 DEBUG crash_dump64 A #00 pc 00000000003bfd00 /data/app/~~kwxPndNsCq5S-a142smnIA==/com.synctutorial-Jxnmi56nwT1pLTopnsEDBg==/lib/arm64/librealm.so (BuildId: edf6f0d435afef43e7dfceba74cfdd58b0289992)
2024-03-26 17:24:25.208 8538-8538 DEBUG crash_dump64 A #01 pc 00000000003c061c /data/app/~~kwxPndNsCq5S-a142smnIA==/com.synctutorial-Jxnmi56nwT1pLTopnsEDBg==/lib/arm64/librealm.so (BuildId: edf6f0d435afef43e7dfceba74cfdd58b0289992)
2024-03-26 17:24:25.208 8538-8538 DEBUG crash_dump64 A #02 pc 000000000041c924 /data/app/~~kwxPndNsCq5S-a142smnIA==/com.synctutorial-Jxnmi56nwT1pLTopnsEDBg==/lib/arm64/librealm.so (BuildId: edf6f0d435afef43e7dfceba74cfdd58b0289992)
2024-03-26 17:24:25.208 8538-8538 DEBUG crash_dump64 A #03 pc 000000000041d634 /data/app/~~kwxPndNsCq5S-a142smnIA==/com.synctutorial-Jxnmi56nwT1pLTopnsEDBg==/lib/arm64/librealm.so (BuildId: edf6f0d435afef43e7dfceba74cfdd58b0289992)
Can you reproduce the bug?
Yes, always
Reproduction Steps
Using this branch: https://github.com/Spring-Global/realm-react-native-sample/tree/realm-crash-callback
- Run the application on android emulator
- Refresh the react native app with cmd+r
Version
What services are you using?
Atlas Device Sync
Are you using encryption?
No
Platform OS and version(s)
Android - Emulator API 34
Build environment
Which debugger for React Native: ..
Cocoapods version
No response
➤ PM Bot commented:
Jira ticket: RJS-2784
@gfrancischini Thank you for reporting.
The issue is similar to https://github.com/realm/realm-js/issues/6558, and we are investigating.
@gfrancischini I have a PR up which I think will fix the issue: #6612
Hi Kneth, thanks for the update. It seems that the change is only on JS side right?
// Clear the internal state to prevent crashes when reloading on React Native
binding.RealmCoordinator.clearAllCaches();
binding.App.clearCachedApps();
I will give a try
@kneth We have tried hot reload this time and the app is still crashing for us with latest version of realm 12.7.1.
Note: It does not crashes normally though for the first time.
@vatsal-gadhiya-searce Sorry to hear. I'll reopen the issue and we need to investigate further. If you can share a stack trace, we will appreciate it.
@kneth here repo realmDemo reproducible
- on restarting app also crashing after 2 - 3 times
- Attaching a video for steps to reproduce
https://github.com/realm/realm-js/assets/159114096/d0aed733-b221-4649-ae65-075f08b3a594
It seems to me we need to add a cleanup of connection state listeners, the same way we clean up other listeners passed to core, as part of the cleanup we do here: https://github.com/realm/realm-js/blob/56112c7351b9d4a5abdb6904bfd2ac14e61266cb/packages/realm/src/platform/react-native/index.ts#L28-L30
More specifically, we should expose a method on the SyncSession in Core (similiar to unregister_connection_change_callback) to remove all listeners from the underlying vector holding references to connection listener callbacks.
I'm finding this exact same issue on iOS since migrating to v12
I'm still having this issue on android on 12.12.1.
You can use this repo to reproduce the issue: https://github.com/Spring-Global/realm-react-native-sample/tree/realm-crash-callback
➤ danieltabacaru commented:
[[email protected]] Is anyone taking over from Gagik? Apparently the fix in https://github.com/realm/realm-core/pull/7963 does not fully fix the crashes, so it'd be very helpful to get a repro.
@danieltabacaru Maybe a combination of https://github.com/realm/realm-js/pull/6824 and the core fix?
@kraenhansen is probably the best one to take over.