From: merch-redmine@... Date: 2020-09-23T14:40:12+00:00 Subject: [ruby-core:100086] [Ruby master Bug#16809] Fiber crashes with --with-coroutine=copy Issue #16809 has been updated by jeremyevans0 (Jeremy Evans). Assignee set to ioquatix (Samuel Williams) Status changed from Open to Assigned Subject changed from ruby testsuite fails on s390x alpine (musl) with --with-coroutine=copy to Fiber crashes with --with-coroutine=copy OpenBSD/sparc64 (which uses copy coroutine) is similarly broken in regards to fibers. Even something simple like `ruby27 -e 'Fiber.new{Fiber.yield}.resume'` crashes (ruby26 works fine for this). Changing the title to be more general since this does not just affect s390x alpine (musl). ---------------------------------------- Bug #16809: Fiber crashes with --with-coroutine=copy https://bugs.ruby-lang.org/issues/16809#change-87645 * Author: ncopa (Natanael Copa) * Status: Assigned * Priority: Normal * Assignee: ioquatix (Samuel Williams) * ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [s390x-linux-musl] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- ``` ./revision.h unchanged #190 test_fiber.rb:15:in `': Fiber.new{ }.resume :ok #=> "" (expected "ok") #192 test_fiber.rb:26:in `': fibers = 100.times.collect{Fiber.new{Fiber.yield}} fibers.each(&:resume) fibers.each(&:resume) :ok #=> "" (expected "ok") #193 test_fiber.rb:33:in `': at_exit { Fiber.new{}.resume } #=> killed by SIGFPE (signal 8) #194 test_fiber.rb:37:in `': 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 `': a,s=[],"aaa" 300.times { a< "" (expected "ok") [ruby-dev:32581] test_massign.rb FAIL 1/34 #1391 test_thread.rb:310:in `': g = enum_for(:local_variables) loop { g.next } #=> killed by SIGFPE (signal 8) [ruby-dev:34128] #1392 test_thread.rb:315:in `': g = enum_for(:block_given?) loop { g.next } #=> killed by SIGFPE (signal 8) [ruby-dev:34128] #1393 test_thread.rb:320:in `': g = enum_for(:binding) loop { g.next } #=> killed by SIGFPE (signal 8) [ruby-dev:34128] #1394 test_thread.rb:325:in `': g = "abc".enum_for(:scan, /./) loop { g.next } #=> killed by SIGFPE (signal 8) [ruby-dev:34128] #1395 test_thread.rb:330:in `': 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); | ``` -- https://bugs.ruby-lang.org/ Unsubscribe: