Prevent logcat monitors crashing
This commit is contained in:
parent
a87ad35a50
commit
6072744f7e
@ -489,6 +489,7 @@ void post_fs_data(int client) {
|
||||
debug_log_fd = xopen(DEBUG_LOG, O_WRONLY | O_CREAT | O_CLOEXEC | O_TRUNC, 0644);
|
||||
char *const command[] = { "logcat", "-v", "brief", NULL };
|
||||
debug_log_pid = run_command(0, &debug_log_fd, "/system/bin/logcat", command);
|
||||
close(debug_log_fd);
|
||||
#endif
|
||||
|
||||
LOGI("** post-fs-data mode running\n");
|
||||
@ -776,6 +777,5 @@ void late_start(int client) {
|
||||
// Stop recording the boot logcat after every boot task is done
|
||||
kill(debug_log_pid, SIGTERM);
|
||||
waitpid(debug_log_pid, NULL, 0);
|
||||
close(debug_log_fd);
|
||||
#endif
|
||||
}
|
||||
|
@ -31,7 +31,10 @@ static void *logger_thread(void *args) {
|
||||
if (log_pid > 0)
|
||||
waitpid(log_pid, NULL, 0);
|
||||
// For some reason it went here, clear buffer and restart
|
||||
system("logcat -c");
|
||||
char *const restart[] = { "logcat", "-c", NULL };
|
||||
log_pid = run_command(0, NULL, "/system/bin/logcat", restart);
|
||||
if (log_pid > 0)
|
||||
waitpid(log_pid, NULL, 0);
|
||||
}
|
||||
|
||||
// Should never be here, but well...
|
||||
|
@ -180,7 +180,10 @@ void proc_monitor() {
|
||||
|
||||
while (1) {
|
||||
// Clear previous logcat buffer
|
||||
system("logcat -b events -c");
|
||||
char *const restart[] = { "logcat", "-b", "events", "-c", NULL };
|
||||
log_pid = run_command(0, NULL, "/system/bin/logcat", restart);
|
||||
if (log_pid > 0)
|
||||
waitpid(log_pid, NULL, 0);
|
||||
|
||||
// Monitor am_proc_start
|
||||
char *const command[] = { "logcat", "-b", "events", "-v", "raw", "-s", "am_proc_start", NULL };
|
||||
@ -269,6 +272,5 @@ void proc_monitor() {
|
||||
kill(log_pid, SIGTERM);
|
||||
waitpid(log_pid, NULL, 0);
|
||||
close(log_fd);
|
||||
log_pid = 0;
|
||||
}
|
||||
}
|
||||
|
@ -232,8 +232,6 @@ int run_command(int err, int *fd, const char *path, char *const argv[]) {
|
||||
if (xpipe2(pipefd, O_CLOEXEC) == -1)
|
||||
return -1;
|
||||
writeEnd = pipefd[1];
|
||||
// Give the read end of the pipe
|
||||
*fd = pipefd[0];
|
||||
} else {
|
||||
writeEnd = *fd;
|
||||
}
|
||||
@ -241,7 +239,11 @@ int run_command(int err, int *fd, const char *path, char *const argv[]) {
|
||||
|
||||
int pid = fork();
|
||||
if (pid != 0) {
|
||||
close(writeEnd);
|
||||
if (fd && *fd < 0) {
|
||||
// Give the read end and close write end
|
||||
*fd = pipefd[0];
|
||||
close(pipefd[1]);
|
||||
}
|
||||
return pid;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user