usbd: Do not join the thread pool
Work around for the following crash:
02-08 05:34:20.968 root 990 990 F DEBUG : #00 pc 000000000001447c /system/lib64/libhwbinder.so (android::hardware::IPCThreadState::joinThreadPool(bool)+28)
02-08 05:34:20.968 root 990 990 F DEBUG : #01 pc 000000000001c174 /system/lib64/libhwbinder.so (android::hardware::PoolThread::threadLoop()+24)
02-08 05:34:20.968 root 990 990 F DEBUG : #02 pc 000000000000f934 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+280)
02-08 05:34:20.968 root 990 990 F DEBUG : #03 pc 00000000000821e0 /system/lib64/libc.so (__pthread_start(void*)+36)
02-08 05:34:20.968 root 990 990 F DEBUG : #04 pc 0000000000023178 /system/lib64/libc.so (__start_thread+68)
Bug: 117470462
Change-Id: I1e8f28a7d0f3041d9be8138a3dc9ed9c74419f91
(cherry picked from commit f123d45ce15601f446eaac487431cd59e2cdccf5)
diff --git a/usbd/usbd.cpp b/usbd/usbd.cpp
index 41cd8dd..191fb92 100644
--- a/usbd/usbd.cpp
+++ b/usbd/usbd.cpp
@@ -22,15 +22,20 @@
#include <android-base/properties.h>
#include <android/hardware/usb/gadget/1.0/IUsbGadget.h>
+#include <hidl/HidlTransportSupport.h>
+
#define PERSISTENT_USB_CONFIG "persist.sys.usb.config"
using android::base::GetProperty;
using android::base::SetProperty;
+using android::hardware::configureRpcThreadpool;
using android::hardware::usb::gadget::V1_0::GadgetFunction;
using android::hardware::usb::gadget::V1_0::IUsbGadget;
using android::hardware::Return;
int main(int /*argc*/, char** /*argv*/) {
+ configureRpcThreadpool(1, true /*callerWillJoin*/);
+
android::sp<IUsbGadget> gadget = IUsbGadget::getService();
Return<void> ret;