Commit 56a282c
Fix Headless Crash
Summary:
Sometimes a headless task tries to finish, but it doesn’t exist, which causes an exception.
No one knows how to reliably reproduce it, as it could be a race condition. However, if you attempt to remove a task that has already been removed, it shouldn’t cause an issue since you're trying to remove something that’s already gone (which is exactly what you want).
Fixes:
- #46496
- #33883
- #27597
- transistorsoft/react-native-background-fetch#202
- transistorsoft/react-native-background-fetch#369
- transistorsoft/react-native-background-geolocation#2096
- jpush/jpush-react-native#78
## Stacktrace:
```
Fatal Exception: java.lang.AssertionError: Tried to finish non-existent task with id 28.
at com.facebook.infer.annotation.Assertions.assertCondition(Assertions.java:88)
at com.facebook.react.jstasks.HeadlessJsTaskContext.finishTask(HeadlessJsTaskContext.java:179)
at com.facebook.react.jstasks.HeadlessJsTaskContext$3.run(HeadlessJsTaskContext.java:217)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:368)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:233)
at java.lang.Thread.run(Thread.java:1012)
```
## Screenshot
https://github.com/user-attachments/assets/101f0f53-95c9-40ec-a59d-22d6d474b457
## Changelog:
[ANDROID] [FIXED] - Fix Headless Crash `Tried to finish non-existent task with id`
Pull Request resolved: #46497
Test Plan:
I created an example where I attempt to remove a task that doesn’t exist.
Example: https://github.com/RodolfoGS/react-native-fix-non-existent-task
### How to reproduce using the example above:
1. `git clone [email protected]:RodolfoGS/react-native-fix-non-existent-task.git`
2. `cd react-native-fix-non-existent-task`
3. `npm install`
4. `npm run android`
5. Notice the crash
### Steps to create the example from scratch and reproduce the crash:
1. `npx react-native-community/cli@latest init AwesomeProject`
2. `cd AwesomeProject`
3. Add call to finishTask to reproduce the crash (RodolfoGS/react-native-fix-non-existent-task@6fe3c13)
4. `npm run android`
5. Notice the crash
Reviewed By: javache
Differential Revision: D62738059
Pulled By: rshest
fbshipit-source-id: 3232dc76ba8a069279c2b741d62372537a3f9140Tried to finish non-existent task with id (#46497)1 parent 366f1d0 commit 56a282c
File tree
1 file changed
+13
-14
lines changed- packages/react-native/ReactAndroid/src/main/java/com/facebook/react/jstasks
1 file changed
+13
-14
lines changedLines changed: 13 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
169 | 169 | | |
170 | 170 | | |
171 | 171 | | |
172 | | - | |
| 172 | + | |
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
| 177 | + | |
| 178 | + | |
182 | 179 | | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
189 | 188 | | |
190 | | - | |
191 | | - | |
| 189 | + | |
| 190 | + | |
192 | 191 | | |
193 | 192 | | |
194 | 193 | | |
| |||
0 commit comments