From ef07386e2fca73680214ececc3c9c0ecbb0f6d88 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Tue, 11 Jun 2013 11:30:21 -0700 Subject: [PATCH] Prevent IPCThreadState::joinThreadPool from spinning on unexpected error Adds logging to help determine what is happening to the /dev/binder fd and dump the process state when it happens. bug: 8912673 Change-Id: I2aa0c66fc499e91e0bf9ee4ae20404bec35adc82 --- libs/binder/IPCThreadState.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp index 6e83faab7..2ffa92779 100644 --- a/libs/binder/IPCThreadState.cpp +++ b/libs/binder/IPCThreadState.cpp @@ -466,6 +466,10 @@ void IPCThreadState::joinThreadPool(bool isMain) result = executeCommand(cmd); + } else if (result != TIMED_OUT && result != -ECONNREFUSED && result != -EBADF) { + ALOGE("talkWithDriver(fd=%d) returned unexpected error %d, aborting", + mProcess->mDriverFD, result); + abort(); } // After executing the command, ensure that the thread is returned to the