[#53893] [ruby-trunk - Bug #8204][Open] ObjectSpace.each_object(Bignum) can generate Bignums that are to small to be Bignums — "Hanmac (Hans Mackowiak)" <hanmac@...>
[#53914] [ruby-trunk - Feature #8206][Open] Should Ruby core implement String#blank? — "sam.saffron (Sam Saffron)" <sam.saffron@...>
[#53922] [ruby-trunk - Bug #8208][Open] Raise cached exceptions for nonblocking IO to avoid allocation/stack-copying costs — "headius (Charles Nutter)" <headius@...>
"headius (Charles Nutter)" <headius@headius.com> wrote:
[#53950] [ruby-trunk - Bug #8211][Open] Performance regression of method calls — "dunric (David Unric)" <dunric29a@...>
[#53974] [ruby-trunk - Feature #8215][Open] Support accessing Fiber-locals and backtraces for a Fiber — "halorgium (Tim Carey-Smith)" <ruby-lang-bugs@...>
[#54023] [ruby-trunk - Feature #8223][Open] Make Matrix more omnivorous. — "boris_stitnicky (Boris Stitnicky)" <boris@...>
[#54031] Question about r39944 — Aaron Patterson <tenderlove@...>
Hi,
Even if test directory should be on the load path on test-all, you should
[#54095] [ruby-trunk - Feature #8237][Open] Logical method chaining via inferred receiver — "wardrop (Tom Wardrop)" <tom@...>
[#54175] [ruby-trunk - Bug #8254][Open] Ruby segfaults on second SystemStackError from parser — "charliesome (Charlie Somerville)" <charlie@...>
[#54185] [CommonRuby - Feature #8257][Open] Exception#cause to carry originating exception along with new one — "headius (Charles Nutter)" <headius@...>
(2013/04/12 1:40), headius (Charles Nutter) wrote:
On Sat, Apr 27, 2013 at 5:19 PM, SASADA Koichi <ko1@atdot.net> wrote:
[#54196] Encouraging use of CommonRuby — Charles Oliver Nutter <headius@...>
I think we need to do more to encourage the use of the CommonRuby
Hi,
As far as I understand, what is CommonRuby and the process over CommonRuby
On Thu, Apr 11, 2013 at 11:25 PM, NARUSE, Yui <naruse@airemix.jp> wrote:
(2013/04/12 16:40), Charles Oliver Nutter wrote:
On Fri, Apr 12, 2013 at 8:08 AM, NARUSE, Yui <naruse@airemix.jp> wrote:
[#54201] Has ObjectSpace changed recently? — Dave Thomas <dave@...>
I just noticed that in 2.0, I see this:
[#54207] [CommonRuby - Feature #8258][Open] Dir#escape_glob — "steveklabnik (Steve Klabnik)" <steve@...>
[#54218] [CommonRuby - Feature #8259][Open] Atomic attributes accessors — "funny_falcon (Yura Sokolov)" <funny.falcon@...>
Issue #8259 has been updated by Charles Nutter.
I'm not sure if setting the attribute on the ivar is a good way to go.
[#54333] Requesting Commit Access — Aman Gupta <ruby@...1.net>
Hello ruby-core,
Hi,
[#54415] [ruby-trunk - Bug #8286][Open] Can't decode non-MIME Base64 — "adacosta (Alan Da Costa)" <alandacosta@...>
[#54459] [CommonRuby - Feature #8291][Open] Allow retrieving the root Fiber of a Thread — "halorgium (Tim Carey-Smith)" <ruby-lang@...>
[#54473] [Backport 200 - Backport #8299][Open] Minor error in float parsing — "bobjalex (Bob Alexander)" <bobjalex@...>
[#54509] [ruby-trunk - Bug #8310][Open] resque-web crashes with segfault on Ruby 2.0.0-p0 only, Resque 1.24.1, Redis 2.6.12 — "vaharoni (Amit Aharoni)" <amit.sites@...>
[#54559] [ruby-trunk - Feature #8321][Open] Ripper: I would like coordinates for keywords — "ericp (Eric Promislow)" <eric.promislow@...>
[#54606] Plan to the first 2.0.0 patchlevel release. — Tomoyuki Chikanaga <nagachika00@...>
Hello, Rubyists.
Hi,
Could you please backport the following:
[#54621] [ruby-trunk - Feature #8339][Open] Introducing Geneartional Garbage Collection for CRuby/MRI — "ko1 (Koichi Sasada)" <redmine@...>
(2013/04/28 9:23), authorNari (Narihiro Nakamura) wrote:
2013/4/28 SASADA Koichi <ko1@atdot.net>:
(2013/05/04 12:08), Narihiro Nakamura wrote:
2013/5/4 SASADA Koichi <ko1@atdot.net>:
(2013/05/06 11:50), Tanaka Akira wrote:
2013/5/6 SASADA Koichi <ko1@atdot.net>:
On Sat, Apr 27, 2013 at 8:19 PM, ko1 (Koichi Sasada)
(2013/04/28 21:40), Magnus Holm wrote:
(2013/04/28 23:34), SASADA Koichi wrote:
On Sun, Apr 28, 2013 at 6:07 PM, SASADA Koichi <ko1@atdot.net> wrote:
(2013/04/29 1:19), Magnus Holm wrote:
On Sun, Apr 28, 2013 at 6:29 PM, SASADA Koichi <ko1@atdot.net> wrote:
"ko1 (Koichi Sasada)" <redmine@ruby-lang.org> wrote:
[#54665] [ruby-trunk - Bug #8344][Open] Status of Psych and Syck — "Eregon (Benoit Daloze)" <redmine@...>
[ruby-core:54490] Re: [ruby-trunk - Bug #8254] Ruby segfaults on second SystemStackError from parser
charliesome discovered that the reason of this issues is longjmp from
segv handler.
After receiving SIGSEGV, segv handler runs on the altstack.
And returns by *longjmp* ruby's world if it is caused by stack overflow.
https://github.com/ruby/ruby/blob/trunk/signal.c#L670
"longjmp" doesn't care about signal status, and system can't restore
signal status (especially altstack status). System assumes that altstack
is used continuously. and second sigsegv handler can't use altstack.
To solve this issue, charliesome replaced all of setjmp/longjmp pair to
sigsetjmp/siglongjmp by r40402. This change fixes this problem.
However, sigsetjmp/siglongjmp (especially sigsetjmp) requires system
calls and slower than setjmp on the older systems.
$ time ./miniruby -ve '5_000_000.times{1.times{}}'
ruby 2.1.0dev (2013-04-21 trunk 40402) [x86_64-linux]
real 0m3.393s
user 0m1.904s
sys 0m1.488s
$ time ../versions/install-trunk-daily_2013-04-16T12_00/bin/ruby -ve
'5_000_000.times{1.times{}}'
ruby 2.1.0dev (2013-04-16 trunk 40318) [x86_64-linux]
real 0m1.221s
user 0m1.216s
sys 0m0.008s
on Linux 2.6.32-5-amd64 (Debian squid)
So I asked to revert this change (r40403).
---------------------------------------------
charliesome proposed several solutions:
(1) Use libsigsegv
* I'm not sure because it seems GNU product.
(2) Use sigsetjmp/siglongjmp on newer systems only if there is no
performance problem
(3) Mix sigsetjmp/siglongjmp and setjmp/longjmp
We need to restore signal status (altstack status), so use siglongjmp
only at segv handler.
(S1) [main] sigsetjmp(root) ($)
(S2) [main] sigsetjmp(root) .... [foo] setjmp(foo) ... ($)
(S3) [main] sigsetjmp(root) .... [foo] setjmp(foo) ...
[bar] setjmp(bar) ($)
(S4) [main] sigsetjmp(root) .... [foo] setjmp(foo) ...
[bar] setjmp(bar) ... [SEGV handler] siglongjmp(root) ($)
(S5) [main] sigsetjmp(root) ($) # signal status was restored
(S6) [main] sigsetjmp(root) longjmp(bar) ($)
(S7) [main] sigsetjmp(root) .... [foo] setjmp(foo) ...
[bar] setjmp(bar) ($)
($) is program counter.
* This is interesting technique, but I'm not sure this approach
works fine because longjmp() at (S6) jumps into deeper stack frame.
Ideas are welcome.
(2013/04/11 21:36), charliesome (Charlie Somerville) wrote:
>
> Issue #8254 has been updated by charliesome (Charlie Somerville).
>
>
> =begin
> It seems to happen with any stack overflow from C:
>
> #include <ruby/ruby.h>
>
> VALUE f() {
> f();
> }
>
> Init_x() {
> rb_define_global_function("f", f, 0);
> }
>
> When (({f})) is called the second time, Ruby segfaults.
> =end
> ----------------------------------------
> Bug #8254: Ruby segfaults on second SystemStackError from parser
> https://bugs.ruby-lang.org/issues/8254#change-38446
>
> Author: charliesome (Charlie Somerville)
> Status: Open
> Priority: Normal
> Assignee:
> Category:
> Target version:
> ruby -v: ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin11.4.0]
>
>
> =begin
> When the parser overflows the stack, it raises SystemStackError.
>
> The second time this happens, Ruby segfaults.
>
> Code sample:
>
> n = 10_000 # adjust for your platform
> begin
> eval "1+" * n + "1"
> rescue SystemStackError
> eval "1+" * n + "1"
> end
>
> =end
>
>
--
// SASADA Koichi at atdot dot net