[#83773] [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769 — usa@...
Issue #14108 has been updated by usa (Usaku NAKAMURA).
9 messages
2017/11/15
[#83774] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— Eric Wong <normalperson@...>
2017/11/15
usa@garbagecollect.jp wrote:
[#83775] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— "U.NAKAMURA" <usa@...>
2017/11/15
Hi, Eric
[#83779] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— Eric Wong <normalperson@...>
2017/11/15
"U.NAKAMURA" <usa@garbagecollect.jp> wrote:
[#83781] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— "U.NAKAMURA" <usa@...>
2017/11/15
Hi, Eric,
[#83782] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— Eric Wong <normalperson@...>
2017/11/15
"U.NAKAMURA" <usa@garbagecollect.jp> wrote:
[ruby-core:83915] [Ruby trunk Bug#14131][Closed] test_backtrace.rb: Fails on ppc64le
From:
v.ondruch@...
Date:
2017-11-28 07:54:58 UTC
List:
ruby-core #83915
Issue #14131 has been updated by vo.x (Vit Ondruch).
Status changed from Open to Closed
Hi Breno, this is duplicate of #13757. Could you please check the discussion there? I didn't have enough free cycles lately to continue to dig into this ..
----------------------------------------
Bug #14131: test_backtrace.rb: Fails on ppc64le
https://bugs.ruby-lang.org/issues/14131#change-67968
* Author: leitao (Breno Leitao)
* Status: Closed
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Current test_backtrace.rb fails on ppc64el environment with the following stack:
~~~
unstable ➜ ruby git:(trunk) ✗ ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=./test/excludes --name=test_caller_lev test/ruby/test_backtrace.rb
Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=./test/excludes --name=test_caller_lev
# Running tests:
[1/1] TestBacktrace#test_caller_lev = 0.00 s
1) Error:
TestBacktrace#test_caller_lev:
SystemStackError: stack level too deep
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:93:in `block (2 levels) in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `times'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:92:in `block in test_caller_lev'
/home/breno/ruby/ruby/test/ruby/test_backtrace.rb:106:in `block in test_caller_lev'
Finished tests in 0.005963s, 167.7020 tests/s, 1341.6160 assertions/s.
1 tests, 8 assertions, 0 failures, 1 errors, 0 skips
ruby -v: ruby 2.5.0dev (2017-11-27 trunk 60922) [powerpc64le-linux]
~~~
Also, the bisect points to the following commit:
~~~
commit c4e2cf466448f4283fd3f8a17a73f5fa9b745fe1
Author: normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Thu Jun 8 20:58:03 2017 +0000
tool/runruby.rb: test with smallest possible machine stack
Lets ensure none of our C functions use too much stack space and
fix all excessive stack usage before releasing the next version.
Reducing C stack usage should reduce conservative GC scanning
time and improve performance.
If there are platform-dependent test failures; excessive stack
usage should be fixed; rather than increasing minimum values or
removing these envs from testing.
~~~
Looking at the code, I also found that align the stack to 64kb (size of the page in ppc64le) solves the problem also, something like:
~~~
Author: Breno Leitao <breno.leitao@gmail.com>
Date: Mon Nov 27 10:47:00 2017 -0500
stack: align to 64kb
This is a workaround for ppc64el which uses 64kb page size. This align
the stack to the page size. It shouldn't have issues with amd64, but I
am not the expert.
Signed-off-by: Breno Leitao <leitao@debian.org>
diff --git a/vm_core.h b/vm_core.h
index 41663fd43e..71f5ee5ba2 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -576,7 +576,7 @@ typedef struct rb_vm_struct {
/* default values */
-#define RUBY_VM_SIZE_ALIGN 4096
+#define RUBY_VM_SIZE_ALIGN 4096 * 16
#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE)) /* 512 KB or 1024 KB */
#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) /* 8 KB or 16 KB */
~~~
Anyway, any idea on how to solve this issue?
This bug showed up initially in the Debian as https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881772
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>