mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* vm_dump.c (backtrace): use rip in the saved context for the case
the SIGSEGV is received when the process is in userland. Note that ip in the stack should be used if the signal is received when it is in kernel (when it is calling syscall) [Bug #12711] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e38a2ec5c0
commit
1d3665fd0d
2 changed files with 10 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
Tue Aug 30 03:38:35 2016 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* vm_dump.c (backtrace): use rip in the saved context for the case
|
||||
the SIGSEGV is received when the process is in userland.
|
||||
Note that ip in the stack should be used if the signal is received
|
||||
when it is in kernel (when it is calling syscall) [Bug #12711]
|
||||
|
||||
Sat Aug 27 10:26:14 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* array.c (rb_ary_concat_multi): take multiple arguments. based
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue