ruby-concurrency / concurrent-ruby

Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns.
https://ruby-concurrency.github.io/concurrent-ruby/
Other
5.71k stars 419 forks source link

Reliably crashes #1065

Closed hms closed 1 month ago

hms commented 1 month ago

I was hoping to narrow down what I think is a separate problem with thread pools reliably hanging (all threads freeze) when using:

Unfortunately, before I got there, my (what I thought was a) simple test harness is crashing reliably.

Running the following (updated) script via: ruby crash.rb >stdout.log 2>stderr.log

# frozen_string_literal: true

require 'concurrent-ruby'
puts "Ruby Version: #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
puts

puts "RbConfig::CONFIG"
RbConfig::CONFIG.each_pair { |k, v| puts "#{k}: #{v}" }
puts

puts "Gems in runtime env:"
Gem.loaded_specs.each { |name, spec | puts "#{name}: #{spec.version}" }
puts

puts "GC.auto_compact: #{GC.auto_compact}"
GC.start

iterations = 100_000
pool = Concurrent::FixedThreadPool.new(10)
futures = Concurrent::Array.new

counter = Concurrent::AtomicFixnum.new(0)
0.upto(iterations) do |iter|
  puts "posting iteration #{iter}"
  pool.post(futures) do
    futures << Concurrent::Promises.future(counter) do
      sleep rand(10)
      counter.increment
    end
  end
end

puts "Wait loop"
while counter.value < iterations
  puts counter.value
  puts Time.now
  sleep 1
end

Concurrent::Promises.zip(futures).wait!

stderr.log stdout.log

Please let me know if I can do anything to help with this issue (more data, crash dumps, altered configurations, etc.)

@hms

eregon commented 1 month ago

At the very least the error output is needed.

bensheldon commented 1 month ago

I can reproduce it on Ruby 3.3.4. My immediate reaction is that, given this doesn't involve a native extension, this is a Ruby bug.

❯ irb
irb(main):001> require 'concurrent-ruby'
irb(main):002> GC.auto_compact # is false
irb(main):003> GC.start
irb(main):004>
irb(main):005> futures = 100_000
irb(main):006> pool = Concurrent::FixedThreadPool.new(10)
irb(main):007>
irb(main):008> counter = Concurrent::AtomicFixnum.new(0)
irb(main):009>
irb(main):010* 0.upto(futures) do
irb(main):011*   pool.post do
irb(main):012*     Concurrent::Promises.future(counter) do
irb(main):013*       sleep rand(10)
irb(main):014*       counter.increment
irb(main):015*     end
irb(main):016*   end
irb(main):017> end
irb(main):018>
irb(main):019* while counter.value < futures
irb(main):020*   puts counter.value
irb(main):021*   sleep 1
irb(main):022*   GC.start
irb(main):023> end
irb(main):024> pool.shutdown
0
339
862
1686
2658
3765
5919
7675
9459
11272
13046
15381
16614
18934
20035
21870
23345
25342
27485
30657
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48: [BUG] Segmentation fault at 0x0000000000000008
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]

-- Crash Report log information --------------------------------------------
   See Crash Report log file in one of the following locations:
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0010 p:---- s:0048 e:000047 CFUNC  :synchronize
c:0009 p:0016 s:0044 e:000043 METHOD /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchroni
c:0008 p:0004 s:0040 e:000039 METHOD /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/
c:0007 p:0013 s:0036 e:000035 METHOD /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/
c:0006 p:0041 s:0028 e:000027 BLOCK  /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/
c:0005 p:0018 s:0022 e:000021 METHOD <internal:kernel>:187
c:0004 p:0004 s:0017 e:000016 BLOCK  /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ [FINISH]
c:0003 p:---- s:0014 e:000013 CFUNC  :catch
c:0002 p:0006 s:0009 e:000008 BLOCK  /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ [FINISH]
c:0001 p:---- s:0003 e:000002 DUMMY  [FINISH]

-- Ruby level backtrace information ----------------------------------------
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `block in create_worker'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `catch'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `block (2 levels) in create_worker'
<internal:kernel>:187:in `loop'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:350:in `block (3 levels) in create_worker'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:360:in `run_task'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:114:in `worker_task_completed'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in `synchronize'
/Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in `synchronize'

-- Threading information ---------------------------------------------------
Total ractor count: 1
Ruby thread count for this ractor: 16383

-- Machine register context ------------------------------------------------
  x0: 0x0000000000000000  x1: 0x0000000000000000  x2: 0x0000000160b07cb0
  x3: 0x0000000000000000  x4: 0x0000000160b07920  x5: 0x00000000000000a0
  x6: 0x0000000000000000  x7: 0x0000000000000000 x18: 0x0000000000000000
 x19: 0x0000000160b07920 x20: 0x0000000160b07a40 x21: 0x0000000128705938
 x22: 0x0000000160b07920 x23: 0x0000000000000001 x24: 0x0000000000000024
 x25: 0x0000000104d5e5ec x26: 0x00000003c9aea308 x27: 0x000060000060e790
 x28: 0x0000000000000000  lr: 0x0000000104d5f480  fp: 0x00000003c9aea2e0
  sp: 0x00000003c9aea2b0

-- C level backtrace information -------------------------------------------
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(rb_vm_bugreport+0xb4c) [0x104db61c4]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(rb_bug_for_fatal_signal+0x100) [0x104bf7e98]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(sig_do_nothing+0x0) [0x104d1d860]
/usr/lib/system/libsystem_platform.dylib(_sigtramp+0x38) [0x195628184]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(thread_sched_to_waiting_until_wakeup+0x70) [0x104d5f480]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(do_mutex_lock+0x148) [0x104d546a4]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(rb_mutex_synchronize_m+0x24) [0x104d62610]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(vm_call_cfunc_with_frame_+0xf0) [0x104da8e04]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(vm_exec_core+0x1dc0) [0x104d8e87c]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(rb_vm_exec+0x13c) [0x104d8ba84]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(invoke_block_from_c_bh+0x368) [0x104db0534]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(catch_i+0x6c) [0x104dafcac]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(vm_catch_protect+0xe8) [0x104d9bd94]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(rb_f_catch+0x70) [0x104d9c60c]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(vm_call_cfunc_with_frame_+0xf0) [0x104da8e04]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(vm_exec_core+0x1dc0) [0x104d8e87c]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(rb_vm_exec+0x13c) [0x104d8ba84]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(vm_invoke_proc+0x2c0) [0x104d9e82c]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(thread_do_start_proc+0x29c) [0x104d612ec]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(thread_start_func_2+0x328) [0x104d60978]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(call_thread_start_func_2+0x9c) [0x104d60620]
/Users/bensheldon/.rbenv/versions/3.3.4/lib/libruby.3.3.dylib(nt_start+0x1c8) [0x104d60530]
/usr/lib/system/libsystem_pthread.dylib(_pthread_start+0x88) [0x1955f32e4]

-- Other runtime information -----------------------------------------------

* Loaded script: irb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 fiber.so
    3 rational.so
    4 complex.so
    5 ruby2_keywords.rb
    6 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/enc/encdb.bundle
    7 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/enc/trans/transdb.bundle
    8 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/rbconfig.rb
    9 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/compatibility.rb
   10 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/defaults.rb
   11 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/deprecate.rb
   12 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/errors.rb
   13 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/unknown_command_spell_checker.rb
   14 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/exceptions.rb
   15 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/basic_specification.rb
   16 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/stub_specification.rb
   17 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/platform.rb
   18 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/specification_record.rb
   19 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/util/list.rb
   20 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/version.rb
   21 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/requirement.rb
   22 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/specification.rb
   23 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/util.rb
   24 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/dependency.rb
   25 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/core_ext/kernel_gem.rb
   26 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/monitor.bundle
   27 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/monitor.rb
   28 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems.rb
   29 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb
   30 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/path_support.rb
   31 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/error_highlight/version.rb
   32 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/error_highlight/base.rb
   33 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/error_highlight/formatter.rb
   34 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/error_highlight/core_ext.rb
   35 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/error_highlight.rb
   36 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/version.rb
   37 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/core_ext/name_error.rb
   38 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/levenshtein.rb
   39 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/jaro_winkler.rb
   40 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checker.rb
   41 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   42 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   43 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/name_error_checkers.rb
   44 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/method_name_checker.rb
   45 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/key_error_checker.rb
   46 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/null_checker.rb
   47 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/tree_spell_checker.rb
   48 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/require_path_checker.rb
   49 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/spell_checkers/pattern_key_name_checker.rb
   50 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean/formatter.rb
   51 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/did_you_mean.rb
   52 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/syntax_suggest/core_ext.rb
   53 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/tsort/lib/tsort.rb
   54 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendored_tsort.rb
   55 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/request_set/gem_dependency_api.rb
   56 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/request_set/lockfile/parser.rb
   57 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/request_set/lockfile/tokenizer.rb
   58 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/request_set/lockfile.rb
   59 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/request_set.rb
   60 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb
   61 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
   62 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/errors.rb
   63 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/action.rb
   64 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
   65 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
   66 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
   67 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
   68 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb
   69 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb
   70 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb
   71 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
   72 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph.rb
   73 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/state.rb
   74 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/modules/specification_provider.rb
   75 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
   76 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/resolution.rb
   77 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/resolver.rb
   78 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo/modules/ui.rb
   79 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendor/molinillo/lib/molinillo.rb
   80 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/vendored_molinillo.rb
   81 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/activation_request.rb
   82 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/conflict.rb
   83 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/dependency_request.rb
   84 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/requirement_list.rb
   85 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/stats.rb
   86 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/set.rb
   87 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/api_set.rb
   88 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/composed_set.rb
   89 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/best_set.rb
   90 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/current_set.rb
   91 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/git_set.rb
   92 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/index_set.rb
   93 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/installer_set.rb
   94 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/lock_set.rb
   95 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/vendor_set.rb
   96 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/source_set.rb
   97 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/specification.rb
   98 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/spec_specification.rb
   99 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/api_specification.rb
  100 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/git_specification.rb
  101 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/index_specification.rb
  102 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/installed_specification.rb
  103 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/local_specification.rb
  104 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/lock_specification.rb
  105 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver/vendor_specification.rb
  106 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/resolver.rb
  107 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/text.rb
  108 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source/git.rb
  109 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source/installed.rb
  110 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source/specific_file.rb
  111 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source/local.rb
  112 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source/lock.rb
  113 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source/vendor.rb
  114 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/rubygems/source.rb
  115 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/set.rb
  116 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/ripper.bundle
  117 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/ripper/core.rb
  118 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/ripper/lexer.rb
  119 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/ripper/filter.rb
  120 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/ripper/sexp.rb
  121 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/ripper.rb
  122 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/io-console-0.7.2/lib/io/console.bundle
  123 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/forwardable/impl.rb
  124 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/forwardable.rb
  125 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/version.rb
  126 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/config.rb
  127 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_actor/base.rb
  128 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_actor/composite.rb
  129 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_actor/emacs.rb
  130 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_actor/vi_command.rb
  131 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_actor/vi_insert.rb
  132 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_actor.rb
  133 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/key_stroke.rb
  134 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/kill_ring.rb
  135 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/unicode/east_asian_width.rb
  136 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/unicode.rb
  137 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/delegate.rb
  138 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/fileutils.rb
  139 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/etc.bundle
  140 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tmpdir.rb
  141 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tempfile.rb
  142 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/line_editor.rb
  143 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/history.rb
  144 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle.bundle
  145 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/closure.rb
  146 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/function.rb
  147 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/version.rb
  148 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle.rb
  149 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/value.rb
  150 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/pack.rb
  151 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/struct.rb
  152 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/cparser.rb
  153 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/fiddle-1.1.2/lib/fiddle/import.rb
  154 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/terminfo.rb
  155 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/io/wait.bundle
  156 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/io/dumb.rb
  157 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/io.rb
  158 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/face.rb
  159 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline/io/ansi.rb
  160 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/reline-0.5.10/lib/reline.rb
  161 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/init.rb
  162 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/singleton.rb
  163 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/helper_method/base.rb
  164 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/helper_method/conf.rb
  165 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/helper_method.rb
  166 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/workspace.rb
  167 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/inspector.rb
  168 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/nesting_parser.rb
  169 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/ruby-lex.rb
  170 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/completion.rb
  171 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/arm64-darwin23/pathname.bundle
  172 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/pathname.rb
  173 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/history.rb
  174 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/input-method.rb
  175 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/output-method.rb
  176 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/context.rb
  177 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/base.rb
  178 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command.rb
  179 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/internal_helpers.rb
  180 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/debug.rb
  181 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/debug.rb
  182 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/backtrace.rb
  183 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/break.rb
  184 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/catch.rb
  185 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/cd.rb
  186 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/ext/change-ws.rb
  187 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/chws.rb
  188 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/context.rb
  189 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/continue.rb
  190 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/delete.rb
  191 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/disable_irb.rb
  192 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/shellwords.rb
  193 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/color.rb
  194 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/source_finder.rb
  195 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/edit.rb
  196 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/exit.rb
  197 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/finish.rb
  198 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/force_exit.rb
  199 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/help.rb
  200 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/stringio-3.1.1/lib/stringio.bundle
  201 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/pager.rb
  202 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/history.rb
  203 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/info.rb
  204 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/irb_info.rb
  205 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/ext/loader.rb
  206 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/load.rb
  207 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/ls.rb
  208 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/measure.rb
  209 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/next.rb
  210 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/ext/workspaces.rb
  211 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/pushws.rb
  212 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/show_doc.rb
  213 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/show_source.rb
  214 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/step.rb
  215 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/subirb.rb
  216 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/command/whereami.rb
  217 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/default_commands.rb
  218 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/statement.rb
  219 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/locale.rb
  220 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/version.rb
  221 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/easter-egg.rb
  222 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb.rb
  223 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/prettyprint.rb
  224 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/3.3.0/pp.rb
  225 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb/color_printer.rb
  226 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rdoc-6.7.0/lib/rdoc/version.rb
  227 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rdoc-6.7.0/lib/rdoc/i18n/text.rb
  228 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rdoc-6.7.0/lib/rdoc/i18n.rb
  229 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rdoc-6.7.0/lib/rdoc.rb
  230 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/version.rb
  231 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/constants.rb
  232 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/errors.rb
  233 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/timeout-0.4.1/lib/timeout.rb
  234 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/utility/engine.rb
  235 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb
  236 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb
  237 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb
  238 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/full_memory_barrier.rb
  239 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/safe_initialization.rb
  240 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/volatile.rb
  241 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic_reference/atomic_direct_update.rb
  242 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb
  243 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb
  244 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb
  245 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/object.rb
  246 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb
  247 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb
  248 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb
  249 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb
  250 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/event.rb
  251 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb
  252 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/concern/obligation.rb
  253 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger/version.rb
  254 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger/formatter.rb
  255 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger/period.rb
  256 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger/log_device.rb
  257 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger/severity.rb
  258 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger/errors.rb
  259 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/logger-1.6.1/lib/logger.rb
  260 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/concern/logging.rb
  261 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/concern/deprecation.rb
  262 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/executor_service.rb
  263 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb
  264 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb
  265 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb
  266 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/delay.rb
  267 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb
  268 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
  269 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb
  270 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
  271 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb
  272 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/utility/processor_counter.rb
  273 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/configuration.rb
  274 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb
  275 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb
  276 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/utility/native_integer.rb
  277 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb
  278 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb
  279 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb
  280 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb
  281 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb
  282 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb
  283 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/lock.rb
  284 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb
  285 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/locals.rb
  286 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/fiber_local_var.rb
  287 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb
  288 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb
  289 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb
  290 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb
  291 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/semaphore.rb
  292 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomics.rb
  293 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb
  294 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb
  295 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
  296 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb
  297 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
  298 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
  299 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb
  300 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb
  301 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb
  302 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb
  303 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb
  304 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb
  305 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/concern/observable.rb
  306 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/ivar.rb
  307 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/options.rb
  308 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/scheduled_task.rb
  309 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb
  310 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb
  311 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb
  312 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executor/timer_set.rb
  313 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/executors.rb
  314 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/condition.rb
  315 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization.rb
  316 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb
  317 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/agent.rb
  318 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/atom.rb
  319 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/thread_safe/util.rb
  320 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/array.rb
  321 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/hash.rb
  322 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb
  323 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/set.rb
  324 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb
  325 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb
  326 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/map.rb
  327 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/tuple.rb
  328 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/async.rb
  329 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/future.rb
  330 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/dataflow.rb
  331 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/maybe.rb
  332 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/exchanger.rb
  333 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb
  334 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/immutable_struct.rb
  335 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/mutable_struct.rb
  336 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/mvar.rb
  337 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promise.rb
  338 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/settable_struct.rb
  339 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/timer_task.rb
  340 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/tvar.rb
  341 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb
  342 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/re_include.rb
  343 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb
  344 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb
  345 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent.rb
  346 /Users/bensheldon/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent-ruby.rb
eregon commented 1 month ago

Right, please report it at https://bugs.ruby-lang.org/ (I'm surprised the output doesn't say that).

hms commented 1 month ago

I've been able to reproduce this in ruby 3.3.1 - 3.3.5. I'll move my report over the ruby-lang.org as suggested.

hms commented 1 month ago

Gentlemen,

Maybe I'm not groking the documentation, but my crash reports match yours and they highlight a large number of created threads

-- Threading information --------------------------------------------------- Total ractor count: 1 Ruby thread count for this ractor: 16383

And my reading of Concurrent::FixedThreadPool docs left me with the impression that line 6 of the script would only create 10 threads and that the pool was responsible for managing the pending requests based on threads being ready for work. If that's a correct understanding, why do we have 16,383 pending threads in this crash report?

eregon commented 1 month ago

FWIW I cannot reproduce it on linux-amd64 (ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]). However I get an exception:

...
posting iteration 99999
posting iteration 100000
Wait loop
85712
2024-10-01 20:33:24 +0200
88590
2024-10-01 20:33:25 +0200
91170
2024-10-01 20:33:26 +0200
93320
2024-10-01 20:33:27 +0200
95182
2024-10-01 20:33:28 +0200
96813
2024-10-01 20:33:29 +0200
98062
2024-10-01 20:33:30 +0200
99049
2024-10-01 20:33:31 +0200
99662
2024-10-01 20:33:32 +0200
/home/eregon/.rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:1646:in `block in new_blocked_by': undefined method `promise' for an instance of Concurrent::Array (NoMethodError)

        delayed = blockers.reduce(nil) { |d, f| add_delayed d, f.promise.delayed_because }
                                                                ^^^^^^^^
    from /home/eregon/.rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:1646:in `each'
    from /home/eregon/.rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:1646:in `reduce'
    from /home/eregon/.rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:1646:in `new_blocked_by'
    from /home/eregon/.rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:255:in `zip_futures_on'
    from /home/eregon/.rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:241:in `zip_futures'
    from -:40:in `<main>'

And similar on truffleruby 24.1.0, like ruby 3.2.4, Oracle GraalVM Native [x86_64-linux]:

...
2024-10-01 20:37:02 +0200
98653
2024-10-01 20:37:03 +0200
/home/eregon/.rubies/truffleruby-24.1.0/lib/gems/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:1646:in `block in new_blocked_by': undefined method `promise' for #<Concurrent::Array:0x4d978> (NoMethodError)
    from <internal:core> core/enumerable.rb:528:in `inject'
    from /home/eregon/.rubies/truffleruby-24.1.0/lib/gems/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:1646:in `new_blocked_by'
    from /home/eregon/.rubies/truffleruby-24.1.0/lib/gems/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:255:in `zip_futures_on'
    from /home/eregon/.rubies/truffleruby-24.1.0/lib/gems/gems/concurrent-ruby-1.3.4/lib/concurrent-ruby/concurrent/promises.rb:241:in `zip_futures'
    from -:40:in `<main>'
eregon commented 1 month ago

Concurrent::Promises.future(counter) do doesn't execute on FixedThreadPool, see the documentation: https://ruby-concurrency.github.io/concurrent-ruby/1.3.4/Concurrent/Promises.html#future-class_method So yes this script creates many threads.

I'll close, this looks like a CRuby bug with many threads it seems.