Device: Nothing Phone (A059) — codename Asteroids
Android version: Android 16 (SDK 36)
ROM: AxionOS
App: AxSandbox (com.android.axion.sandbox)
Description:
When trying to restore or play a video stored in the vault, the app
consistently crashes with an OutOfMemoryError. The video's metadata
shows as "0 x 0 • 0 B" and duration "00:00" in the UI, indicating the
decrypted data is never successfully loaded.
This happens on every attempt (restore, play, viewing file info),
suggesting the video is too large for FileVaultManager's current
decryption approach, which appears to buffer the entire file in
memory via ByteArrayOutputStream rather than streaming it to disk.
A restore attempt does create a 0-byte placeholder file at
Download/Vault_Restored/ before crashing, confirming the
process dies mid-write.
Crash log:
07-12 10:54:17.099 25755 25781 E AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-2
07-12 10:54:17.099 25755 25781 E AndroidRuntime: Process: com.android.axion.sandbox, PID: 25755
07-12 10:54:17.099 25755 25781 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 134201360 byte allocation with 93452416 free bytes and 89MB until OOM, target footprint 268435456, growth limit 268435456
at java.util.Arrays.copyOf(Arrays.java:3785)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:120)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:95)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:156)
at java.io.OutputStream.write(OutputStream.java:127)
at android.security.keystore2.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.update(AndroidKeyStoreAuthenticatedAESCipherSpi.java:385)
at android.security.keystore2.AndroidKeyStoreCipherSpiBase.engineUpdate(AndroidKeyStoreCipherSpiBase.java:434)
at javax.crypto.Cipher.update(Cipher.java:1741)
at com.android.axion.sandbox.io.FileVaultManager.decryptToOutput(FileVaultManager.kt:265)
at com.android.axion.sandbox.io.FileVaultManager.prepareMediaStoreUriLocked(FileVaultManager.kt:378)
at com.android.axion.sandbox.io.FileVaultManager.prepareMediaStoreUri(FileVaultManager.kt:337)
at com.android.axion.sandbox.ui.VaultTabKt$VaultTab$refreshFiles$1.invokeSuspend(VaultTab.kt:91)
This is currently trapping an important personal video file with no
way to recover it. Please consider fixing decryptToOutput to stream
data directly to disk instead of buffering the entire file in memory
(e.g. process in chunks rather than one full ByteArrayOutputStream).
Device: Nothing Phone (A059) — codename Asteroids
Android version: Android 16 (SDK 36)
ROM: AxionOS
App: AxSandbox (com.android.axion.sandbox)
Description:
When trying to restore or play a video stored in the vault, the app
consistently crashes with an OutOfMemoryError. The video's metadata
shows as "0 x 0 • 0 B" and duration "00:00" in the UI, indicating the
decrypted data is never successfully loaded.
This happens on every attempt (restore, play, viewing file info),
suggesting the video is too large for FileVaultManager's current
decryption approach, which appears to buffer the entire file in
memory via ByteArrayOutputStream rather than streaming it to disk.
A restore attempt does create a 0-byte placeholder file at
Download/Vault_Restored/ before crashing, confirming the
process dies mid-write.
Crash log:
07-12 10:54:17.099 25755 25781 E AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-2
07-12 10:54:17.099 25755 25781 E AndroidRuntime: Process: com.android.axion.sandbox, PID: 25755
07-12 10:54:17.099 25755 25781 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 134201360 byte allocation with 93452416 free bytes and 89MB until OOM, target footprint 268435456, growth limit 268435456
at java.util.Arrays.copyOf(Arrays.java:3785)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:120)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:95)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:156)
at java.io.OutputStream.write(OutputStream.java:127)
at android.security.keystore2.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.update(AndroidKeyStoreAuthenticatedAESCipherSpi.java:385)
at android.security.keystore2.AndroidKeyStoreCipherSpiBase.engineUpdate(AndroidKeyStoreCipherSpiBase.java:434)
at javax.crypto.Cipher.update(Cipher.java:1741)
at com.android.axion.sandbox.io.FileVaultManager.decryptToOutput(FileVaultManager.kt:265)
at com.android.axion.sandbox.io.FileVaultManager.prepareMediaStoreUriLocked(FileVaultManager.kt:378)
at com.android.axion.sandbox.io.FileVaultManager.prepareMediaStoreUri(FileVaultManager.kt:337)
at com.android.axion.sandbox.ui.VaultTabKt$VaultTab$refreshFiles$1.invokeSuspend(VaultTab.kt:91)
This is currently trapping an important personal video file with no
way to recover it. Please consider fixing decryptToOutput to stream
data directly to disk instead of buffering the entire file in memory
(e.g. process in chunks rather than one full ByteArrayOutputStream).