summaryrefslogtreecommitdiff
path: root/vm_dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_dump.c')
-rw-r--r--vm_dump.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/vm_dump.c b/vm_dump.c
index c0f0685f0b..f8cde6d595 100644
--- a/vm_dump.c
+++ b/vm_dump.c
@@ -470,6 +470,9 @@ darwin_sigtramp:
unw_set_reg(&cursor, UNW_X86_64_R14, uctx->uc_mcontext->__ss.__r14);
unw_set_reg(&cursor, UNW_X86_64_R15, uctx->uc_mcontext->__ss.__r15);
ip = *(unw_word_t*)uctx->uc_mcontext->__ss.__rsp;
+ if (!ip) { /* signal received in syscall */
+ ip = uctx->uc_mcontext->__ss.__rip;
+ }
unw_set_reg(&cursor, UNW_REG_IP, ip);
trace[n++] = (void *)uctx->uc_mcontext->__ss.__rip;
trace[n++] = (void *)ip;