Uploaded image for project: 'Realm Core'
  1. Realm Core
  2. RCORE-2226

Pixel on Android 14 hardlocks when getting instance in `/storage/emulated/0/Android/data/<appname>/files`

    • Type: Icon: Bug Bug
    • Resolution: Unresolved
    • Priority: Icon: Unknown Unknown
    • None
    • Affects Version/s: None
    • Component/s: None

      What happened?

      Hello, I'm a regular contributor in osu! and we haven't updated since 11.5.0. Paper trail here: https://github.com/ppy/osu/pull/27920

      This issue mentioned in the title is happening since https://github.com/realm/realm-dotnet/releases/tag/11.6.1. I have a Pixel 6a on Android 14, but this may affect any Pixel on Android 14. I am emphasizing Pixel because an osu! dev doesn't experience such an issue on a non-pixel on Android 14: https://github.com/ppy/osu/pull/27920#issuecomment-2068705204.

      Also throwing in phones from users experiencing the issue the last time we bumped Realm >=11.6.1 to production: Xperia 1 V and AQUOS R8 pro. Those phones are capable of running Android 14. Ref: https://github.com/ppy/osu/discussions/27738

      Repro steps

      The below is similar to what I think osu! does in it's getConfiguration(): https://github.com/ppy/osu/blob/565107205c60f14488f1642011808d286d712c31/osu.Game/Database/RealmAccess.cs#L745 (namely storage.GetFullPath(filename ?? Filename, true)). If you want to test osu! side, remove that storage.GetFullPath() and it should run. Revert and it'll get stuck.

      Apply this diff and run. It should get stuck at this line:

      realm = Realm.GetInstance(@"/storage/emulated/0/Android/data/com.companyname.quickjournal/files/client.realm");
      
      Unable to find source-code formatter for language: diff. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      diff --git a/examples/QuickJournal/QuickJournal.csproj b/examples/QuickJournal/QuickJournal.csproj
      index a3e4d124..f3c930b8 100644
      --- a/examples/QuickJournal/QuickJournal.csproj
      +++ b/examples/QuickJournal/QuickJournal.csproj
      @@ -44,7 +44,7 @@
       		<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
       		<PackageReference Include="CommunityToolkit.Maui" Version="5.2.0" />
       		<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
      -		<PackageReference Include="Realm" Version="11.3.0" />
      +		<PackageReference Include="Realm" Version="12.3.0" />
       		<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
       		  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       		  <PrivateAssets>all</PrivateAssets>
      diff --git a/examples/QuickJournal/ViewModels/EntriesViewModel.cs b/examples/QuickJournal/ViewModels/EntriesViewModel.cs
      index a57f41e9..52a3a31e 100644
      --- a/examples/QuickJournal/ViewModels/EntriesViewModel.cs
      +++ b/examples/QuickJournal/ViewModels/EntriesViewModel.cs
      @@ -17,7 +17,8 @@ public partial class EntriesViewModel : ObservableObject
       
               public EntriesViewModel()
               {
      -            realm = Realm.GetInstance();
      +            Directory.CreateDirectory(@"/storage/emulated/0/Android/data/com.companyname.quickjournal/files");
      +            realm = Realm.GetInstance(@"/storage/emulated/0/Android/data/com.companyname.quickjournal/files/client.realm");
                   Entries = realm.All<JournalEntry>();
       
                   // We are using a WeakReferenceManager here to get notified when JournalEntriesDetailPage is closed.
      @@ -78,4 +79,4 @@ private async void EntryModifiedHandler(object recipient, EntryModifiedMessage m
                   }
               }
           }
      -}
      \ No newline at end of file
      +}
      

      Version

      8.0

      What Atlas Services are you using?

      Local Database only

      What type of application is this?

      Other

      Client OS and version

      Android 14 (Pixels), since https://github.com/realm/realm-dotnet/releases/tag/11.6.1

      Code snippets

      No response

      Stacktrace of the exception/crash you're getting

      No response

      Relevant log output

      No response

            Assignee:
            Unassigned Unassigned
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: