8000 Assertion failed: has_refs() · Issue #8086 · realm/realm-core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Assertion failed: has_refs() #8086
Open
@c128128

Description

@c128128

How frequently does the bug occur?

Always

Description

We're encountering a crash in Realm Core with the following message:

Assertion failed: has_refs() and this terminating due to uncaught exception of type realm::util::DecryptionFailed: Decryption failed: page 98 in file of size 3198976 failed the HMAC check. Either the encryption key is incorrect or data is corrupted

This occurs when two processes simultaneously access the same encrypted Realm file - one writing, the other reading. Based on our investigation, this seems to be a race condition that happens during concurrent encrypted access across processes.

Reproduction

We've created a minimal example with two apps that reproduce the issue:

  • TestApp1 (the listener): opens the encrypted Realm and continuously reads from it.
  • TestApp2 (the writer): opens the same Realm file and performs repeated writes.

Steps to Reproduce:

  1. Clone this: https://github.com/c128128/RealmBug

  2. Start TestApp1 (the listener).

  3. Then launch TestApp2 (the writer).

  4. Within a few moments, TestApp1 crashes with:

Assertion failed: m_has_refs with (m_ref, ndx, m_size) =  [5232, 0, 0]

or sometimes with:

terminating due to uncaught exception of type realm::util::DecryptionFailed: Decryption failed: page 98 in file of size 3198976 failed the HMAC check. Either the encryption key is incorrect or data is corrupted

Environment

  • RealmSwift version: 10.54.5
  • RealmCore version: 14.14.0
  • Platform: Mac Catalyst
  • Encryption: Enabled (64-byte key)
  • Concurrency: Two processes accessing the same Realm file simultaneously

Key Observations

  • The crash does not occur with an unencrypted Realm.
  • The crash seems to occur during memory mapping or decryption, possibly due to unsynchronized access to shared encrypted pages.
  • Appears to be an issue within Realm Core's internal caching or reference tracking.
  • The bug was introduced after realm-swift 10.51.0 - everything works fine on 10.51.0, but crashes consistently starting with 10.52.0 and later versions.

Can you reproduce the bug?

Always

Version

10.54.5

What Atlas Services are you using?

Local Database only

Are you using encryption?

Yes

Platform OS and version(s)

macOS 15.5 (Apple M1 Max)

related #8081

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0