debuggerd: remove useless timeout from wait_for_signal.

The watchdog already handles things for us, so the timeout logic in
wait_for_signal is pointless.

Change-Id: Id81ad5f294068216b73e04c4e2ceca072ae1bbc0
This commit is contained in:
Josh Gao 2016-08-10 17:57:01 -07:00
parent 07f14c9cdd
commit f5a960a187
3 changed files with 6 additions and 16 deletions

View file

@ -459,9 +459,10 @@ static bool perform_dump(const debugger_request_t& request, int fd, int tombston
return false;
}
int total_sleep_time_usec = 0;
while (true) {
int signal = wait_for_signal(request.tid, &total_sleep_time_usec);
// wait_for_signal waits for forever, but the watchdog process will kill us
// if it takes too long.
int signal = wait_for_signal(request.tid);
switch (signal) {
case -1:
ALOGE("debuggerd: timed out waiting for signal");

View file

@ -31,9 +31,6 @@
#include <backtrace/Backtrace.h>
#include <log/log.h>
constexpr int SLEEP_TIME_USEC = 50000; // 0.05 seconds
constexpr int MAX_TOTAL_SLEEP_USEC = 10000000; // 10 seconds
// Whitelist output desired in the logcat output.
bool is_allowed_in_logcat(enum logtype ltype) {
if ((ltype == HEADER)
@ -74,10 +71,10 @@ void _LOG(log_t* log, enum logtype ltype, const char* fmt, ...) {
}
}
int wait_for_signal(pid_t tid, int* total_sleep_time_usec) {
int wait_for_signal(pid_t tid) {
while (true) {
int status;
pid_t n = TEMP_FAILURE_RETRY(waitpid(tid, &status, __WALL | WNOHANG));
pid_t n = TEMP_FAILURE_RETRY(waitpid(tid, &status, __WALL));
if (n == -1) {
ALOGE("waitpid failed: tid %d, %s", tid, strerror(errno));
return -1;
@ -91,14 +88,6 @@ int wait_for_signal(pid_t tid, int* total_sleep_time_usec) {
return -1;
}
}
if (*total_sleep_time_usec > MAX_TOTAL_SLEEP_USEC) {
ALOGE("timed out waiting for stop signal: tid=%d", tid);
return -1;
}
usleep(SLEEP_TIME_USEC);
*total_sleep_time_usec += SLEEP_TIME_USEC;
}
}

View file

@ -77,7 +77,7 @@ enum logtype {
void _LOG(log_t* log, logtype ltype, const char *fmt, ...)
__attribute__ ((format(printf, 3, 4)));
int wait_for_signal(pid_t tid, int* total_sleep_time_usec);
int wait_for_signal(pid_t tid);
void dump_memory(log_t* log, Backtrace* backtrace, uintptr_t addr, const char* fmt, ...);