Looking for an Android developer who can solve a bug in Nextcloud Deck

Hey there :wave:

We are looking for an Android developer who is able to solve an issue in the Nextcloud Deck Android client.
We offer 50,- € for a complete solution (paying via PayPal or IBAN transaction) which includes:

  1. A Pull Request with a working fix, the code must be licensed under GPLv3+
  2. A reliable method to reproduce the issue and verify the fix
  3. Explaining the root cause of the issue so we can avoid it in the future

This is an open source community project, so of course any contribution, help or hints without a fee are also appreciated :wink: . Though we will happily invest some of the Play Store earnings to stabilize this behavior for all users.

The impact of the issue is a crash which happens (not reliable) from time to time.
It occurs on multiple places in the app and we tried to collect all information that we have about it in issue #478.

It seems that fragments and / or the corresponding activity are not destroyed properly after some time (for example when switching to another app). When returning to the app, another instance of this fragment and / or the activity will be created. Both fragments and / or activities are alive now, but only the new one is correctly initialized with a living ViewModel instance, while the old one crashes (mostly with a NullPointerException then, since the ViewModel is not filled completely).

Debugging this allowed us to detect multiple different instances of the ViewModel which are alive parallel.

Some dirty checking via #isAdded or so is no solution, since it should no longer be there in the first place.
Our current workaround is to check whether any object of the ViewModel is null where it isn’t supposed to be, which indicates one of those “Zombie fragment”. In this case we finish() the activity to avoid a crash.
Searching the code for issues/478 will show all places which we have been able to identify yet which are affected by this issue. More places are likely.

We recently asked for some help to check whether this issue is still present in recent versions and got quickly some responses with stacktraces.

1 Like