realm-js icon indicating copy to clipboard operation
realm-js copied to clipboard

React Native Android application crashing when using syncSession.addConnectionNotification

Open gfrancischini opened this issue 1 year ago • 13 comments
trafficstars

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

  1. Run the application on android emulator
  2. Refresh the react native app with cmd+r

Version

[email protected]

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

gfrancischini avatar Mar 26 '24 20:03 gfrancischini

➤ PM Bot commented:

Jira ticket: RJS-2784

sync-by-unito[bot] avatar Mar 26 '24 20:03 sync-by-unito[bot]

@gfrancischini Thank you for reporting.

The issue is similar to https://github.com/realm/realm-js/issues/6558, and we are investigating.

kneth avatar Apr 09 '24 09:04 kneth

@gfrancischini I have a PR up which I think will fix the issue: #6612

kneth avatar Apr 12 '24 14:04 kneth

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

gfrancischini avatar Apr 12 '24 17:04 gfrancischini

@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 avatar Apr 24 '24 09:04 vatsal-gadhiya-searce

@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 avatar Apr 26 '24 15:04 kneth

@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

Premshankar-Searce avatar Apr 29 '24 10:04 Premshankar-Searce

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.

kraenhansen avatar Apr 29 '24 12:04 kraenhansen

I'm finding this exact same issue on iOS since migrating to v12

altenorjr avatar May 01 '24 15:05 altenorjr

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

gfrancischini avatar Jul 29 '24 18:07 gfrancischini

➤ 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.

sync-by-unito[bot] avatar Aug 19 '24 09:08 sync-by-unito[bot]

@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.

kneth avatar Aug 19 '24 11:08 kneth

➤ danieltabacaru commented:

[[email protected]] Gagik tried that, but the race is still there.

sync-by-unito[bot] avatar Aug 19 '24 11:08 sync-by-unito[bot]