This solves two problems that can occur on Android and which make the main process believe the crash helper is still alive when it is not (leading in turn to long timeouts and deadlocks). First of all the endpoints which we pass to the crash helper via Binder IPC are closed as soon as we're done transfering them. Previously they wouldn't be closed until a GC run would finalize the ParcelFileDescriptor objects owning them. Additionally we explicitly close those same endpoints when we encounter errors in the little amount of C++ code in the crash helper itself. Past that point the endpoints become owned file descriptors in Rust code and will be closed automatically when need be. Differential Revision: https://phabricator.services.mozilla.com/D311078