From 5c77ad55d0cdee84cd45fd5d0d066f3c61d76ce6 Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Tue, 23 Feb 2016 08:55:43 -0800 Subject: logd: sock_alloc_send_pskb starves pruning Allow socket send syscall to terminate after 32 seconds if reader stalled because of memory pressure allocating new network buffers Add a gTest to catch regressions, add security buffer to log_dump Bug: 27242723 Change-Id: Idaa6699d9d284e7f5f723ae0e76b3d6aa3371489 --- logd/LogReader.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'logd/LogReader.cpp') diff --git a/logd/LogReader.cpp b/logd/LogReader.cpp index 16362379c..2c07984ce 100644 --- a/logd/LogReader.cpp +++ b/logd/LogReader.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -179,6 +180,11 @@ bool LogReader::onDataAvailable(SocketClient *cli) { } FlushCommand command(*this, nonBlock, tail, logMask, pid, sequence, timeout); + + // Set acceptable upper limit to wait for slow reader processing b/27242723 + struct timeval t = { LOGD_SNDTIMEO, 0 }; + setsockopt(cli->getSocket(), SOL_SOCKET, SO_SNDTIMEO, (const char *)&t, sizeof(t)); + command.runSocketCommand(cli); return true; } -- cgit v1.2.3