From 3b53fc5a84c4db40830d1810dee309accce66f09 Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Thu, 11 May 2017 09:40:45 -0700 Subject: [PATCH] Only spawn one binder thread for screencap. To work around race conditions in libbinder when spawning new threads while being shut down. Bug: 36066697 Test: screencap still works Change-Id: I774d3dc2491bb578a12dede90cc7fcded976f13f --- cmds/screencap/screencap.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp index 000420f29c3b4..5fedc9e74087f 100644 --- a/cmds/screencap/screencap.cpp +++ b/cmds/screencap/screencap.cpp @@ -84,6 +84,11 @@ static status_t notifyMediaScanner(const char* fileName) { int main(int argc, char** argv) { + // setThreadPoolMaxThreadCount(0) actually tells the kernel it's + // not allowed to spawn any additional threads, but we still spawn + // a binder thread from userspace when we call startThreadPool(). + // See b/36066697 for rationale + ProcessState::self()->setThreadPoolMaxThreadCount(0); ProcessState::self()->startThreadPool(); const char* pname = argv[0];