diff --git a/strace.c b/strace.c index 7214e6ef..17979538 100644 --- a/strace.c +++ b/strace.c @@ -2295,10 +2295,9 @@ trace(void) return true; } + clear_regs(); if (WIFSTOPPED(status)) get_regs(pid); - else - clear_regs(); event = (unsigned int) status >> 16; diff --git a/syscall.c b/syscall.c index f82a0c4a..8cfc3852 100644 --- a/syscall.c +++ b/syscall.c @@ -1156,6 +1156,9 @@ get_regs(pid_t pid) #undef USE_GET_SYSCALL_RESULT_REGS #ifdef ptrace_getregset_or_getregs + if (get_regs_error != -1) + return; + # ifdef HAVE_GETREGS_OLD /* * Try PTRACE_GETREGSET/PTRACE_GETREGS first,