We've had several customer notice an NPE in C4 object finalizers. While I suspect that these are harmless, I cannot prove it.
The problem seems to be caused by a bug in the way Android handles finalization: deleting an object's fields, even though they are being used for synchronization, before finalizing the object on which they depend.
I suggest backporting the fix that has been in Helium for a while: using the self object as a lock. This has the significant downside that it makes the lock visible. Since the lock is visible anyway, the risk seems minimal. It has also been running in Lithium for half a year.
We've had several customer notice an NPE in C4 object finalizers. While I suspect that these are harmless, I cannot prove it.
The problem seems to be caused by a bug in the way Android handles finalization: deleting an object's fields, even though they are being used for synchronization, before finalizing the object on which they depend.
I suggest backporting the fix that has been in Helium for a while: using the self object as a lock. This has the significant downside that it makes the lock visible. Since the lock is visible anyway, the risk seems minimal. It has also been running in Lithium for half a year.