Merge "ugly, temporary, workaroung for a problem where a binder thread spins forever" into jb-mr1-dev

This commit is contained in:
Dave Burke 2012-10-05 23:25:57 -07:00 committed by Android (Google) Code Review
commit dba919c5f3

View File

@ -482,6 +482,18 @@ void IPCThreadState::joinThreadPool(bool isMain)
if(result == TIMED_OUT && !isMain) { if(result == TIMED_OUT && !isMain) {
break; break;
} }
// HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK
// FIXME: we sometimes get unexplained EINVAL which causes this
// thread to spin forever. TEMPORARILY allow it to exit.
// We should probably assert on eng builds
if(result == -EINVAL && !isMain) {
ALOGE("**** THREAD %p (PID %d) ERROR (%d) LEAVING THE THREAD POOL\n",
(void*)pthread_self(), getpid(), result);
break;
}
// HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK
} while (result != -ECONNREFUSED && result != -EBADF); } while (result != -ECONNREFUSED && result != -EBADF);
LOG_THREADPOOL("**** THREAD %p (PID %d) IS LEAVING THE THREAD POOL err=%p\n", LOG_THREADPOOL("**** THREAD %p (PID %d) IS LEAVING THE THREAD POOL err=%p\n",