Verified
Status Update
Comments
ad...@google.com <ad...@google.com> #2
This is a hard one. We can't easily read native crashes from that Motorola device since their system image is not public. I assume you can't reproduce this either, but if possible can you try using WorkManager 2.0.0 or 1.0.1-rc01? This would help track down the possible changes that might have introduced this issue. Thanks!
cc...@google.com <cc...@google.com> #3
We actually did reproduce it, the current store version of Pocket Casts has WorkManager 2.0.0 and this bug if you want to try and test something. I will try 1.0.1-rc01 and report back.
rh...@abc.net.au <rh...@abc.net.au> #4
Is there a difference between 1.0.1 and 2.0.1? We tried 2.0.1 and it was crashing, if there is a difference I can try 1.0.1 but I thought they were the same?
cc...@google.com <cc...@google.com> #5
Can you also describe how you trigger the bug and which devices manifest the problem? Is it just running the app? Is it doing something specific?
Description
Version used: 27.1.1
Theme used: N/A
Devices/Android versions reproduced on: Any
Regarding the check at the top of `submitList` here:
```
if (newList == mList) {
// nothing to do
return;
}
```
There's a race condition -- suppose we have lists A and B, and the differ's `mList` before starting is list A.
1. Submit list B - async diff generation N kicks off
2. Submit list A - `newList` matches `mList` since diff gen N hasn't completed yet, but `mMaxScheduledGeneration` is not incremented and this returns early
3. Async diff gen N is accepted, despite list A being submitted after list B.
Seems this could be fixed by incrementing `mMaxScheduledGeneration`. As a workaround, I am wrapping my lists in a new identity before submitting them to the differ.