adbd's children should have SIGPIPE set to SIG_DFL.
POSIX lets you choose whether or not SIGPIPE disposition is inherited, and Linux chose "yes". Work around that. Bug: http://b/35209888 Test: "ps -A | head" without the toybox workaround Change-Id: I6b5afa3d87eb2af04b24c6c37fa338ab60ad2336
This commit is contained in:
parent
892b158af8
commit
9eb551868b
1 changed files with 4 additions and 0 deletions
|
|
@ -320,6 +320,10 @@ bool Subprocess::ForkAndExec(std::string* error) {
|
|||
parent_error_sfd.reset(-1);
|
||||
close_on_exec(child_error_sfd);
|
||||
|
||||
// adbd sets SIGPIPE to SIG_IGN to get EPIPE instead, and Linux propagates that to child
|
||||
// processes, so we need to manually reset back to SIG_DFL here (http://b/35209888).
|
||||
signal(SIGPIPE, SIG_DFL);
|
||||
|
||||
if (command_.empty()) {
|
||||
execle(_PATH_BSHELL, _PATH_BSHELL, "-", nullptr, cenv.data());
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue