Binder: Add log output in IPCThreadState::self()
In the failure case, and on shutdown, add log output. It's highly
likely the client will crash when a null value is returned. Displaying
a possible root cause helps diagnosing issues.
Bug: 26865304
Change-Id: Ie5255ac50d6dcdf9f918dcef785788ea795a4791
diff --git a/IPCThreadState.cpp b/IPCThreadState.cpp
index a237684..1f6bda2 100644
--- a/IPCThreadState.cpp
+++ b/IPCThreadState.cpp
@@ -287,12 +287,18 @@
return new IPCThreadState;
}
- if (gShutdown) return NULL;
+ if (gShutdown) {
+ ALOGW("Calling IPCThreadState::self() during shutdown is dangerous, expect a crash.\n");
+ return NULL;
+ }
pthread_mutex_lock(&gTLSMutex);
if (!gHaveTLS) {
- if (pthread_key_create(&gTLS, threadDestructor) != 0) {
+ int key_create_value = pthread_key_create(&gTLS, threadDestructor);
+ if (key_create_value != 0) {
pthread_mutex_unlock(&gTLSMutex);
+ ALOGW("IPCThreadState::self() unable to create TLS key, expect a crash: %s\n",
+ strerror(key_create_value));
return NULL;
}
gHaveTLS = true;