Project

General

Profile

Backport #4945

Segfault on Fiber#resume on Mac OS X 10.6.8

Added by dweinand (Dan Weinand) over 8 years ago. Updated over 3 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
[ruby-core:37672]

Description

=begin
When calling resume such as:

f = Fiber.new { puts "foo" }
f.resume

I'm getting the following segfault:

(irb):2: [BUG] Segmentation fault
ruby 1.9.2p274 (2011-06-06) [x86_64-darwin10.8.0]

-- control frame ----------
c:0024 p:---- s:0085 b:0085 l:000084 d:000084 CFUNC :resume
c:0023 p:0011 s:0082 b:0082 l:001938 d:000081 EVAL (irb):2
c:0022 p:---- s:0080 b:0080 l:000079 d:000079 FINISH
c:0021 p:---- s:0078 b:0078 l:000077 d:000077 CFUNC :eval
c:0020 p:0028 s:0071 b:0071 l:000070 d:000070 METHOD /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/workspace.rb:80
c:0019 p:0033 s:0064 b:0063 l:000062 d:000062 METHOD /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/context.rb:254
c:0018 p:0031 s:0058 b:0058 l:000878 d:000057 BLOCK /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:159
c:0017 p:0042 s:0050 b:0050 l:000049 d:000049 METHOD /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:273
c:0016 p:0011 s:0045 b:0045 l:000878 d:000044 BLOCK /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:156
c:0015 p:0144 s:0041 b:0041 l:000024 d:000040 BLOCK /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:243
c:0014 p:---- s:0038 b:0038 l:000037 d:000037 FINISH
c:0013 p:---- s:0036 b:0036 l:000035 d:000035 CFUNC :loop
c:0012 p:0009 s:0033 b:0033 l:000024 d:000032 BLOCK /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:229
c:0011 p:---- s:0031 b:0031 l:000030 d:000030 FINISH
c:0010 p:---- s:0029 b:0029 l:000028 d:000028 CFUNC :catch
c:0009 p:0023 s:0025 b:0025 l:000024 d:000024 METHOD /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:228
c:0008 p:0046 s:0022 b:0022 l:000878 d:000878 METHOD /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:155
c:0007 p:0011 s:0019 b:0019 l:001e48 d:000018 BLOCK /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:70
c:0006 p:---- s:0017 b:0017 l:000016 d:000016 FINISH
c:0005 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC :catch
c:0004 p:0183 s:0011 b:0011 l:001e48 d:001e48 METHOD /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:69
c:0003 p:0142 s:0006 b:0006 l:0014e8 d:0004c8 EVAL /Users/dweinand/.rvm/rubies/ruby-1.9.2-head/bin/irb:16
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014e8 d:0014e8 TOP


-- Ruby level backtrace information ----------------------------------------
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in <main>'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:69:in
start'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:69:in catch'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:70:in
block in start'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:155:in eval_input'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in
each_top_level_statement'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in catch'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in
block in each_top_level_statement'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in loop'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/ruby-lex.rb:243:in
block (2 levels) in each_top_level_statement'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:156:in block in eval_input'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:273:in
signal_status'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb.rb:159:in block (2 levels) in eval_input'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/context.rb:254:in
evaluate'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/workspace.rb:80:in evaluate'
/Users/dweinand/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/irb/workspace.rb:80:in
eval'
(irb):2:in irb_binding'
(irb):2:in
resume'

-- C level backtrace information -------------------------------------------

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

This doesn't appear to be a problem on 1.9.3-head and may be related to Issue #4827.
=end


Related issues

Related to Ruby master - Bug #5082: test_context_switch(TestMarshal) was failed on OS X 10.7 (Lion)Closed07/23/2011Actions

History

Updated by dweinand (Dan Weinand) over 8 years ago

=begin
Here's another stacktrace from running outside irb.

-e:1: [BUG] Bus Error
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.8.0]

-- control frame ----------
c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :resume
c:0003 p:0021 s:0006 b:0006 l:0014e8 d:002458 EVAL -e:1
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014e8 d:0014e8 TOP


-- Ruby level backtrace information ----------------------------------------
-e:1:in <main>'
-e:1:in
resume'

-- C level backtrace information -------------------------------------------
0 libruby.1.9.1.dylib 0x000000010014c64e rb_vm_bugreport + 110
1 libruby.1.9.1.dylib 0x00000001000404c3 report_bug + 259
2 libruby.1.9.1.dylib 0x0000000100040631 rb_bug + 161
3 libruby.1.9.1.dylib 0x00000001000e30a2 sigbus + 18
4 libSystem.B.dylib 0x00007fff893571ba _sigtramp + 26
5 ??? 0x0000000100896420 0x0 + 4303971360

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
=end

Updated by nagachika (Tomoyuki Chikanaga) over 8 years ago

I think this is similar to #4827 too.

r31954 is fix for this, but it cannot backport straightly because of r27635.

A patch for branch_1_9_2 is as follows

Index: cont.c

--- cont.c (revision 32347)
+++ cont.c (working copy)
@@ -882,6 +882,7 @@
/* no need to allocate vm stack */
fib = fiber_t_alloc(fiber_alloc(rb_cFiber));
fib->cont.type = ROOT_FIBER_CONTEXT;

  • fib->status = RUNNING;
    fib->prev_fiber = fib->next_fiber = fib;

    return fib;

Updated by dweinand (Dan Weinand) over 8 years ago

Unfortunately, I'm still getting the bus error after applying that patch.

Updated by dweinand (Dan Weinand) over 8 years ago

Actually, this looks like it could be related to #4651. I'm going to check out that commit, and see if I can get things working.

Updated by dweinand (Dan Weinand) over 8 years ago

=begin
Yes! I can confirm that this is the same issue as #4651 and r32201 fixes it.

The commit applies cleanly to 1.9.2. Can we get it backported?
=end

Updated by sikachu (Prem Sichanugrist) about 8 years ago

Yes, I agree on backporting #4651 into 1.9.2 branch. It's impossible now for me to develop stuff using Lion, as I can't even run Rails's Action Pack test cleanly >_<

Thank you so much.

Updated by cjbottaro (Christopher Bottaro) about 8 years ago

I'm also getting this segfault any time I call Fiber#resume. Please backport asap. Thanks.

Updated by cjbottaro (Christopher Bottaro) about 8 years ago

I built Ruby-1.9.2-p290 patched with this commit: https://github.com/ruby/ruby/commit/be953b4d1ce3f0dfc7f24c84ec7a51e027102557

and now I get the following:

=begin
$ bundle exec rake test
rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+)
/Users/cjbottaro/.rbenv/versions/1.9.2-p290/bin/ruby -I"lib:lib:test" -I"/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib" "/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2/lib/rake/rake_test_loader.rb" "test/*/test_.rb"
Run options: --seed 50218

Running tests:

..../Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:764: [BUG] cfp consistency error - send
ruby 1.9.2p290 (2011-07-09) [x86_64-darwin11.1.0]

-- control frame ----------
c:0012 p:---- s:0044 b:0044 l:000043 d:000043 CFUNC :map
c:0011 p:0012 s:0041 b:0041 l:000040 d:000040 METHOD /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:764
c:0010 p:0189 s:0036 b:0036 l:000035 d:000035 METHOD /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:740
c:0009 p:0013 s:0026 b:0026 l:000025 d:000025 METHOD /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:903
c:0008 p:0012 s:0023 b:0023 l:000014 d:000022 BLOCK /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:890
c:0007 p:---- s:0020 b:0020 l:000019 d:000019 FINISH
c:0006 p:---- s:0018 b:0018 l:000017 d:000017 CFUNC :each
c:0005 p:0068 s:0015 b:0015 l:000014 d:000014 METHOD /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:889
c:0004 p:0029 s:0011 b:0011 l:000010 d:000010 METHOD /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:878
c:0003 p:0057 s:0007 b:0007 l:0019e8 d:001e80 BLOCK /Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:658
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH

c:0001 p:0000 s:0002 b:0002 l:001bb8 d:001bb8 TOP

-- Ruby level backtrace information ----------------------------------------
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:658:in block in autorun'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:878:in
run'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:889:in _run'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:889:in
each'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:890:in block in _run'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:903:in
run_tests'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:740:in _run_anything'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:764:in
_run_suites'
/Users/cjbottaro/Dropbox/Projects/fiber_storm/vendor/bundle/ruby/1.9.1/gems/minitest-2.5.0/lib/minitest/unit.rb:764:in `map'

-- C level backtrace information -------------------------------------------
0 ruby 0x000000010c61e4fe rb_vm_bugreport + 110
1 ruby 0x000000010c513133 report_bug + 259
2 ruby 0x000000010c5132a1 rb_bug + 161
3 ruby 0x000000010c610f2a vm_call_method + 2442
4 ruby 0x000000010c613cfe vm_exec_core + 11214
5 ruby 0x000000010c617e3e vm_exec + 94
6 ruby 0x000000010c618d66 rb_yield + 70
7 ruby 0x000000010c4e8def rb_ary_each + 95
8 ruby 0x000000010c60c2f0 call_cfunc + 112
9 ruby 0x000000010c610883 vm_call_method + 739
10 ruby 0x000000010c613cfe vm_exec_core + 11214
11 ruby 0x000000010c617e3e vm_exec + 94
12 ruby 0x000000010c6110e1 rb_vm_invoke_proc + 161
13 ruby 0x000000010c51693e rb_exec_end_proc + 430
14 ruby 0x000000010c516a15 ruby_finalize_0 + 85
15 ruby 0x000000010c516b32 ruby_cleanup + 258
16 ruby 0x000000010c516d89 ruby_run_node + 89
17 ruby 0x000000010c4e2b2f main + 79
18 ruby 0x000000010c4e2ad4 start + 52
19 ??? 0x0000000000000005 0x0 + 5

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

rake aborted!
Command failed with status (): [/Users/cjbottaro/.rbenv/versions/1.9.2-p29...]

Tasks: TOP => test
(See full trace by running task with --trace)
=end

#9

Updated by naruse (Yui NARUSE) over 3 years ago

  • Status changed from Open to Rejected

Also available in: Atom PDF