Realm-java: io.realm.exceptions.RealmError: Unrecoverable error. Permission denied on Huawei P20 with Android 9

Created on 31 Dec 2018  路  8Comments  路  Source: realm/realm-java

The app crashes on Huawei P20 with Android 9. That phone got the 9 update only 3 days ago, so it might be related to that. Sadly, we don't have that phone ourselves, so the issue is reported by a client using the production app and we found the relevant crash reports on Google Play Console:

Fatal Exception: io.realm.exceptions.RealmError: Unrecoverable error. Permission denied in /Users/Nabil/Dev/realm/master/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101
       at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(OsSharedRealm.java)
       at io.realm.internal.OsSharedRealm.<init>(OsSharedRealm.java:171)
       at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241)
       at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:231)
       at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:319)
       at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:282)
       at io.realm.Realm.getDefaultInstance(Realm.java:343)
       at com.tallink.mikiandroid.service.realm.RealmDatabase.getInstance(RealmDatabase.kt:29)
       at com.tallink.mikiandroid.activity.LocalizedActivity.onCreate(LocalizedActivity.kt:28)
       at com.tallink.mikiandroid.activity.MainActivity.onCreate(MainActivity.kt:200)
       at android.app.Activity.performCreate(Activity.java:6444)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1116)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2720)
       at android.app.ActivityThread.access$900(ActivityThread.java:196)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:210)
       at android.app.ActivityThread.main(ActivityThread.java:5982)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)

Steps & Code to Reproduce

As seen in the stack trace, our MainActivity calls super.onCreate which refers to LocalizedActivity and calls RealmDatabase.getInstance (singleton service) which calls Realm.getDefaultInstance there. Apparently, that throws an error, but that one is caught:

      try {
        Realm.getDefaultInstance() // 
      } catch (e: Exception) {
        // Note that DynamicRealm will no try to run the migration, that's why we use it
        DynamicRealm.getInstance(buildConfig()).close() // <- this is the exception in the stack, but we got here only because the try block threw.
        Realm.deleteRealm(buildConfig())
        Realm.getDefaultInstance()
      }

It keeps happening on every app start. It happens immediately and is reproducible every time, according to the client (and we do see multiple crash stack traces from the same phone).

RealmConfiguration is not specifying directory, so the default location is used.

Version of Realm and tooling

Realm version(s): 5.0.1 -- I know this is not the latest version, but this is the version that was in our app version that got the crash. As we don't have the phone ourselves, we can't possibly test and verify the crash is specific to that version only.

Realm Sync feature enabled: No

Which Android version and device(s): Huawei P20 (HWEML), Android 9

O-Community T-Duplicate

Most helpful comment

@bmunkholm Well, the difference between the tickets is in both hardware (here brand new and popular high-end P20, there - much older and budget P8) and software (here the latest Android 9, there - legacy Android 6 that鈥檚 not that widely used anymore). But you know better how to manage the tickets, just saying.

All 8 comments

It does look like a duplicate of https://github.com/realm/realm-java/issues/5715 so I'll close this one and you can follow that. We will look into this again.

@bmunkholm Well, the difference between the tickets is in both hardware (here brand new and popular high-end P20, there - much older and budget P8) and software (here the latest Android 9, there - legacy Android 6 that鈥檚 not that widely used anymore). But you know better how to manage the tickets, just saying.

Yeah, Android 9 is pretty new, and Huawei P20 is not cheap

Hello. I have the same problem. Device Huawei Honor 10 (COL-L29). Android 9. 16 crashes from 1 user
Fatal Exception: io.realm.exceptions.RealmError: Unrecoverable error. Permission denied in /Users/Nabil/Dev/realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 101 at io.realm.internal.SharedRealm.nativeGetSharedRealm(SharedRealm.java) at io.realm.internal.SharedRealm.<init>(SharedRealm.java:172) at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:219) at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:209) at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:319) at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:282) at io.realm.Realm.getInstance(Realm.java:353) at ru.dostaevsky.android.data.local.cache.RealmDataService.getRealm(RealmDataService.java:47) at ru.dostaevsky.android.data.local.cache.RealmDataService.getCart(RealmDataService.java:57) at ru.dostaevsky.android.data.DataManager.getCart(DataManager.java:471) at ru.dostaevsky.android.ui.toolbar.CartQuantityPresenter.attachView(CartQuantityPresenter.java:25) at ru.dostaevsky.android.ui.toolbar.ToolbarActivity.init(ToolbarActivity.java:48) at ru.dostaevsky.android.ui.base.BaseActivity.onCreate(BaseActivity.java:63) at android.app.Activity.performCreate(Activity.java:7436) at android.app.Activity.performCreate(Activity.java:7426) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3279) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3484) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123) at android.os.Handler.dispatchMessage(Handler.java:109) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:7470) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)

Same error here, Android 9 and Huawei, consistently crashes:

Caused by io.realm.exceptions.RealmError Unrecoverable error. Permission denied in /home/cc/repo/realm/release/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 91

Is the error recoverable at all? Can they restart the app and hope it works? Do they need to "Clear user data/uninstall" app? Or does it crash all the time. I don't have access to a device to test this out.

Have same issue on Huawei P20 Pro running Android 9

Fatal Exception: io.realm.exceptions.RealmError: Unrecoverable error. Permission denied in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(OsSharedRealm.java) at io.realm.internal.OsSharedRealm.(SourceFile:171) at io.realm.internal.OsSharedRealm.(SourceFile:171) at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241) at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:231) at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:318) at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:284) at io.realm.Realm.getInstance(Realm.java:428)

Have same issue on Huawei honor CHM-TL00H Android 6.0

io.realm.exceptions.RealmError: Unrecoverable error. Permission denied in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101

2聽io.reactivex.d.a.a(RxJavaPlugins.java:367)
3聽......
4聽Caused by:
5聽io.realm.exceptions.RealmError:Unrecoverable error. Permission denied in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101
6聽io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
7聽io.realm.internal.OsSharedRealm.(OsSharedRealm.java:171)
8聽io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241)
9聽io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:231)
10聽io.realm.RealmCache.b(RealmCache.java:318)
11聽io.realm.RealmCache.a(RealmCache.java:284)
12聽io.realm.r.m(Realm.java:407)

Please pay attention!

Most likely same error here, Huawei HUAWEI P smart+ 2019 Android 10 (SDK 29). Repeated crashes from one user.

io.realm.exceptions.RealmError:
at io.realm.internal.OsSharedRealm.nativeGetSharedRealm (OsSharedRealm.java)
at io.realm.internal.OsSharedRealm. (OsSharedRealm.java:171)
at io.realm.internal.OsSharedRealm.getInstance (OsSharedRealm.java:241)
at io.realm.internal.OsSharedRealm.getInstance (OsSharedRealm.java:231)
at io.realm.RealmCache.doCreateRealmOrGetFromCache (RealmCache.java:337)
at io.realm.RealmCache.createRealmOrGetFromCache (RealmCache.java:290)
at io.realm.DynamicRealm.getInstance (DynamicRealm.java:104)
at com.sonymobile.connectedgym.App.initRealm (App.java:282)
at com.sonymobile.connectedgym.App.onCreate (App.java:156)
at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1195)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7202)
at android.app.ActivityThread.access$2200 (ActivityThread.java:296)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2208)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:213)
at android.app.ActivityThread.main (ActivityThread.java:8178)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1101)

Was this page helpful?
0 / 5 - 0 ratings