Tobi823 / ffupdater

FFUpdater: Updater for privacy friendly browser
https://f-droid.org/en/packages/de.marmaro.krt.ffupdater
GNU General Public License v3.0
647 stars 32 forks source link

java.lang.IllegalArgumentException: Invalid path #581

Closed brian6932 closed 4 months ago

brian6932 commented 5 months ago

Important first questions

Description & Reproduction Crashes, usually on launch, or when clicking update on things. Seems like it was caused by an Android 14 update I did recently. Clearing cache doesn't help. /sdcard/Android/data/de.marmaro.krt.ffupdater/files/Download exists, /data/data/de.marmaro.krt.ffupdater/files exists, but no Download. Reinstalling doesn't help.

Expected behavior Not crash.

Error message from FFUpdater Stacktrace:

java.lang.IllegalArgumentException: Invalid path: /storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/files/Download
    at [android.os.StatFs.doStat(StatFs.java:53)](http://android.os.StatFs.doStat(StatFs.java:53))
    at [android.os.StatFs.<init>(StatFs.java:43)](http://android.os.StatFs.<init>(StatFs.java:43))
    at de.marmaro.krt.ffupdater.storage.StorageUtil.getFreeStorageInMebibytes(StorageUtil.kt:26)
    at de.marmaro.krt.ffupdater.storage.StorageUtil.isEnoughStorageAvailable(StorageUtil.kt:19)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity.checkIfEnoughStorageAvailable(DownloadActivity.kt:274)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity.startInstallationProcess(DownloadActivity.kt:226)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity.access$startInstallationProcess(DownloadActivity.kt:77)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity$onCreate$3.invokeSuspend(DownloadActivity.kt:147)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at [android.os.Handler.handleCallback(Handler.java:958)](http://android.os.Handler.handleCallback(Handler.java:958))
    at [android.os.Handler.dispatchMessage(Handler.java:99)](http://android.os.Handler.dispatchMessage(Handler.java:99))
    at [android.os.Looper.loopOnce(Looper.java:205)](http://android.os.Looper.loopOnce(Looper.java:205))
    at [android.os.Looper.loop(Looper.java:294)](http://android.os.Looper.loop(Looper.java:294))
    at [android.app.ActivityThread.main(ActivityThread.java:8248)](http://android.app.ActivityThread.main(ActivityThread.java:8248))
    at java.lang.reflect.Method.invoke(Native Method)
    at [com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)](http://com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552))
    at [com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)](http://com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971))
    Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@65f973d, Dispatchers.Main]
Caused by: android.system.ErrnoException: statvfs failed: ENOENT (No such file or directory)
    at libcore.io.Linux.statvfs(Native Method)
    at [libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852)](http://libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852))
    at [libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:428)](http://libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:428))
    at [libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852)](http://libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852))
    at [android.system.Os.statvfs(Os.java:909)](http://android.system.Os.statvfs(Os.java:909))
    at [android.os.StatFs.doStat(StatFs.java:51)](http://android.os.StatFs.doStat(StatFs.java:51))
    ... 17 more

Logs:

java.lang.IllegalArgumentException: Invalid path: /storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/files/Download
    at [android.os.StatFs.doStat(StatFs.java:53)](http://android.os.StatFs.doStat(StatFs.java:53))
    at [android.os.StatFs.<init>(StatFs.java:43)](http://android.os.StatFs.<init>(StatFs.java:43))
    at de.marmaro.krt.ffupdater.storage.StorageUtil.getFreeStorageInMebibytes(StorageUtil.kt:26)
    at de.marmaro.krt.ffupdater.storage.StorageUtil.isEnoughStorageAvailable(StorageUtil.kt:19)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity.checkIfEnoughStorageAvailable(DownloadActivity.kt:274)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity.startInstallationProcess(DownloadActivity.kt:226)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity.access$startInstallationProcess(DownloadActivity.kt:77)
    at de.marmaro.krt.ffupdater.activity.download.DownloadActivity$onCreate$3.invokeSuspend(DownloadActivity.kt:147)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at [android.os.Handler.handleCallback(Handler.java:958)](http://android.os.Handler.handleCallback(Handler.java:958))
    at [android.os.Handler.dispatchMessage(Handler.java:99)](http://android.os.Handler.dispatchMessage(Handler.java:99))
    at [android.os.Looper.loopOnce(Looper.java:205)](http://android.os.Looper.loopOnce(Looper.java:205))
    at [android.os.Looper.loop(Looper.java:294)](http://android.os.Looper.loop(Looper.java:294))
    at [android.app.ActivityThread.main(ActivityThread.java:8248)](http://android.app.ActivityThread.main(ActivityThread.java:8248))
    at java.lang.reflect.Method.invoke(Native Method)
    at [com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)](http://com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552))
    at [com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)](http://com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971))
    Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@65f973d, Dispatchers.Main]
Caused by: android.system.ErrnoException: statvfs failed: ENOENT (No such file or directory)
    at libcore.io.Linux.statvfs(Native Method)
    at [libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852)](http://libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852))
    at [libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:428)](http://libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:428))
    at [libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852)](http://libcore.io.ForwardingOs.statvfs(ForwardingOs.java:852))
    at [android.system.Os.statvfs(Os.java:909)](http://android.system.Os.statvfs(Os.java:909))
    at [android.os.StatFs.doStat(StatFs.java:51)](http://android.os.StatFs.doStat(StatFs.java:51))
    ... 17 more
Device information: Key Value
FFUpdater version 79.1.1 (169) release Github
Device ASUS_AI2202 (WW_AI2202, AI2202, taro)
Manufacturer asus (asus)
Supported ABIs arm64-v8a, armeabi-v7a, armeabi
Android version 14 (SDK: 34)
OS box2, jenkins, release-keys, 1710261807000
Tobi823 commented 4 months ago

This is strange. It seems that the directory "/storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/files/Download" does not exist. But according to the documentation of context.getExternalFilesDir this folder should be created.

Tobi823 commented 4 months ago

I can change the code that this error will be ignored. I hope that folder will be created later because this folder should exists or the download will fail.

Tobi823 commented 4 months ago

Did you revoke read or write permission from FFUpdater?

brian6932 commented 4 months ago

Hey sorry, I forgot to close this, it was due to a kernel compatibility issue with my ROM.

Tobi823 commented 4 months ago

Thanks for the quick info.

Tobi823 commented 4 months ago

and I was already wondering why the API was behaving unexpectedly. 😆