realm / realm-swift

Realm is a mobile database: a replacement for Core Data & SQLite
https://realm.io
Apache License 2.0
16.34k stars 2.15k 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 2 months ago

aehlke commented 2 months 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 2 months ago

➤ PM Bot commented:

Jira ticket: RCOCOA-2425

aehlke commented 2 months 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 2 months 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.

emirvajzovic commented 1 month ago

Hi, I am experiencing the similar issue when my app randomly crashes even though code is wrapped in .write { }. Can you provide more details for your case? It could be helpful for me as well.

aehlke commented 1 month ago

@emirvajzovic make sure all writes for a realm happen in same actor also if you await on something it's possible that objects you had fetched before become invalidated by the time you write to them, that might also be an issue if I recall Realm is also dead now so let's move to something else...

emirvajzovic commented 1 month ago

@aehlke thanks for the reply. I had a weird issue with multiple realm instances and I was trying to write in the wrong one. I'd like to move to something else but unfortunately it's a project that I'm only maintaining and there is no budget for any improvements

aehlke commented 1 month ago

I still experience this crash :( Very hard to diagnose...