realm / realm-java

Realm is a mobile database: a replacement for SQLite & ORMs
http://realm.io
Apache License 2.0
11.45k stars 1.75k forks source link

RealmFileException: Top ref outside file #6239

Closed ankursharma234 closed 4 years ago

ankursharma234 commented 5 years ago

Actual Results

Caused by io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/packageName/files/file': Top ref outside file (size = 268484608). top_ref[0]: FF50828, top_ref[1]: 100473C0, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 1. (Top ref outside file (size = 268484608). top_ref[0]: FF50828, top_ref[1]: 100473C0, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 1) (/data/data/packageName/files/file) 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.(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.getInstance(Realm.java:378) at in.bizanalyst.utils.RealmUtils.getRealm(RealmUtils.java:65) at in.bizanalyst.utils.RealmUtils.getCurrentRealm(RealmUtils.java:76) at in.bizanalyst.activity.MainActivity.onCreate(MainActivity.java:201) at android.app.Activity.performCreate(Activity.java:6955) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

Steps & Code to Reproduce

Not reproducable

Version of Realm and tooling Realm version(s): 5.4.1

Realm Sync feature enabled: Yes

Android Studio version: Yes

Android Build Tools version: 27.0.3

Gradle version: 3.4.1

Which Android version and device(s): All

cmelchior commented 5 years ago

@ankursharma234 Are you seeing this on multiple devices? In that case, which ones?

Also are you by any chance moving Realm files around yourself? The error indicates that the file is "shorter" than expected.

ankursharma234 commented 5 years ago

@cmelchior Devices: samsung - 57% Xiaomi - 12% OnePlus - 11% OPPO - 4%

No realm file is not moved by any chance. And what do you mean by file is shorter than expected

cmelchior commented 5 years ago

@ankursharma234 Do you have similar stack traces from these devices? We would be very interested in knowing the exact values from those exceptions as that can help us narrow down where this might occur.

Also if you know the exact device, that would be extremely helpful as well. Especially the device where this is most common.

When I say the file appears to "short", it is because the top_refs defines an offset into the file that indicates where it "starts", but that offset is outside the actual size of the file. This should of course not be possible, but we still haven't been able to reproduce this.

msesma commented 5 years ago

I have a similar issue: Samples of different devices: Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{....library.LibraryActivity}: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.mycompany/files/librarydb.realm': Top ref outside file (size = 1310720). top_ref[0]: 303150000031878, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0. (Top ref outside file (size = 1310720). top_ref[0]: 303150000031878, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0) (/data/data/com.mycompany/files/librarydb.realm) in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Kind: ACCESS_ERROR. Galaxy On5

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{....library.LibraryActivity}: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.mycompany/files/librarydb.realm': Top ref outside file (size = 1703936). top_ref[0]: 303150000142A50, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0. (Top ref outside file (size = 1703936). top_ref[0]: 303150000142A50, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0) (/data/data/com.mycompany/files/librarydb.realm) in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Kind: ACCESS_ERROR. LGMP450

Fatal Exception: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.mycompany/files/librarydb.realm': Top ref outside file (size = 1310720). top_ref[0]: 303150000024E60, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0. (Top ref outside file (size = 1310720). top_ref[0]: 303150000024E60, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0) (/data/data/com.mycompany/files/librarydb.realm) in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Oneplus 2

Fatal Exception: java.lang.RuntimeException: Unable to create application com.mycompany.MainApplication: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.mycompany/files/userdb.realm': Top ref outside file (size = 36864). top_ref[0]: 3031500000083E8, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0. (Top ref outside file (size = 36864). top_ref[0]: 3031500000083E8, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0) (/data/data/com.mycompany/files/userdb.realm) in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Kind: ACCESS_ERROR. H8216

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{....library.LibraryActivity}: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.mycompany/files/librarydb.realm': Top ref outside file (size = 1310720). top_ref[0]: 303150000036140, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 1. (Top ref outside file (size = 1310720). top_ref[0]: 303150000036140, top_ref[1]: 46020200, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 1) (/data/data/com.mycompany/files/librarydb.realm) in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Kind: ACCESS_ERROR. Galaxy S7

cmelchior commented 5 years ago

This is now being tracked in Core here: https://github.com/realm/realm-core/issues/3133.

@ankursharma234 Any information you have regarding how the Realms are being opened/manipulated would be very valuable. Especially if you copying Realms from assets, deleting or copying the files. If you can share your RealmConfiguration that would also help.

cmelchior commented 5 years ago

Caused by io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/in.package/files/090b64fb-3170-4266-9af7-2d3aed04bc8b': Top ref outside file (size = 268484608). top_ref[0]: FF50828, top_ref[1]: 100473C0, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 1. (Top ref outside file (size = 268484608). top_ref[0]: FF50828, top_ref[1]: 100473C0, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 1) (/data/data/in.package/files/090b64fb-3170-4266-9af7-2d3aed04bc8b)

From #6304

ankursharma234 commented 5 years ago

@cmelchior Here is my realm configuration

private static RealmConfiguration getRealmConfig(final Context context, final String id) {
        RealmConfiguration config = configByCompany.get(id);
        if (null == config) {
            config = new RealmConfiguration.Builder()
                    .name(id)
                    .schemaVersion(62)
                    .migration(new Migration())
                    .encryptionKey(KeystoreUtils.getEncryptionKey(context, id))
                    .build();

            configByCompany.put(id, config);
        }
        return config;
    }

    public synchronized static Realm getRealm(final String id) {
        final Context context = BizAnalystApplication.getInstance().getApplicationContext();
        final RealmConfiguration config = getRealmConfig(context, id);
        return Realm.getInstance(config);
    }

And no, the files are not moved or copied nor they are deleted

miraclebg commented 5 years ago

Got the same stuff here - attached the stack traces. com.app_issue_crash_5CD0B748033400010F4EC84DCA59D6AE_DNE_5_v2.txt

jpmcosta commented 5 years ago

I'm also getting similar crashes. I'm using multi process, not sure if it is relevant.

Realm version: 5.14.0

bmunkholm commented 5 years ago

@jpmcosta Please log all details if it's the same exception. In cases where it's not immediately reproducible, the more details we have the better.

jpmcosta commented 5 years ago

@bmunkholm unfortunately the bug was already removed from my issue tracker. I didn't share it, because I thought it was irrelevant. I will take that into consideration in future reports. Sorry about that.

cmelchior commented 4 years ago

Should be fixed in 6.0.1 (not released yet), but 6.0.1-SNAPSHOT should be available. See https://github.com/realm/realm-java/blob/master/README.md#using-snapshots

makecloud commented 2 years ago

@cmelchior I catch this problem now,at version realm-gradle-plugin 6.0.2!But I first feedback to MangoDB community forum. repeatedly, I comment here for a resolution as soon as possible.

below is my tidy-up feedback ago:

Help! Help! Help! today morning when i open my Android app, its crash by realm Exception! but it is no problem yesterday! below is the exception stacktrace throw by my app:

2022-07-15 10:15:39.638 15324-15324/com.oohlink.player E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.oohlink.player, PID: 15324
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oohlink.player/com.oohlink.player.main.MainActivity}: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.oohlink.player/files/oohlink.realm': Top ref outside file (size = 9437184). top_ref[0]: 1851010155FFAA00, top_ref[1]: 12755, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0 Path:Exception backtrace:
    <backtrace not supported on this platform>. (Top ref outside file (size = 9437184). top_ref[0]: 1851010155FFAA00, top_ref[1]: 12755, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0 Path: /data/data/com.oohlink.player/files/oohlink.realm
    Exception backtrace:
    <backtrace not supported on this platform>) (/data/data/com.oohlink.player/files/oohlink.realm) in /Users/cm/Realm/realm-java-release/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Kind: ACCESS_ERROR.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2671)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2732)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6141)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
     Caused by: io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/com.oohlink.player/files/oohlink.realm': Top ref outside file (size = 9437184). top_ref[0]: 1851010155FFAA00, top_ref[1]: 12755, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0 Path:Exception backtrace:
    <backtrace not supported on this platform>. (Top ref outside file (size = 9437184). top_ref[0]: 1851010155FFAA00, top_ref[1]: 12755, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0 Path: /data/data/com.oohlink.player/files/oohlink.realm
    Exception backtrace:
    <backtrace not supported on this platform>) (/data/data/com.oohlink.player/files/oohlink.realm) in /Users/cm/Realm/realm-java-release/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 101 Kind: ACCESS_ERROR.
        at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
        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:337)
        at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:290)
        at io.realm.Realm.getDefaultInstance(Realm.java:407)
        at com.oohlink.player.sdk.dataRepository.local.db.PlayerDatabaseDataSource.getReserveImageVersion(PlayerDatabaseDataSource.java:302)
        at com.oohlink.player.sdk.dataRepository.PlayerDataRepository.getReserveImageVersionLocal(PlayerDataRepository.java:253)
        at com.oohlink.player.sdk.manager.ReverseManager.getPlayReserveVersion(ReverseManager.java:166)
        at com.oohlink.player.sdk.presenter.OohlinkPlayerViewPresenter.setReverse(OohlinkPlayerViewPresenter.java:144)
        at com.oohlink.player.sdk.presenter.OohlinkPlayerViewPresenter.setOohlinkPlayerView(OohlinkPlayerViewPresenter.java:124)
        at com.oohlink.player.sdk.PlayController.setOohlinkPlayerView(PlayController.java:113)
        at com.oohlink.player.sdk.OohlinkPlayer.start(OohlinkPlayer.java:153)
        at com.oohlink.player.main.MainActivity.onStart(MainActivity.java:215)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
        at android.app.Activity.performStart(Activity.java:6726)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2634)
            ... 9 more

After, I fetch the realm file from my android device, and open it use RealmStudio at MacBookPro, it also prompt an Error below:

CLASSES

Unable to open a realm at path '/Users/marshall/oohlink.realm': Top ref outside file (size = 9437184). top_ref[0]: 1851010155FFAA00, top_ref[1]: 12755, mnemonic: 54 2D 44 42, fmt[0]: 9, fmt[1]: 9, flags: 0 Path:Exception backtrace: 0 .io.realm.realm-studio.xyK8Sz 0x0000000120639271 _ZN5realm15InvalidDatabaseC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_ + 49 1 .io.realm.realm-studio.xyK8Sz 0x0000000120558e1f _ZN5realm9SlabAlloc22throw_header_exceptionENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKNS0_6HeaderERKS7_ + 143 2 .io.realm.realm-studio.xyK8Sz 0x00000001205586a3 _ZN5realm9SlabAlloc15validate_bufferEPKcmRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE + 787 3 .io.realm.realm-studio.xyK8Sz 0x00000001205575cf _ZN5realm9SlabAlloc11attach_fileERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERNS0_6ConfigE + 2111 4 .io.realm.realm-studio.xyK8Sz 0x0000000120631660 _ZN5realm11SharedGroup7do_openERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEbbNS_18SharedGroupOptionsE + 4960 5 .io.realm.realm-studio.xyK8Sz 0x0000000120334a1c _ZN5realm11SharedGroup4openERNS_11ReplicationENS_18SharedGroupOptionsE + 236 6 .io.realm.realm-studio.xyK8Sz 0x0000000120334403 _ZN5realm11SharedGroupC2ERNS_11ReplicationENS_18SharedGroupOptionsE + 1587 7 .io.realm.realm-studio.xyK8Sz 0x000000012029eff1 _ZN5realm5Realm16open_with_configERKNS0_6ConfigERNSt3__110unique_ptrINS_11ReplicationENS4_14default_deleteIS6_EEEERNS5_INS_11SharedGroupENS7_ISB_EEEERNS5_INS_5GroupENS7_ISF_EEEEPS0_ + 1145 8 .io.realm.realm-studio.xyK8Sz 0x000000012029e926 _ZN5realm5RealmC2ENS0_6ConfigENSt3__110shared_ptrINS_5_impl16RealmCoordinatorEEE + 278 9 .io.realm.realm-studio.xyK8Sz 0x00000001202a527e _ZZN5realm5Realm17make_shared_realmENS0_6ConfigENSt3__110shared_ptrINS_5_impl16RealmCoordinatorEEEEN19make_shared_enablerC2ES1_S6_ + 84 10 .io.realm.realm-studio.xyK8Sz 0x00000001202beda8 _ZNSt3__110shared_ptrIZN5realm5Realm17make_shared_realmENS2_6ConfigENS0_INS1_5_impl16RealmCoordinatorEEEE19make_shared_enablerE11make_sharedIJS3_S6_EEES8_DpOT_ + 136 11 .io.realm.realm-studio.xyK8Sz 0x00000001202b9f7c _ZN5realm5_impl16RealmCoordinator12do_get_realmENS_5Realm6ConfigERNSt3__110shared_ptrIS2_EERNS4_11unique_lockINS4_5mutexEEEb + 260 12 .io.realm.realm-studio.xyK8Sz 0x00000001202b9dea _ZN5realm5_impl16RealmCoordinator9get_realmENS_5Realm6ConfigE + 352 13 .io.realm.realm-studio.xyK8Sz 0x00000001202a0c9b _ZN5realm5Realm16get_shared_realmENS0_6ConfigE + 113 14 .io.realm.realm-studio.xyK8Sz 0x0000000120205cab _ZN5realm2js10RealmClassINS_4node5TypesEE19create_shared_realmEPN2v87IsolateENS_5Realm6ConfigEbONSt3__13mapINSA_12basic_stringIcNSA_11char_traitsIcEENSA_9allocatorIcEEEENSB_ISH_NS0_9ProtectedINS5_5LocalINS5_5ValueEEEEENSA_4lessISH_EENSF_INSA_4pairIKSH_SM_EEEEEESO_NSF_INSP_ISQ_ST_EEEEEEONSB_ISH_NSI_INSJ_INS5_8FunctionEEEEESO_NSF_INSP_ISQ_S10_EEEEEE + 127 15 .io.realm.realm-studio.xyK8Sz 0x00000001202040a6 _ZN5realm2js10RealmClassINS_4node5TypesEE11constructorEPN2v87IsolateENS5_5LocalINS5_6ObjectEEERNS0_9ArgumentsIS3_EE + 402 16 .io.realm.realm-studio.xyK8Sz 0x00000001202033fb _ZN5realm4node10ObjectWrapINS_2js10RealmClassINS0_5TypesEEEE9constructERKN3Nan20FunctionCallbackInfoIN2v85ValueEEE + 333 17 .io.realm.realm-studio.xyK8Sz 0x0000000120203df2 _ZN3Nan3impL23FunctionCallbackWrapperERKN2v820FunctionCallbackInfoINS1_5ValueEEE + 166 18 Electron Framework 0x00000001119764a8 _ZN2v88internallsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_18BasicBlockProfilerE + 350504 19 Electron Framework 0x000000011193fada _ZN2v88internallsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_18BasicBlockProfilerE + 126810 20 Electron Framework 0x000000011193f3a7 _ZN2v88internallsERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEERKNS0_18BasicBlockProfilerE + 124967 21 Electron Framework 0x0000000112286dce _ZN2v88internal6Parser31BuildIteratorCloseForCompletionEPNS0_8ZoneListIPNS0_9StatementEEEPNS0_8VariableEPNS0_10ExpressionENS0_12IteratorTypeE + 1450046.