Merge "debuggerd: show syscall in SYS_SECCOMP one-liners." am: c0748f0276
Original change: https://android-review.googlesource.com/c/platform/system/core/+/2373417 Change-Id: I1b8f52e9c0c298fa5431e32fa10af2298bdc334f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
a9b6eb3ea1
1 changed files with 13 additions and 11 deletions
|
|
@ -187,27 +187,29 @@ static bool get_main_thread_name(char* buf, size_t len) {
|
|||
* mutex is being held, so we don't want to use any libc functions that
|
||||
* could allocate memory or hold a lock.
|
||||
*/
|
||||
static void log_signal_summary(const siginfo_t* info) {
|
||||
static void log_signal_summary(const siginfo_t* si) {
|
||||
char main_thread_name[MAX_TASK_NAME_LEN + 1];
|
||||
if (!get_main_thread_name(main_thread_name, sizeof(main_thread_name))) {
|
||||
strncpy(main_thread_name, "<unknown>", sizeof(main_thread_name));
|
||||
}
|
||||
|
||||
if (info->si_signo == BIONIC_SIGNAL_DEBUGGER) {
|
||||
if (si->si_signo == BIONIC_SIGNAL_DEBUGGER) {
|
||||
async_safe_format_log(ANDROID_LOG_INFO, "libc", "Requested dump for pid %d (%s)", __getpid(),
|
||||
main_thread_name);
|
||||
return;
|
||||
}
|
||||
|
||||
// Many signals don't have an address or sender.
|
||||
char addr_desc[32] = ""; // ", fault addr 0x1234"
|
||||
if (signal_has_si_addr(info)) {
|
||||
async_safe_format_buffer(addr_desc, sizeof(addr_desc), ", fault addr %p", info->si_addr);
|
||||
}
|
||||
// Many signals don't have a sender or extra detail, but some do...
|
||||
pid_t self_pid = __getpid();
|
||||
char sender_desc[32] = {}; // " from pid 1234, uid 666"
|
||||
if (signal_has_sender(info, self_pid)) {
|
||||
get_signal_sender(sender_desc, sizeof(sender_desc), info);
|
||||
if (signal_has_sender(si, self_pid)) {
|
||||
get_signal_sender(sender_desc, sizeof(sender_desc), si);
|
||||
}
|
||||
char extra_desc[32] = {}; // ", fault addr 0x1234" or ", syscall 1234"
|
||||
if (si->si_signo == SIGSYS && si->si_code == SYS_SECCOMP) {
|
||||
async_safe_format_buffer(extra_desc, sizeof(extra_desc), ", syscall %d", si->si_syscall);
|
||||
} else if (signal_has_si_addr(si)) {
|
||||
async_safe_format_buffer(extra_desc, sizeof(extra_desc), ", fault addr %p", si->si_addr);
|
||||
}
|
||||
|
||||
char thread_name[MAX_TASK_NAME_LEN + 1]; // one more for termination
|
||||
|
|
@ -221,8 +223,8 @@ static void log_signal_summary(const siginfo_t* info) {
|
|||
|
||||
async_safe_format_log(ANDROID_LOG_FATAL, "libc",
|
||||
"Fatal signal %d (%s), code %d (%s%s)%s in tid %d (%s), pid %d (%s)",
|
||||
info->si_signo, get_signame(info), info->si_code, get_sigcode(info),
|
||||
sender_desc, addr_desc, __gettid(), thread_name, self_pid, main_thread_name);
|
||||
si->si_signo, get_signame(si), si->si_code, get_sigcode(si), sender_desc,
|
||||
extra_desc, __gettid(), thread_name, self_pid, main_thread_name);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue