Project

General

Profile

Actions

Bug #16809

closed

Fiber crashes with --with-coroutine=copy

Added by ncopa (Natanael Copa) over 4 years ago. Updated over 3 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [s390x-linux-musl]
[ruby-core:98026]

Description

./revision.h unchanged                                                                                                  
#190 test_fiber.rb:15:in `<top (required)>':                                                                            
     Fiber.new{                                                                                                         
     }.resume                                                                                                           
     :ok                                                    
  #=> "" (expected "ok")                                                                                                
#192 test_fiber.rb:26:in `<top (required)>':                                                                            
     fibers = 100.times.collect{Fiber.new{Fiber.yield}}                                                                 
     fibers.each(&:resume)                                                                                              
     fibers.each(&:resume)                                                                                              
     :ok                                                                                                                
  #=> "" (expected "ok")     
#193 test_fiber.rb:33:in `<top (required)>':                                                                            
     at_exit { Fiber.new{}.resume }                                                                                     
  #=> killed by SIGFPE (signal 8)                           
#194 test_fiber.rb:37:in `<top (required)>':                                                                            
     Fiber.new(&Object.method(:class_eval)).resume("foo")                                                               
  #=> killed by SIGFPE (signal 8)  [ruby-dev:34128]                                                                     
test_fiber.rb           FAIL 4/5                                                                                        
#934 test_massign.rb:165:in `<top (required)>':                                                                         
     a,s=[],"aaa"                                                                                                       
     300.times { a<<s; s=s.succ }                                                                                       
     eval <<-END__                                                                                                      
     GC.stress=true                                         
     Fiber.new do                                                                                                       
       #{ a.join(",") },*zzz=1                                                                                          
     end.resume                                                                                                         
     END__                                                                                                              
     :ok                                                                                                                
  #=> "" (expected "ok")  [ruby-dev:32581]                                                                              
test_massign.rb         FAIL 1/34                                                                                       
#1391 test_thread.rb:310:in `<top (required)>':                                                                         
     g = enum_for(:local_variables)                         
     loop { g.next }                                                                                                    
  #=> killed by SIGFPE (signal 8)  [ruby-dev:34128]                                                                     
#1392 test_thread.rb:315:in `<top (required)>':                                                                         
     g = enum_for(:block_given?)                                                                                        
     loop { g.next }                                                                                                    
  #=> killed by SIGFPE (signal 8)  [ruby-dev:34128]                                                                     
#1393 test_thread.rb:320:in `<top (required)>':                                                                         
     g = enum_for(:binding)                                                                                             
     loop { g.next }                                                                                                    
  #=> killed by SIGFPE (signal 8)  [ruby-dev:34128]                                                                     
#1394 test_thread.rb:325:in `<top (required)>':                                                                         
     g = "abc".enum_for(:scan, /./)                                                                                     
     loop { g.next }                                                                                                    
  #=> killed by SIGFPE (signal 8)  [ruby-dev:34128]                                                                     
#1395 test_thread.rb:330:in `<top (required)>':                                                                         
     g = Module.enum_for(:new)                              
     loop { g.next }                                                                                                    
  #=> killed by SIGFPE (signal 8)  [ruby-dev:34128]                                                                     
test_thread.rb          FAIL 5/48                                                                                       
                                                                                                                        
Thread count: 10000 (skipping)                              
FAIL 10/1409 tests failed                                                                                               
make: *** [uncommon.mk:751: yes-btest-ruby] Error 1

May be related to this warning:

compiling coroutine/copy/Context.c                          
coroutine/copy/Context.c: In function 'coroutine_restore_stack_padded':                                                 
coroutine/copy/Context.c:87:34: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   87 |     _longjmp(context->state, 1 | (int)buffer);      
      |             
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0