TeamAmaze / TeamAmaze/AmazeFileManager
`IllegalStateException`: `CompressedExplorerFragment` not attached to a context
Open
Nobody has claimed this yet.
From-Email
- Dominant language
- Kotlin
- Stars
- 6.4k
- Forks
- 1.7k
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 1
Description
Issue explanation (write below this line)
Exception
- App Name: Amaze File Manager
- Package: com.amaze.filemanager
- Version: 3.8.4
- User Action: UI Error
- Request: Application crash
- OS: Linux
motorola/hanoip_retail/hanoip:12/S2RI32.32-20-7/7dcd6-70dcd:user/release-keys
12 - 31 - Device: hanoip
- Model: moto g(40) fusion
- Product: hanoip_retail
Crash log
io.reactivex.exceptions.CompositeException: 2 exceptions occurred.
at
io.reactivex.internal.subscribers.LambdaSubscriber.onError(LambdaSubscriber.java:82)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:209)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:399)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
at
io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
at android.os.Handler.handleCallback(Handler.java:978)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loopOnce(Looper.java:238)
at android.os.Looper.loop(Looper.java:357)
at android.app.ActivityThread.main(ActivityThread.java:8090)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
ComposedException 1 :
org.apache.commons.compress.archivers.ArchiveException: Zip file is corrupt
at
com.amaze.filemanager.asynchronous.asynctasks.compress.ZipHelperCallable.addElements(ZipHelperCallable.kt:129)
at
com.amaze.filemanager.asynchronous.asynctasks.compress.CompressedHelperCallable.call(CompressedHelperCallable.kt:42)
at
com.amaze.filemanager.asynchronous.asynctasks.compress.CompressedHelperCallable.call(CompressedHelperCallable.kt:29)
at
io.reactivex.internal.operators.flowable.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:39)
at io.reactivex.Flowable.subscribe(Flowable.java:14826)
at io.reactivex.Flowable.subscribe(Flowable.java:14773)
at
io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
at
io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at
io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: net.lingala.zip4j.exception.ZipException: Zip headers not found.
Probably not a zip file
at
net.lingala.zip4j.headers.HeaderReader.determineOffsetOfEndOfCentralDirectory(HeaderReader.java:728)
at
net.lingala.zip4j.headers.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:113)
at
net.lingala.zip4j.headers.HeaderReader.readAllHeaders(HeaderReader.java:75)
at net.lingala.zip4j.ZipFile.readZipInfo(ZipFile.java:971)
at net.lingala.zip4j.ZipFile.getFileHeaders(ZipFile.java:559)
at
com.amaze.filemanager.asynchronous.asynctasks.compress.ZipHelperCallable.filterValidEntryList(ZipHelperCallable.kt:134)
at
com.amaze.filemanager.asynchronous.asynctasks.compress.ZipHelperCallable.addElements(ZipHelperCallable.kt:54)
at
com.amaze.filemanager.asynchronous.asynctasks.compress.CompressedHelperCallable.call(CompressedHelperCallable.kt:42)
at
com.amaze.filemanager.asynchronous.asynctasks.compress.CompressedHelperCallable.call(CompressedHelperCallable.kt:29)
at
io.reactivex.internal.operators.flowable.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:39)
at io.reactivex.Flowable.subscribe(Flowable.java:14826)
at io.reactivex.Flowable.subscribe(Flowable.java:14773)
at
io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
at
io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at
io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalStateException: Fragment
CompressedExplorerFragment{a892daf} (bede6141-6c65-48b1-a115-5cb872f5da5c)
not attached to a context.
at androidx.fragment.app.Fragment.requireContext(Fragment.java:919)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment.archiveCorruptOrUnsupportedToast(CompressedExplorerFragment.kt:622)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment.changePath$lambda-22$lambda-21(CompressedExplorerFragment.kt:583)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment.$r8$lambda$fmscQU9YC5gGBMgAcmdKIXMPl08(Unknown
Source:0)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment$$ExternalSyntheticLambda6.accept(Unknown
Source:6)
at
io.reactivex.internal.subscribers.LambdaSubscriber.onError(LambdaSubscriber.java:79)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:209)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:399)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
at
io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
at android.os.Handler.handleCallback(Handler.java:978)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loopOnce(Looper.java:238)
at android.os.Looper.loop(Looper.java:357)
at android.app.ActivityThread.main(ActivityThread.java:8090)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
ComposedException 2 :
java.lang.IllegalStateException: Fragment
CompressedExplorerFragment{a892daf} (bede6141-6c65-48b1-a115-5cb872f5da5c)
not attached to a context.
at androidx.fragment.app.Fragment.requireContext(Fragment.java:919)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment.archiveCorruptOrUnsupportedToast(CompressedExplorerFragment.kt:622)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment.changePath$lambda-22$lambda-21(CompressedExplorerFragment.kt:583)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment.$r8$lambda$fmscQU9YC5gGBMgAcmdKIXMPl08(Unknown
Source:0)
at
com.amaze.filemanager.ui.fragments.CompressedExplorerFragment$$ExternalSyntheticLambda6.accept(Unknown
Source:6)
at
io.reactivex.internal.subscribers.LambdaSubscriber.onError(LambdaSubscriber.java:79)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:209)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:399)
at
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
at
io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
at android.os.Handler.handleCallback(Handler.java:978)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loopOnce(Looper.java:238)
at android.os.Looper.loop(Looper.java:357)
at android.app.ActivityThread.main(ActivityThread.java:8090)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read ui/fragments/CompressedExplorerFragment.kt around changePath at line 583 and archiveCorruptOrUnsupportedToast at line 622, then trace the asynchronous error callback. The fix is done when a corrupt or unsupported archive cannot trigger requireContext after the fragment is detached, without reproducing this crash.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100