1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

merge revision(s) 56030,56035: [Backport #12711]

* 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/branches/ruby_2_3@56257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2016-09-26 14:13:28 +00:00
parent ded336e9fb
commit 6ccadbafcd
3 changed files with 15 additions and 4 deletions

View file

@ -1,3 +1,10 @@
Mon Sep 26 23:10:43 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]
Mon Sep 26 20:23:32 2016 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
* gems/bundled_gems: update minitest to 5.8.5.

View file

@ -1,6 +1,6 @@
#define RUBY_VERSION "2.3.2"
#define RUBY_RELEASE_DATE "2016-09-26"
#define RUBY_PATCHLEVEL 189
#define RUBY_PATCHLEVEL 190
#define RUBY_RELEASE_YEAR 2016
#define RUBY_RELEASE_MONTH 9

View file

@ -482,10 +482,14 @@ darwin_sigtramp:
unw_set_reg(&cursor, UNW_X86_64_R13, uctx->uc_mcontext->__ss.__r13);
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;
unw_set_reg(&cursor, UNW_REG_IP, ip);
trace[n++] = (void *)uctx->uc_mcontext->__ss.__rip;
ip = uctx->uc_mcontext->__ss.__rip;
if (((char*)ip)[-2] == 0x0f && ((char*)ip)[-1] == 5) {
/* signal received in syscall */
trace[n++] = (void *)ip;
ip = *(unw_word_t*)uctx->uc_mcontext->__ss.__rsp;
}
trace[n++] = (void *)ip;
unw_set_reg(&cursor, UNW_REG_IP, ip);
}
while (unw_step(&cursor) > 0) {
unw_get_reg(&cursor, UNW_REG_IP, &ip);