Home | History | Annotate | Download | only in libbacktrace

Lines Matching refs:Pid

106 void WaitForStop(pid_t pid) {
110 while (ptrace(PTRACE_GETSIGINFO, pid, 0, &si) < 0 && (errno == EINTR || errno == ESRCH)) {
299 void VerifyProcTest(pid_t pid, pid_t tid, bool share_map,
304 ptrace_tid = pid;
319 map.reset(BacktraceMap::Create(pid));
321 std::unique_ptr<Backtrace> backtrace(Backtrace::Create(pid, tid, map.get()));
340 pid_t pid;
341 if ((pid = fork()) == 0) {
345 VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, false, ReadyLevelBacktrace, VerifyLevelDump);
347 kill(pid, SIGKILL);
349 ASSERT_EQ(waitpid(pid, &status, 0), pid);
353 pid_t pid;
354 if ((pid = fork()) == 0) {
359 VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, true, ReadyLevelBacktrace, VerifyLevelDump);
361 kill(pid, SIGKILL);
363 ASSERT_EQ(waitpid(pid, &status, 0), pid);
367 pid_t pid;
368 if ((pid = fork()) == 0) {
372 VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, false, ReadyMaxBacktrace, VerifyMaxDump);
374 kill(pid, SIGKILL);
376 ASSERT_EQ(waitpid(pid, &status, 0), pid);
380 std::unique_ptr<Backtrace> ign1(Backtrace::Create(bt_all->Pid(), BACKTRACE_CURRENT_THREAD));
385 std::unique_ptr<Backtrace> ign2(Backtrace::Create(bt_all->Pid(), BACKTRACE_CURRENT_THREAD));
394 pid_t pid;
395 if ((pid = fork()) == 0) {
399 VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, false, ReadyLevelBacktrace, VerifyProcessIgnoreFrames);
401 kill(pid, SIGKILL);
403 ASSERT_EQ(waitpid(pid, &status, 0), pid);
412 void GetThreads(pid_t pid, std::vector<pid_t>* threads) {
415 snprintf(task_path, sizeof(task_path), "/proc/%d/task", pid);
431 pid_t pid;
432 if ((pid = fork()) == 0) {
451 GetThreads(pid, &threads);
456 ASSERT_TRUE(ptrace(PTRACE_ATTACH, pid, 0, 0) == 0);
457 WaitForStop(pid);
460 if (pid == *it) {
463 VerifyProcTest(pid, *it, false, ReadyLevelBacktrace, VerifyLevelDump);
465 ASSERT_TRUE(ptrace(PTRACE_DETACH, pid, 0, 0) == 0);
467 kill(pid, SIGKILL);
469 ASSERT_EQ(waitpid(pid, &status, 0), pid);
881 void VerifyMap(pid_t pid) {
883 snprintf(buffer, sizeof(buffer), "/proc/%d/maps", pid);
896 std::unique_ptr<BacktraceMap> map(BacktraceMap::Create(pid));
910 pid_t pid;
912 if ((pid = fork()) == 0) {
917 ASSERT_LT(0, pid);
919 ASSERT_TRUE(ptrace(PTRACE_ATTACH, pid, 0, 0) == 0);
922 WaitForStop(pid);
925 VerifyMap(pid);
927 ASSERT_TRUE(ptrace(PTRACE_DETACH, pid, 0, 0) == 0);
929 kill(pid, SIGKILL);
930 ASSERT_EQ(waitpid(pid, nullptr, 0), pid);
1074 pid_t pid;
1075 if ((pid = fork()) == 0) {
1079 ASSERT_NE(-1, pid);
1084 if (ptrace(PTRACE_ATTACH, pid, 0, 0) == 0) {
1085 WaitForStop(pid);
1087 std::unique_ptr<Backtrace> backtrace(Backtrace::Create(pid, pid));
1107 ASSERT_TRUE(ptrace(PTRACE_DETACH, pid, 0, 0) == 0);
1114 kill(pid, SIGKILL);
1115 ASSERT_EQ(waitpid(pid, nullptr, 0), pid);
1220 pid_t pid;
1221 if ((pid = fork()) == 0) {
1248 ASSERT_TRUE(pid > 0);
1253 ASSERT_TRUE(ptrace(PTRACE_ATTACH, pid, 0, 0) == 0);
1256 WaitForStop(pid);
1258 std::unique_ptr<Backtrace> backtrace(Backtrace::Create(pid, BACKTRACE_CURRENT_THREAD));
1282 ASSERT_TRUE(ptrace(PTRACE_DETACH, pid, 0, 0) == 0);
1290 kill(pid, SIGKILL);
1291 ASSERT_EQ(waitpid(pid, nullptr, 0), pid);
1370 pid_t pid;
1371 if ((pid = fork()) == 0) {
1375 ASSERT_TRUE(pid > 0);
1381 ASSERT_TRUE(ptrace(PTRACE_ATTACH, pid, 0, 0) == 0);
1384 WaitForStop(pid);
1386 std::unique_ptr<Backtrace> backtrace(Backtrace::Create(pid, BACKTRACE_CURRENT_THREAD));
1399 ASSERT_TRUE(ptrace(PTRACE_DETACH, pid, 0, 0) == 0);
1407 kill(pid, SIGKILL);
1408 ASSERT_EQ(waitpid(pid, nullptr, 0), pid);
1426 void CheckForLeak(pid_t pid, pid_t tid) {
1429 Backtrace* backtrace = Backtrace::Create(pid, tid);
1440 Backtrace* backtrace = Backtrace::Create(pid, tid);
1474 pid_t pid;
1476 if ((pid = fork()) == 0) {
1481 ASSERT_LT(0, pid);
1483 ASSERT_TRUE(ptrace(PTRACE_ATTACH, pid, 0, 0) == 0);
1486 WaitForStop(pid);
1488 CheckForLeak(pid, BACKTRACE_CURRENT_THREAD);
1490 ASSERT_TRUE(ptrace(PTRACE_DETACH, pid, 0, 0) == 0);
1492 kill(pid, SIGKILL);
1493 ASSERT_EQ(waitpid(pid, nullptr, 0), pid);