Lines Matching refs:tid
178 static void dump_fault_addr(log_t* log, pid_t tid, int sig) in dump_fault_addr() argument
183 if(ptrace(PTRACE_GETSIGINFO, tid, 0, &si)){ in dump_fault_addr()
196 static void dump_thread_info(log_t* log, pid_t pid, pid_t tid, bool at_fault) { in dump_thread_info() argument
202 snprintf(path, sizeof(path), "/proc/%d/comm", tid); in dump_thread_info()
224 _LOG(log, SCOPE_AT_FAULT, "pid: %d, tid: %d, name: %s >>> %s <<<\n", pid, tid, in dump_thread_info()
229 pid, tid, threadname ? threadname : "UNKNOWN"); in dump_thread_info()
234 log_t* log, pid_t tid __attribute((unused)), bool at_fault, in dump_backtrace()
250 static void dump_stack_segment(const ptrace_context_t* context, log_t* log, pid_t tid, in dump_stack_segment() argument
254 if (!try_get_word_ptrace(tid, *sp, &stack_content)) { in dump_stack_segment()
298 static void dump_stack(const ptrace_context_t* context, log_t* log, pid_t tid, bool at_fault, in dump_stack() argument
320 dump_stack_segment(context, log, tid, scopeFlags, &sp, STACK_WORDS, -1); in dump_stack()
334 dump_stack_segment(context, log, tid, scopeFlags, &sp, STACK_WORDS, i); in dump_stack()
345 dump_stack_segment(context, log, tid, scopeFlags, &sp, words, i); in dump_stack()
350 static void dump_backtrace_and_stack(const ptrace_context_t* context, log_t* log, pid_t tid, in dump_backtrace_and_stack() argument
353 ssize_t frames = unwind_backtrace_ptrace(tid, context, backtrace, 0, STACK_DEPTH); in dump_backtrace_and_stack()
355 dump_backtrace(context, log, tid, at_fault, backtrace, frames); in dump_backtrace_and_stack()
356 dump_stack(context, log, tid, at_fault, backtrace, frames); in dump_backtrace_and_stack()
372 static void dump_nearby_maps(const ptrace_context_t* context, log_t* log, pid_t tid, bool at_fault)… in dump_nearby_maps() argument
376 if (ptrace(PTRACE_GETSIGINFO, tid, 0, &si)) { in dump_nearby_maps()
378 tid, strerror(errno)); in dump_nearby_maps()
424 static void dump_thread(const ptrace_context_t* context, log_t* log, pid_t tid, bool at_fault, in dump_thread() argument
426 wait_for_stop(tid, total_sleep_time_usec); in dump_thread()
428 dump_registers(context, log, tid, at_fault); in dump_thread()
429 dump_backtrace_and_stack(context, log, tid, at_fault); in dump_thread()
431 dump_memory_and_code(context, log, tid, at_fault); in dump_thread()
432 dump_nearby_maps(context, log, tid, at_fault); in dump_thread()
438 log_t* log, pid_t pid, pid_t tid, int* total_sleep_time_usec) { in dump_sibling_thread_report() argument
460 if (*end || new_tid == tid) { in dump_sibling_thread_report()
584 timeBuf, entry->nsec / 1000000, entry->pid, entry->tid, in dump_log_file()
590 timeBuf, entry->nsec / 1000000, entry->pid, entry->tid, in dump_log_file()
627 static void dump_abort_message(log_t* log, pid_t tid, uintptr_t address) { in dump_abort_message() argument
639 if (!try_get_word_ptrace(tid, address, &data)) { in dump_abort_message()
665 static bool dump_crash(log_t* log, pid_t pid, pid_t tid, int signal, uintptr_t abort_msg_address, in dump_crash() argument
689 dump_thread_info(log, pid, tid, true); in dump_crash()
691 dump_fault_addr(log, tid, signal); in dump_crash()
693 dump_abort_message(log, tid, abort_msg_address); in dump_crash()
695 ptrace_context_t* context = load_ptrace_context(tid); in dump_crash()
696 dump_thread(context, log, tid, true, total_sleep_time_usec); in dump_crash()
704 detach_failed = dump_sibling_thread_report(context, log, pid, tid, total_sleep_time_usec); in dump_crash()
810 char* engrave_tombstone(pid_t pid, pid_t tid, int signal, uintptr_t abort_msg_address, in engrave_tombstone() argument
832 *detach_failed = dump_crash(&log, pid, tid, signal, abort_msg_address, dump_sibling_threads, in engrave_tombstone()