ruby-changes:44184
From: nagachika <ko1@a...>
Date: Mon, 26 Sep 2016 23:13:33 +0900 (JST)
Subject: [ruby-changes:44184] nagachika:r56257 (ruby_2_3): merge revision(s) 56030, 56035: [Backport #12711]
nagachika 2016-09-26 23:13:28 +0900 (Mon, 26 Sep 2016) New Revision: 56257 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=56257 Log: 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] Modified directories: branches/ruby_2_3/ Modified files: branches/ruby_2_3/ChangeLog branches/ruby_2_3/version.h branches/ruby_2_3/vm_dump.c Index: ruby_2_3/version.h =================================================================== --- ruby_2_3/version.h (revision 56256) +++ ruby_2_3/version.h (revision 56257) @@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/version.h#L1 #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 Index: ruby_2_3/vm_dump.c =================================================================== --- ruby_2_3/vm_dump.c (revision 56256) +++ ruby_2_3/vm_dump.c (revision 56257) @@ -482,10 +482,14 @@ darwin_sigtramp: https://github.com/ruby/ruby/blob/trunk/ruby_2_3/vm_dump.c#L482 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); Index: ruby_2_3/ChangeLog =================================================================== --- ruby_2_3/ChangeLog (revision 56256) +++ ruby_2_3/ChangeLog (revision 56257) @@ -1,3 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/ChangeLog#L1 +Mon Sep 26 23:10:43 2016 NARUSE, Yui <naruse@r...> + + * 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@r...> * gems/bundled_gems: update minitest to 5.8.5. Property changes on: ruby_2_3 ___________________________________________________________________ Modified: svn:mergeinfo Merged /trunk:r56030,56035 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/