diff --git a/adb/shell_service.cpp b/adb/shell_service.cpp index e8dad58e7..b038fda62 100644 --- a/adb/shell_service.cpp +++ b/adb/shell_service.cpp @@ -477,8 +477,14 @@ void Subprocess::PassDataStreams() { // and only fall back on this for unexpected closures. D("protocol FD died, sending SIGHUP to pid %d", pid_); kill(pid_, SIGHUP); + + // We also need to close the pipes connected to the child process + // so that if it ignores SIGHUP and continues to write data it + // won't fill up the pipe and block. + stdinout_sfd_.clear(); + stderr_sfd_.clear(); } - dead_sfd->reset(-1); + dead_sfd->clear(); } } }