+
+#ifdef __BIONIC__
+ // In Android O and later, if an invalid pthread_t is passed to pthread_join, it calls fatal().
+ // https://github.com/aosp-mirror/platform_bionic/blob/ed16b344e75f422fb36fbfd91fb30de339475880/libc/bionic/pthread_internal.cpp#L116-L128
+ //
+ // In Bionic libc, pthread_t is an integer.
+
+ if (USB_communication_thread != 0) {
+ pthread_join(USB_communication_thread, NULL);
+ }
+#else
+ // pthread_t is a struct on other libc, treat as an opaque memory reference