From: alanwucanada@... Date: 2018-12-07T16:53:28+00:00 Subject: [ruby-core:90372] [Ruby trunk Bug#15250] Concurrent fibers segfault when thread caching is disabled Issue #15250 has been updated by alanwu (Alan Wu). Sounds like a duplicate of #14561. It should be fixed on trunk already. ---------------------------------------- Bug #15250: Concurrent fibers segfault when thread caching is disabled https://bugs.ruby-lang.org/issues/15250#change-75482 * Author: qyliss (Alyssa Ross) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.0dev (2018-10-19) [x86_64-darwin17] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- ~~~ ruby 500.times do Array.new(200) { |n| Thread.new { Fiber.new { readable = open(__FILE__) Fiber.yield readable.read(1) }.resume } }.each(&:join) end ~~~ Getting the segfault doesn���t require nearly that many iterations or threads, I just made sure to do it a lot so I could reproduce it consistently. I���ve seen it fail with as few as 20 threads. The IO isn���t necessary either. The Fiber just needs to have some work to do. I got it to break once by just yielding ���hello world���. The IO is more consistent, though. I came across this bug in the wild when using the fastimage gem in a few threads (from middleman), which uses a Fiber to wrap IO operations. I���ve been able to reproduce on macOS 10.13, and SmartOS 2017Q4 (Solaris). I have not been able to reproduce on Linux. As best I can tell, the crash was introduced by r60440. It is present in Ruby 2.5.x when compiled with the default configuration. It is not present in 2.4.x. It���s also present in trunk, but only if USE_THREAD_CACHE is disabled. (Or at least, I can���t reproduce it with thread caching enabled.) -- https://bugs.ruby-lang.org/ Unsubscribe: