realm / realm-swift

Realm is a mobile database: a replacement for Core Data & SQLite
https://realm.io
Apache License 2.0
16.27k stars 2.14k forks source link

Unpredictable crash: Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first. #8675

Open aehlke opened 1 week ago

aehlke commented 1 week ago

How frequently does the bug occur?

Sometimes

Description

I get this crash inconsistently, and across many different areas of my codebase seemingly randomly

image

Here is the view of the stack trace showing that it happens from inside asyncWrite

image

And here is a snippet of the code showing the error happening inside the asyncWrite (but this crash happens across a variety of asyncWrite calls). The object being mutated belongs to the realm that the asyncWrite happens on. Usually the calls where it crashes work, too.

I have all writes per realm file happening on their own actors (at most one actor per realm file for writes, so that all writes happen in one actor for each realm)

It happens maybe once every 20-30 runs while developing. I've removed all references to realm.refresh / realm.asyncRefresh. Are there any other potential causes for this that I can check my codebase for?

Stacktrace & log output

No response

Can you reproduce the bug?

Sometimes

Reproduction Steps

No response

Version

10.53.0

What Atlas Services are you using?

Local Database only

Are you using encryption?

No

Platform OS and version(s)

macOS 14.6.1

Build environment

Xcode version: Xcode 16 beta 6 Dependency manager and version: SPM

sync-by-unito[bot] commented 1 week ago

➤ PM Bot commented:

Jira ticket: RCOCOA-2425

aehlke commented 1 week ago

try this select the desired compiler in the installer

I have no way to report this comment for abuse - it has a malware link! I reported the profile.

aehlke commented 1 week ago

Sorry, in this case I may have a programming error where the object doesn't belong to that Realm. But I've seen this in other cases too recently. I will update.