Lines Matching refs:pid

71   pid_t pid, tid;
88 request.pid, request.tid);
100 ALOGI("debuggerd resuming process %d", request.pid);
150 snprintf(buf, len, "pid=%d uid=%d gid=%d", req->pid, req->uid, req->gid);
186 static bool pid_contains_tid(pid_t pid, pid_t tid) {
188 if (snprintf(task_path, PATH_MAX, "/proc/%d/task/%d", pid, tid) >= PATH_MAX) {
189 ALOGE("debuggerd: task path overflow (pid = %d, tid = %d)\n", pid, tid);
214 ALOGE("timed out reading tid (from pid=%d uid=%d)\n", cr.pid, cr.uid);
222 ALOGE("read failure? %s (pid=%d uid=%d)\n", strerror(errno), cr.pid, cr.uid);
226 ALOGE("invalid crash request of size %d (from pid=%d uid=%d)\n", status, cr.pid, cr.uid);
232 out_request->pid = cr.pid;
241 if (!pid_contains_tid(out_request->pid, out_request->tid)) {
242 ALOGE("tid %d does not exist in pid %d. ignoring debug request\n", out_request->tid,
243 out_request->pid);
249 status = get_process_info(out_request->tid, &out_request->pid,
302 static void activity_manager_write(int pid, int signal, int amfd, const std::string& amfd_data) {
308 // pid and signal number, followed by the raw text of the dump, culminating
310 uint32_t datum = htonl(pid);
312 ALOGE("AM pid write failed: %s\n", strerror(errno));
424 static bool ptrace_attach_thread(pid_t pid, pid_t tid) {
429 // Make sure that the task we attached to is actually part of the pid we're dumping.
430 if (!pid_contains_tid(pid, tid)) {
441 static void ptrace_siblings(pid_t pid, pid_t main_tid, std::set<pid_t>& tids) {
444 if (snprintf(task_path, PATH_MAX, "/proc/%d/task", pid) >= PATH_MAX) {
445 ALOGE("debuggerd: task path overflow (pid = %d)\n", pid);
453 ALOGE("debuggerd: failed to open /proc/%d/task: %s", pid, strerror(errno));
474 if (!ptrace_attach_thread(pid, tid)) {
502 engrave_tombstone(tombstone_fd, backtrace_map, request.pid, request.tid, siblings, signal,
506 dump_backtrace(fd, backtrace_map, request.pid, request.tid, siblings, nullptr);
529 engrave_tombstone(tombstone_fd, backtrace_map, request.pid, request.tid, siblings, signal,
599 if (!ptrace_attach_thread(request.pid, request.tid)) {
606 // pid of their process, they could trick debuggerd into dumping that process by exiting after
609 pid_t pid;
612 if (get_process_info(request.tid, &pid, &uid, &gid) != 0) {
617 if (pid != request.pid || uid != request.uid || gid != request.gid) {
620 "expected pid=%d,uid=%d,gid=%d, actual pid=%d,uid=%d,gid=%d",
621 request.tid, request.pid, request.uid, request.gid, pid, uid, gid);
640 ptrace_siblings(request.pid, request.tid, siblings);
644 std::unique_ptr<BacktraceMap> backtrace_map(BacktraceMap::Create(request.pid));
675 if (!send_signal(request.pid, 0, SIGSTOP)) {
685 activity_manager_write(request.pid, crash_signal, amfd, *amfd_data.get());
698 if (!send_signal(request.pid, request.tid, crash_signal)) {
699 ALOGE("debuggerd: failed to kill process %d: %s", request.pid, strerror(errno));
708 activity_manager_write(request.pid, crash_signal, amfd, *amfd_data.get());
711 if (!send_signal(request.pid, 0, SIGCONT)) {
712 ALOGE("debuggerd: failed to resume process %d: %s", request.pid, strerror(errno));
744 ALOGE("debuggerd: waitpid returned unexpected pid (%d), committing murder-suicide", rc);
747 ALOGW("debuggerd: pid %d exited with status %d", rc, WEXITSTATUS(status));
749 ALOGW("debuggerd: pid %d received signal %d", rc, WTERMSIG(status));
751 ALOGW("debuggerd: pid %d stopped by signal %d", rc, WSTOPSIG(status));
753 ALOGW("debuggerd: pid %d continued", rc);
785 ALOGE("debuggerd: killing target %d", request.pid);
788 ALOGW("debuggerd: resuming target %d", request.pid);
791 if (kill(request.pid, exit_signal) != 0) {
812 ALOGW("debuggerd: handling request: pid=%d uid=%d gid=%d tid=%d\n", request.pid, request.uid,