Neamar / KISS

Lightning fast, open-source, < 250kb Android launcher
https://kisslauncher.com/
GNU General Public License v3.0
2.93k stars 579 forks source link

Fatal exception in AsyncTask when opening KISS settings #2240

Closed syphyr closed 8 months ago

syphyr commented 8 months ago

Describe the bug A fatal exception occurs when opening KISS' Settings. This issue was introduced by 6c7978ad420c68f366e143c4837263cd6909d874

To Reproduce Steps to reproduce the behavior:

  1. Open KISS Settings
  2. Fatal Exception in Async occurs

Expected behavior Not to crash when opening Settings

Screenshots Please add screenshots to help explain your problem. You can upload images directly to Github, please do not use an external website to host your images.

Additional information

Additional context This issue was introduced by the following commit: 6c7978ad420c68f366e143c4837263cd6909d874

01-18 01:55:11.170 21604 21977 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #7
01-18 01:55:11.170 21604 21977 E AndroidRuntime: Process: fr.neamar.kiss, PID: 21604
01-18 01:55:11.170 21604 21977 E AndroidRuntime: java.util.concurrent.RejectedExecutionException: Task android.os.AsyncTask$3@236456b rejected from java.util.concurrent.ThreadPoolExecutor@596ed61[Running, pool size = 17, active threads = 17, queued tasks = 128, completed tasks = 31]
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2049)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:814)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1360)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:623)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at fr.neamar.kiss.utils.Utilities.runAsync(Utilities.java:11)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at fr.neamar.kiss.preference.ExcludePreferenceScreen.getInstance(ExcludePreferenceScreen.java:128)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at fr.neamar.kiss.SettingsActivity$$ExternalSyntheticLambda4.run(R8$$SyntheticClass:78)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
01-18 01:55:11.170 21604 21977 E AndroidRuntime:    at java.lang.Thread.run(Thread.java:761)
TBog commented 8 months ago

There are two reasons why execute would throw a RejectedExecutionException

marunjar commented 8 months ago

On what OS and android version is this happening? Used THREAD_POOL_EXECUTOR should fall back to serial executor if queue is full. Serial executor has no queue limitations.

In this use casei think we may use serial executor instead, only sideeffect would be that icons of these 'exlcude...' entries would be shown a little slower.

syphyr commented 8 months ago

This is happening in cm-14.1 (nougat)