ml.ruby-lang.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

ruby-core

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
ruby-core@ml.ruby-lang.org

September 2023

  • 2 participants
  • 194 discussions
[ruby-core:114634] [Ruby master Bug#19863] ruby 3.3.0dev rarely gets `[BUG] Segmentation fault`
by yahonda (Yasuo Honda) 06 Sep '23

06 Sep '23
Issue #19863 has been reported by yahonda (Yasuo Honda). ---------------------------------------- Bug #19863: ruby 3.3.0dev rarely gets `[BUG] Segmentation fault` https://bugs.ruby-lang.org/issues/19863 * Author: yahonda (Yasuo Honda) * Status: Open * Priority: Normal * ruby -v: ruby 3.3.0dev (2023-09-05T11:36:45Z master 7c8932365f) [x86_64-linux] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- Ruby on Rails Active Record unit tests against ruby 3.3.0dev rarely gets `[BUG] Segmentation fault` ### Steps to reproduce ``` git clone https://github.com/rails/rails cd rails rm Gemfile.lock bundle install cd activerecord while true; do bin/test test/cases/nested_attributes_test.rb --seed 6703 ; done ``` ### Expected behavior It should always pass. ### Actual behavior It rarely gets `[BUG] Segmentation fault` ``` Using sqlite3 Run options: --seed 6703 # Running: ............................................................................................................................/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:202: [BUG] Segmentation fault at 0x0000000000000000 ruby 3.3.0dev (2023-09-05T11:36:45Z master 7c8932365f) [x86_64-linux] -- Control frame information ----------------------------------------------- c:0080 p:---- s:0439 e:000438 CFUNC :lambda c:0079 p:0028 s:0435 E:000d38 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:202 c:0078 p:0006 s:0427 e:000426 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598 [FINISH] c:0077 p:---- s:0423 e:000422 CFUNC :each c:0076 p:0006 s:0419 e:000418 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598 c:0075 p:0060 s:0414 e:000413 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:109 c:0074 p:0009 s:0404 e:000403 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949 c:0073 p:0003 s:0399 e:000398 METHOD /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:441 c:0072 p:0004 s:0395 e:000394 BLOCK /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115 c:0071 p:0084 s:0392 e:000390 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:110 c:0070 p:0009 s:0381 e:000380 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949 c:0069 p:0004 s:0376 e:000375 METHOD /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115 c:0068 p:0028 s:0372 e:000371 METHOD /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:366 c:0067 p:0018 s:0366 e:000365 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:72 c:0066 p:0044 s:0360 e:000359 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:340 c:0065 p:0043 s:0350 e:000349 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:318 c:0064 p:0007 s:0343 e:000342 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:226 [FINISH] c:0063 p:---- s:0340 e:000339 CFUNC :instance_eval c:0062 p:0041 s:0336 e:000335 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:166 c:0061 p:0010 s:0330 e:000329 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:403 c:0060 p:0009 s:0324 e:000323 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:202 c:0059 p:0004 s:0321 e:000320 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:707 [FINISH] c:0058 p:---- s:0318 e:000317 CFUNC :catch c:0057 p:0010 s:0313 e:000312 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:706 c:0056 p:0040 s:0307 E:000788 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:203 c:0055 p:0006 s:0298 e:000297 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598 [FINISH] c:0054 p:---- s:0294 e:000293 CFUNC :each c:0053 p:0006 s:0290 e:000289 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598 c:0052 p:0060 s:0285 e:000284 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:109 c:0051 p:0009 s:0275 e:000274 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949 c:0050 p:0003 s:0270 e:000269 METHOD /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:441 c:0049 p:0004 s:0266 e:000265 BLOCK /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115 c:0048 p:0084 s:0263 e:000261 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:110 c:0047 p:0009 s:0252 e:000251 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949 c:0046 p:0004 s:0247 e:000246 METHOD /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115 c:0045 p:0028 s:0243 e:000242 METHOD /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:366 c:0044 p:0018 s:0237 e:000236 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:72 c:0043 p:0027 s:0231 e:000230 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:88 c:0042 p:0005 s:0226 e:000225 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:49 c:0041 p:0006 s:0221 e:000220 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:309 c:0040 p:0020 s:0218 e:000217 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:365 c:0039 p:0027 s:0215 e:000214 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:340 c:0038 p:0023 s:0206 e:000205 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:361 c:0037 p:0004 s:0199 e:000198 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:309 c:0036 p:0022 s:0194 e:000193 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/suppressor.rb:52 c:0035 p:0009 s:0189 e:000188 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/persistence.rb:895 c:0034 p:0020 s:0186 e:000185 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:365 c:0033 p:0012 s:0183 e:000182 BLOCK /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb:487 [FINISH] c:0032 p:---- s:0176 e:000175 CFUNC :handle_interrupt c:0031 p:0015 s:0171 e:000170 BLOCK /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb:23 [FINISH] c:0030 p:---- s:0168 e:000167 CFUNC :handle_interrupt c:0029 p:0007 s:0163 e:000162 METHOD /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb:19 c:0028 p:0008 s:0158 e:000157 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb:484 c:0027 p:0042 s:0151 e:000150 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:342 c:0026 p:0023 s:0142 e:000141 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:361 c:0025 p:0004 s:0135 e:000134 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/persistence.rb:893 c:0024 p:0015 s:0130 e:000129 METHOD /home/yahonda/src/github.com/rails/rails/activerecord/test/cases/nested_attributes_test.rb:388 c:0023 p:0012 s:0126 e:000125 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:94 c:0022 p:0002 s:0123 e:000122 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:191 c:0021 p:0004 s:0118 e:000117 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:89 c:0020 p:0008 s:0115 e:000114 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:296 c:0019 p:0004 s:0110 e:000109 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:88 c:0018 p:0022 s:0107 e:000106 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:405 c:0017 p:0027 s:0099 E:000418 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:239 c:0016 p:0004 s:0092 E:001630 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:87 c:0015 p:0008 s:0088 e:000087 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:1091 c:0014 p:0019 s:0081 e:000079 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:371 c:0013 p:0009 s:0073 e:000072 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:358 [FINISH] c:0012 p:---- s:0069 e:000068 CFUNC :each c:0011 p:0005 s:0065 e:000064 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:357 c:0010 p:0022 s:0062 e:000061 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:405 c:0009 p:0019 s:0054 E:000c98 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:392 c:0008 p:0111 s:0047 E:000868 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:356 c:0007 p:0030 s:0038 e:000037 METHOD /home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/line_filtering.rb:10 c:0006 p:0008 s:0032 e:000031 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:182 [FINISH] c:0005 p:---- s:0028 e:000027 CFUNC :map c:0004 p:0025 s:0024 e:000023 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:182 c:0003 p:0133 s:0015 e:000014 METHOD /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:159 c:0002 p:0045 s:0008 E:002210 BLOCK /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:83 [FINISH] c:0001 p:0000 s:0003 E:0019e0 DUMMY [FINISH] -- Ruby level backtrace information ---------------------------------------- /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:83:in `block in autorun' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:159:in `run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:182:in `__run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:182:in `map' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:182:in `block in __run' /home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/line_filtering.rb:10:in `run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:356:in `run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:392:in `with_info_handler' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:405:in `on_signal' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:357:in `block in run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:357:in `each' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:358:in `block (2 levels) in run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:371:in `run_one_method' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:1091:in `run_one_method' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:87:in `run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:239:in `with_info_handler' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:405:in `on_signal' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:88:in `block in run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest.rb:296:in `time_it' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:89:in `block (2 levels) in run' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:191:in `capture_exceptions' /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.19.0/lib/minitest/test.rb:94:in `block (3 levels) in run' /home/yahonda/src/github.com/rails/rails/activerecord/test/cases/nested_attributes_test.rb:388:in `test_should_create_new_model_when_nothing_is_there_and_update_only_is_true' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/persistence.rb:893:in `update' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:361:in `with_transaction_returning_status' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:342:in `transaction' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb:484:in `within_new_transaction' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb:19:in `synchronize' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb:19:in `handle_interrupt' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb:23:in `block in synchronize' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb:23:in `handle_interrupt' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb:487:in `block in within_new_transaction' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:365:in `block in with_transaction_returning_status' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/persistence.rb:895:in `block in update' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/suppressor.rb:52:in `save' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:309:in `save' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:361:in `with_transaction_returning_status' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:340:in `transaction' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:365:in `block in with_transaction_returning_status' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/transactions.rb:309:in `block in save' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:49:in `save' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:88:in `perform_validations' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:72:in `valid?' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:366:in `valid?' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115:in `run_validations!' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949:in `_run_validation_callbacks' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:110:in `run_callbacks' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115:in `block in run_validations!' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:441:in `run_validations!' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949:in `_run_validate_callbacks' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:109:in `run_callbacks' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598:in `invoke_before' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598:in `each' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598:in `block in invoke_before' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:203:in `block in halting' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:706:in `block in default_terminator' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:706:in `catch' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:707:in `block (2 levels) in default_terminator' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:202:in `block (2 levels) in halting' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:403:in `block in make_lambda' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:166:in `block in define_non_cyclic_method' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:166:in `instance_eval' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:226:in `block in define_autosave_validation_callbacks' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:318:in `validate_single_association' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/autosave_association.rb:340:in `association_valid?' /home/yahonda/src/github.com/rails/rails/activerecord/lib/active_record/validations.rb:72:in `valid?' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:366:in `valid?' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115:in `run_validations!' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949:in `_run_validation_callbacks' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:110:in `run_callbacks' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations/callbacks.rb:115:in `block in run_validations!' /home/yahonda/src/github.com/rails/rails/activemodel/lib/active_model/validations.rb:441:in `run_validations!' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:949:in `_run_validate_callbacks' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:109:in `run_callbacks' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598:in `invoke_before' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598:in `each' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:598:in `block in invoke_before' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:202:in `block in halting' /home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/callbacks.rb:202:in `lambda' -- Threading information --------------------------------------------------- Total ractor count: 1 Ruby thread count for this ractor: 18 -- Machine register context ------------------------------------------------ RIP: 0x000055f567cda503 RBP: 0x000055f56a042140 RSP: 0x00007fffd4173260 RAX: 0x3333333333334278 RBX: 0x000000000000000e RCX: 0x0000000000000010 RDX: 0x0000000000003d13 RDI: 0x000055f56c3f9840 RSI: 0xce2d7c6d0cd80000 R8: 0x000055f56c3f98d8 R9: 0x0000000000000011 R10: 0x0000000000000012 R11: 0x000055f56c2ee6c8 R12: 0x00007fc2a22d0408 R13: 0x0000000000000000 R14: 0x000055f56a70ba70 R15: 0x00007fc2a22c0008 EFL: 0x0000000000010a47 -- C level backtrace information ------------------------------------------- /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_bugreport+0x5cb) [0x55f567ebfb0b] /home/yahonda/src/github.com/ruby/ruby/vm_dump.c:772 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_bug_for_fatal_signal+0xec) [0x55f5680496fc] /home/yahonda/src/github.com/ruby/ruby/error.c:820 /home/yahonda/.rbenv/versions/trunk/bin/ruby(sigsegv+0x4f) [0x55f567e0cddf] /home/yahonda/src/github.com/ruby/ruby/signal.c:920 /lib/x86_64-linux-gnu/libc.so.6(__restore_rt+0x0) [0x7fc2a243c4b0] ./signal/sigaction.c:34 /home/yahonda/.rbenv/versions/trunk/bin/ruby(gc_marks_finish+0x83) [0x55f567cda503] /home/yahonda/src/github.com/ruby/ruby/gc.c:1673 /home/yahonda/.rbenv/versions/trunk/bin/ruby(gc_continue+0x379) [0x55f567cdb3c9] /home/yahonda/src/github.com/ruby/ruby/gc.c:8537 /home/yahonda/.rbenv/versions/trunk/bin/ruby(newobj_alloc+0x238) [0x55f567cdcb48] /home/yahonda/src/github.com/ruby/ruby/gc.c:2723 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_data_typed_object_zalloc+0x131) [0x55f567ce1a51] /home/yahonda/src/github.com/ruby/ruby/gc.c:2835 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_make_proc_lambda+0x49) [0x55f567e9cc29] /home/yahonda/src/github.com/ruby/ruby/vm.c:1037 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_yield+0x70) [0x55f567ea6d10] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ary_each+0x3c) [0x55f567fa8e5c] /home/yahonda/src/github.com/ruby/ruby/array.c:2532 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(yield_under+0x1a9) [0x55f567ea5db9] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_obj_instance_eval_internal+0x62) [0x55f567ea5fc2] /home/yahonda/src/github.com/ruby/ruby/vm_eval.c:1989 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(catch_i+0x230) [0x55f567eb7ed0] /home/yahonda/src/github.com/ruby/ruby/vm.c:1437 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_catch_protect+0xd8) [0x55f567e9bb38] /home/yahonda/src/github.com/ruby/ruby/vm_eval.c:2364 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_f_catch+0x44) [0x55f567e9be64] /home/yahonda/src/github.com/ruby/ruby/vm_eval.c:2390 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_yield+0x70) [0x55f567ea6d10] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ary_each+0x3c) [0x55f567fa8e5c] /home/yahonda/src/github.com/ruby/ruby/array.c:2532 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_yield+0x70) [0x55f567ea6d10] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_thread_s_handle_interrupt+0x156) [0x55f567e50e26] /home/yahonda/src/github.com/ruby/ruby/thread.c:2165 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_yield+0x70) [0x55f567ea6d10] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_thread_s_handle_interrupt+0x156) [0x55f567e50e26] /home/yahonda/src/github.com/ruby/ruby/thread.c:2165 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_yield+0x70) [0x55f567ea6d10] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ary_each+0x3c) [0x55f567fa8e5c] /home/yahonda/src/github.com/ruby/ruby/array.c:2532 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_yield+0x70) [0x55f567ea6d10] /home/yahonda/src/github.com/ruby/ruby/vm.c:1562 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ary_collect+0x7e) [0x55f567faf07e] /home/yahonda/src/github.com/ruby/ruby/array.c:3624 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_call_cfunc_with_frame+0x12c) [0x55f567e9365c] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:3474 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_sendish.constprop.0+0x101) [0x55f567e994a1] /home/yahonda/src/github.com/ruby/ruby/vm_insnhelper.c:5552 /home/yahonda/.rbenv/versions/trunk/bin/ruby(vm_exec_core+0x272c) [0x55f567eb388c] /home/yahonda/src/github.com/ruby/ruby/insns.def:815 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_exec+0x272) [0x55f567ea1f52] /home/yahonda/src/github.com/ruby/ruby/vm.c:2428 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_vm_invoke_proc+0x66) [0x55f567ea7336] /home/yahonda/src/github.com/ruby/ruby/vm.c:1656 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_proc_call+0x4e) [0x55f567da2c4e] /home/yahonda/src/github.com/ruby/ruby/proc.c:982 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ec_exec_end_proc+0x165) [0x55f567cb79a5] /home/yahonda/src/github.com/ruby/ruby/eval_jump.c:105 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ec_teardown+0xc3) [0x55f567cb7b73] /home/yahonda/src/github.com/ruby/ruby/eval.c:159 /home/yahonda/.rbenv/versions/trunk/bin/ruby(rb_ec_cleanup+0x149) [0x55f567cb7d69] /home/yahonda/src/github.com/ruby/ruby/eval.c:212 /home/yahonda/.rbenv/versions/trunk/bin/ruby(ruby_run_node+0x56) [0x55f567cb8706] /home/yahonda/src/github.com/ruby/ruby/eval.c:328 /home/yahonda/.rbenv/versions/trunk/bin/ruby(main+0x66) [0x55f567cb2f26] ./main.c:39 -- Other runtime information ----------------------------------------------- * Process memory map: 55f567c68000-55f567ca6000 r--p 00000000 103:02 24117720 /home/yahonda/.rbenv/versions/trunk/bin/ruby 55f567ca6000-55f56806b000 r-xp 0003e000 103:02 24117720 /home/yahonda/.rbenv/versions/trunk/bin/ruby 55f56806b000-55f5681e6000 r--p 00403000 103:02 24117720 /home/yahonda/.rbenv/versions/trunk/bin/ruby 55f5681e6000-55f5681fb000 r--p 0057d000 103:02 24117720 /home/yahonda/.rbenv/versions/trunk/bin/ruby 55f5681fb000-55f568201000 rw-p 00592000 103:02 24117720 /home/yahonda/.rbenv/versions/trunk/bin/ruby 55f568201000-55f568215000 rw-p 00000000 00:00 0 55f56a03e000-55f56c5ea000 rw-p 00000000 00:00 0 [heap] 7fc250000000-7fc250021000 rw-p 00000000 00:00 0 7fc250021000-7fc254000000 ---p 00000000 00:00 0 7fc258000000-7fc258021000 rw-p 00000000 00:00 0 7fc258021000-7fc25c000000 ---p 00000000 00:00 0 7fc25c000000-7fc25c021000 rw-p 00000000 00:00 0 7fc25c021000-7fc260000000 ---p 00000000 00:00 0 7fc261005000-7fc261200000 r--s 00000000 103:02 42994012 /usr/lib/x86_64-linux-gnu/libc.so.6 7fc261200000-7fc263b47000 r--s 00000000 103:02 24117720 /home/yahonda/.rbenv/versions/trunk/bin/ruby 7fc263c20000-7fc263df0000 rw-p 00000000 00:00 0 7fc263dff000-7fc263e00000 ---p 00000000 00:00 0 7fc263e00000-7fc264021000 rw-p 00000000 00:00 0 7fc264021000-7fc268000000 ---p 00000000 00:00 0 7fc268000000-7fc268021000 rw-p 00000000 00:00 0 7fc268021000-7fc26c000000 ---p 00000000 00:00 0 7fc26c000000-7fc26c021000 rw-p 00000000 00:00 0 7fc26c021000-7fc270000000 ---p 00000000 00:00 0 7fc270000000-7fc270021000 rw-p 00000000 00:00 0 7fc270021000-7fc274000000 ---p 00000000 00:00 0 7fc274000000-7fc274021000 rw-p 00000000 00:00 0 7fc274021000-7fc278000000 ---p 00000000 00:00 0 7fc278000000-7fc278021000 rw-p 00000000 00:00 0 7fc278021000-7fc27c000000 ---p 00000000 00:00 0 7fc27c000000-7fc27c021000 rw-p 00000000 00:00 0 7fc27c021000-7fc280000000 ---p 00000000 00:00 0 7fc280000000-7fc280021000 rw-p 00000000 00:00 0 7fc280021000-7fc284000000 ---p 00000000 00:00 0 7fc284000000-7fc284021000 rw-p 00000000 00:00 0 7fc284021000-7fc288000000 ---p 00000000 00:00 0 7fc288000000-7fc288021000 rw-p 00000000 00:00 0 7fc288021000-7fc28c000000 ---p 00000000 00:00 0 7fc28c000000-7fc28c021000 rw-p 00000000 00:00 0 7fc28c021000-7fc290000000 ---p 00000000 00:00 0 7fc290000000-7fc290021000 rw-p 00000000 00:00 0 7fc290021000-7fc294000000 ---p 00000000 00:00 0 7fc294000000-7fc294021000 rw-p 00000000 00:00 0 7fc294021000-7fc298000000 ---p 00000000 00:00 0 7fc298000000-7fc298021000 rw-p 00000000 00:00 0 7fc298021000-7fc29c000000 ---p 00000000 00:00 0 7fc29c010000-7fc29c130000 rw-p 00000000 00:00 0 7fc29c131000-7fc29c132000 ---p 00000000 00:00 0 7fc29c132000-7fc29c332000 rw-p 00000000 00:00 0 7fc29c332000-7fc29c333000 ---p 00000000 00:00 0 7fc29c333000-7fc29c533000 rw-p 00000000 00:00 0 7fc29c533000-7fc29c534000 ---p 00000000 00:00 0 7fc29c534000-7fc29c734000 rw-p 00000000 00:00 0 7fc29c734000-7fc29c735000 ---p 00000000 00:00 0 7fc29c735000-7fc29c935000 rw-p 00000000 00:00 0 7fc29c935000-7fc29c936000 ---p 00000000 00:00 0 7fc29c936000-7fc29cb36000 rw-p 00000000 00:00 0 7fc29cb36000-7fc29cb37000 ---p 00000000 00:00 0 7fc29cb37000-7fc29cd37000 rw-p 00000000 00:00 0 7fc29cd37000-7fc29cd38000 ---p 00000000 00:00 0 7fc29cd38000-7fc29cf38000 rw-p 00000000 00:00 0 7fc29cf38000-7fc29cf39000 ---p 00000000 00:00 0 7fc29cf39000-7fc29d139000 rw-p 00000000 00:00 0 7fc29d139000-7fc29d13a000 ---p 00000000 00:00 0 7fc29d13a000-7fc29d33a000 rw-p 00000000 00:00 0 7fc29d33a000-7fc29d33b000 ---p 00000000 00:00 0 7fc29d33b000-7fc29d53b000 rw-p 00000000 00:00 0 7fc29d53b000-7fc29d53c000 ---p 00000000 00:00 0 7fc29d53c000-7fc29d73c000 rw-p 00000000 00:00 0 7fc29d73c000-7fc29d73d000 ---p 00000000 00:00 0 7fc29d73d000-7fc29d93d000 rw-p 00000000 00:00 0 7fc29d93d000-7fc29d93e000 ---p 00000000 00:00 0 7fc29d93e000-7fc29db3e000 rw-p 00000000 00:00 0 7fc29db3e000-7fc29db3f000 ---p 00000000 00:00 0 7fc29db3f000-7fc29dd3f000 rw-p 00000000 00:00 0 7fc29dd3f000-7fc29dd40000 ---p 00000000 00:00 0 7fc29dd40000-7fc29e1f0000 rw-p 00000000 00:00 0 7fc29e1fb000-7fc29e1fc000 ---p 00000000 00:00 0 7fc29e1fc000-7fc29e3fc000 rw-p 00000000 00:00 0 7fc29e3fc000-7fc29e409000 r--p 00000000 103:02 28454180 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/sqlite3-1.6.3/lib/sqlite3/sqlite3_native.so 7fc29e409000-7fc29e521000 r-xp 0000d000 103:02 28454180 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/sqlite3-1.6.3/lib/sqlite3/sqlite3_native.so 7fc29e521000-7fc29e558000 r--p 00125000 103:02 28454180 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/sqlite3-1.6.3/lib/sqlite3/sqlite3_native.so 7fc29e558000-7fc29e55b000 r--p 0015c000 103:02 28454180 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/sqlite3-1.6.3/lib/sqlite3/sqlite3_native.so 7fc29e55b000-7fc29e55f000 rw-p 0015f000 103:02 28454180 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/sqlite3-1.6.3/lib/sqlite3/sqlite3_native.so 7fc29e55f000-7fc29e670000 rw-p 00000000 00:00 0 7fc29e67f000-7fc29e800000 rw-p 00000000 00:00 0 7fc29e800000-7fc29e8b2000 r--p 00000000 103:02 42991805 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 7fc29e8b2000-7fc29eb20000 r-xp 000b2000 103:02 42991805 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 7fc29eb20000-7fc29ebf1000 r--p 00320000 103:02 42991805 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 7fc29ebf1000-7fc29ec4c000 r--p 003f0000 103:02 42991805 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 7fc29ec4c000-7fc29ec4f000 rw-p 0044b000 103:02 42991805 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 7fc29ec4f000-7fc29ec52000 rw-p 00000000 00:00 0 7fc29ec70000-7fc29ecf0000 rw-p 00000000 00:00 0 7fc29ecff000-7fc29ed90000 rw-p 00000000 00:00 0 7fc29ed93000-7fc29edb1000 r--p 00000000 103:02 42991808 /usr/lib/x86_64-linux-gnu/libssl.so.3 7fc29edb1000-7fc29ee0e000 r-xp 0001e000 103:02 42991808 /usr/lib/x86_64-linux-gnu/libssl.so.3 7fc29ee0e000-7fc29ee2a000 r--p 0007b000 103:02 42991808 /usr/lib/x86_64-linux-gnu/libssl.so.3 7fc29ee2a000-7fc29ee34000 r--p 00096000 103:02 42991808 /usr/lib/x86_64-linux-gnu/libssl.so.3 7fc29ee34000-7fc29ee38000 rw-p 000a0000 103:02 42991808 /usr/lib/x86_64-linux-gnu/libssl.so.3 7fc29ee4c000-7fc29ee61000 r--p 00000000 103:02 24121917 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/openssl.so 7fc29ee61000-7fc29ee99000 r-xp 00015000 103:02 24121917 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/openssl.so 7fc29ee99000-7fc29eeab000 r--p 0004d000 103:02 24121917 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/openssl.so 7fc29eeab000-7fc29eead000 r--p 0005f000 103:02 24121917 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/openssl.so 7fc29eead000-7fc29eeaf000 rw-p 00061000 103:02 24121917 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/openssl.so 7fc29eeaf000-7fc29eec0000 rw-p 00000000 00:00 0 7fc29eecc000-7fc29eecf000 r--p 00000000 103:02 24121920 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/zlib.so 7fc29eecf000-7fc29eedb000 r-xp 00003000 103:02 24121920 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/zlib.so 7fc29eedb000-7fc29eede000 r--p 0000f000 103:02 24121920 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/zlib.so 7fc29eede000-7fc29eedf000 r--p 00011000 103:02 24121920 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/zlib.so 7fc29eedf000-7fc29eee0000 rw-p 00012000 103:02 24121920 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/zlib.so 7fc29eee0000-7fc29eef0000 rw-p 00000000 00:00 0 7fc29eeff000-7fc29eff0000 rw-p 00000000 00:00 0 7fc29efff000-7fc29f005000 r--p 00000000 103:02 24121909 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/socket.so 7fc29f005000-7fc29f026000 r-xp 00006000 103:02 24121909 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/socket.so 7fc29f026000-7fc29f02e000 r--p 00027000 103:02 24121909 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/socket.so 7fc29f02e000-7fc29f02f000 r--p 0002e000 103:02 24121909 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/socket.so 7fc29f02f000-7fc29f030000 rw-p 0002f000 103:02 24121909 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/socket.so 7fc29f030000-7fc29f130000 rw-p 00000000 00:00 0 7fc29f135000-7fc29f13c000 r--p 00000000 103:02 24120698 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/ripper.so 7fc29f13c000-7fc29f163000 r-xp 00007000 103:02 24120698 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/ripper.so 7fc29f163000-7fc29f17d000 r--p 0002e000 103:02 24120698 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/ripper.so 7fc29f17d000-7fc29f17f000 r--p 00047000 103:02 24120698 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/ripper.so 7fc29f17f000-7fc29f180000 rw-p 00049000 103:02 24120698 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/ripper.so 7fc29f180000-7fc29f1d0000 rw-p 00000000 00:00 0 7fc29f1d2000-7fc29f1d5000 r--p 00000000 103:02 24121911 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/date_core.so 7fc29f1d5000-7fc29f205000 r-xp 00003000 103:02 24121911 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/date_core.so 7fc29f205000-7fc29f20d000 r--p 00033000 103:02 24121911 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/date_core.so 7fc29f20d000-7fc29f20e000 r--p 0003b000 103:02 24121911 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/date_core.so 7fc29f20e000-7fc29f20f000 rw-p 0003c000 103:02 24121911 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/date_core.so 7fc29f20f000-7fc29f250000 rw-p 00000000 00:00 0 7fc29f256000-7fc29f257000 r--p 00000000 103:02 24121900 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16be.so 7fc29f257000-7fc29f258000 r-xp 00001000 103:02 24121900 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16be.so 7fc29f258000-7fc29f259000 r--p 00002000 103:02 24121900 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16be.so 7fc29f259000-7fc29f25a000 r--p 00002000 103:02 24121900 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16be.so 7fc29f25a000-7fc29f25b000 rw-p 00003000 103:02 24121900 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16be.so 7fc29f25b000-7fc29f25d000 r--p 00000000 103:02 42999431 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.9 7fc29f25d000-7fc29f276000 r-xp 00002000 103:02 42999431 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.9 7fc29f276000-7fc29f27a000 r--p 0001b000 103:02 42999431 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.9 7fc29f27a000-7fc29f27b000 r--p 0001f000 103:02 42999431 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.9 7fc29f27b000-7fc29f27c000 rw-p 00020000 103:02 42999431 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.9 7fc29f27f000-7fc29f281000 r--p 00000000 103:02 24121916 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/digest.so 7fc29f281000-7fc29f283000 r-xp 00002000 103:02 24121916 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/digest.so 7fc29f283000-7fc29f284000 r--p 00004000 103:02 24121916 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/digest.so 7fc29f284000-7fc29f285000 r--p 00004000 103:02 24121916 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/digest.so 7fc29f285000-7fc29f286000 rw-p 00005000 103:02 24121916 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/digest.so 7fc29f286000-7fc29f288000 r--p 00000000 103:02 24120696 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/strscan.so 7fc29f288000-7fc29f28c000 r-xp 00002000 103:02 24120696 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/strscan.so 7fc29f28c000-7fc29f28e000 r--p 00006000 103:02 24120696 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/strscan.so 7fc29f28e000-7fc29f28f000 r--p 00007000 103:02 24120696 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/strscan.so 7fc29f28f000-7fc29f290000 rw-p 00008000 103:02 24120696 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/strscan.so 7fc29f290000-7fc29f380000 rw-p 00000000 00:00 0 7fc29f384000-7fc29f386000 r--p 00000000 103:02 24121915 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/stringio.so 7fc29f386000-7fc29f38b000 r-xp 00002000 103:02 24121915 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/stringio.so 7fc29f38b000-7fc29f38d000 r--p 00007000 103:02 24121915 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/stringio.so 7fc29f38d000-7fc29f38e000 r--p 00008000 103:02 24121915 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/stringio.so 7fc29f38e000-7fc29f38f000 rw-p 00009000 103:02 24121915 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/stringio.so 7fc29f393000-7fc29f395000 r--p 00000000 103:02 25560080 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/generator.so 7fc29f395000-7fc29f39c000 r-xp 00002000 103:02 25560080 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/generator.so 7fc29f39c000-7fc29f39e000 r--p 00009000 103:02 25560080 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/generator.so 7fc29f39e000-7fc29f39f000 r--p 0000a000 103:02 25560080 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/generator.so 7fc29f39f000-7fc29f3a0000 rw-p 0000b000 103:02 25560080 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/generator.so 7fc29f3a0000-7fc29f400000 rw-p 00000000 00:00 0 7fc29f400000-7fc29f401000 r--p 00000000 103:02 24121895 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16le.so 7fc29f401000-7fc29f402000 r-xp 00001000 103:02 24121895 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16le.so 7fc29f402000-7fc29f403000 r--p 00002000 103:02 24121895 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16le.so 7fc29f403000-7fc29f404000 r--p 00002000 103:02 24121895 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16le.so 7fc29f404000-7fc29f405000 rw-p 00003000 103:02 24121895 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/utf_16le.so 7fc29f405000-7fc29f407000 r--p 00000000 103:02 25560079 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/parser.so 7fc29f407000-7fc29f40b000 r-xp 00002000 103:02 25560079 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/parser.so 7fc29f40b000-7fc29f40c000 r--p 00006000 103:02 25560079 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/parser.so 7fc29f40c000-7fc29f40d000 r--p 00006000 103:02 25560079 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/parser.so 7fc29f40d000-7fc29f40e000 rw-p 00007000 103:02 25560079 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/json/ext/parser.so 7fc29f40e000-7fc29f411000 r--p 00000000 103:02 24121913 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/bigdecimal.so 7fc29f411000-7fc29f42a000 r-xp 00003000 103:02 24121913 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/bigdecimal.so 7fc29f42a000-7fc29f42e000 r--p 0001c000 103:02 24121913 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/bigdecimal.so 7fc29f42e000-7fc29f42f000 r--p 0001f000 103:02 24121913 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/bigdecimal.so 7fc29f42f000-7fc29f430000 rw-p 00020000 103:02 24121913 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/bigdecimal.so 7fc29f430000-7fc29f790000 rw-p 00000000 00:00 0 7fc29f790000-7fc29f791000 ---p 00000000 00:00 0 7fc29f791000-7fc29f832000 rw-p 00000000 00:00 0 7fc29f832000-7fc29f833000 ---p 00000000 00:00 0 7fc29f833000-7fc29f8d4000 rw-p 00000000 00:00 0 7fc29f8d4000-7fc29f8d5000 ---p 00000000 00:00 0 7fc29f8d5000-7fc29f976000 rw-p 00000000 00:00 0 7fc29f976000-7fc29f977000 ---p 00000000 00:00 0 7fc29f977000-7fc29fa18000 rw-p 00000000 00:00 0 7fc29fa18000-7fc29fa19000 ---p 00000000 00:00 0 7fc29fa19000-7fc29faba000 rw-p 00000000 00:00 0 7fc29faba000-7fc29fabb000 ---p 00000000 00:00 0 7fc29fabb000-7fc29fb5c000 rw-p 00000000 00:00 0 7fc29fb5c000-7fc29fb5d000 ---p 00000000 00:00 0 7fc29fb5d000-7fc29fbfe000 rw-p 00000000 00:00 0 7fc29fbfe000-7fc29fbff000 ---p 00000000 00:00 0 7fc29fbff000-7fc29fca0000 rw-p 00000000 00:00 0 7fc29fca0000-7fc29fca1000 ---p 00000000 00:00 0 7fc29fca1000-7fc29fd42000 rw-p 00000000 00:00 0 7fc29fd42000-7fc29fd43000 ---p 00000000 00:00 0 7fc29fd43000-7fc29fde4000 rw-p 00000000 00:00 0 7fc29fde4000-7fc29fde5000 ---p 00000000 00:00 0 7fc29fde5000-7fc29fe86000 rw-p 00000000 00:00 0 7fc29fe86000-7fc29fe87000 ---p 00000000 00:00 0 7fc29fe87000-7fc29ff28000 rw-p 00000000 00:00 0 7fc29ff28000-7fc29ff29000 ---p 00000000 00:00 0 7fc29ff29000-7fc29ffca000 rw-p 00000000 00:00 0 7fc29ffca000-7fc29ffcb000 ---p 00000000 00:00 0 7fc29ffcb000-7fc2a006c000 rw-p 00000000 00:00 0 7fc2a006c000-7fc2a006d000 ---p 00000000 00:00 0 7fc2a006d000-7fc2a010e000 rw-p 00000000 00:00 0 7fc2a010e000-7fc2a010f000 ---p 00000000 00:00 0 7fc2a010f000-7fc2a01b0000 rw-p 00000000 00:00 0 7fc2a01b0000-7fc2a01b1000 ---p 00000000 00:00 0 7fc2a01b1000-7fc2a0252000 rw-p 00000000 00:00 0 7fc2a0252000-7fc2a0253000 ---p 00000000 00:00 0 7fc2a0253000-7fc2a02f4000 rw-p 00000000 00:00 0 7fc2a02f4000-7fc2a02f5000 ---p 00000000 00:00 0 7fc2a02f5000-7fc2a0396000 rw-p 00000000 00:00 0 7fc2a0396000-7fc2a0397000 ---p 00000000 00:00 0 7fc2a0397000-7fc2a0438000 rw-p 00000000 00:00 0 7fc2a0438000-7fc2a0439000 ---p 00000000 00:00 0 7fc2a0439000-7fc2a04da000 rw-p 00000000 00:00 0 7fc2a04da000-7fc2a04db000 ---p 00000000 00:00 0 7fc2a04db000-7fc2a057c000 rw-p 00000000 00:00 0 7fc2a057c000-7fc2a057d000 ---p 00000000 00:00 0 7fc2a057d000-7fc2a061e000 rw-p 00000000 00:00 0 7fc2a061e000-7fc2a061f000 ---p 00000000 00:00 0 7fc2a061f000-7fc2a06c0000 rw-p 00000000 00:00 0 7fc2a06c0000-7fc2a06c1000 ---p 00000000 00:00 0 7fc2a06c1000-7fc2a0762000 rw-p 00000000 00:00 0 7fc2a0762000-7fc2a0763000 ---p 00000000 00:00 0 7fc2a0763000-7fc2a0804000 rw-p 00000000 00:00 0 7fc2a0804000-7fc2a0805000 ---p 00000000 00:00 0 7fc2a0805000-7fc2a08a6000 rw-p 00000000 00:00 0 7fc2a08a6000-7fc2a08a7000 ---p 00000000 00:00 0 7fc2a08a7000-7fc2a0948000 rw-p 00000000 00:00 0 7fc2a0948000-7fc2a0949000 ---p 00000000 00:00 0 7fc2a0949000-7fc2a09ea000 rw-p 00000000 00:00 0 7fc2a09ea000-7fc2a09eb000 ---p 00000000 00:00 0 7fc2a09eb000-7fc2a0a8c000 rw-p 00000000 00:00 0 7fc2a0a8c000-7fc2a0a8d000 ---p 00000000 00:00 0 7fc2a0a8d000-7fc2a0b2e000 rw-p 00000000 00:00 0 7fc2a0b2e000-7fc2a0b2f000 ---p 00000000 00:00 0 7fc2a0b2f000-7fc2a1c00000 rw-p 00000000 00:00 0 7fc2a1c00000-7fc2a227b000 r--p 00000000 103:02 42992002 /usr/lib/locale/locale-archive 7fc2a227b000-7fc2a227c000 r--p 00000000 103:02 25560087 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/nonblock.so 7fc2a227c000-7fc2a227d000 r-xp 00001000 103:02 25560087 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/nonblock.so 7fc2a227d000-7fc2a227e000 r--p 00002000 103:02 25560087 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/nonblock.so 7fc2a227e000-7fc2a227f000 r--p 00002000 103:02 25560087 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/nonblock.so 7fc2a227f000-7fc2a2280000 rw-p 00003000 103:02 25560087 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/nonblock.so 7fc2a2280000-7fc2a2290000 rw-p 00000000 00:00 0 7fc2a2291000-7fc2a2292000 r--p 00000000 103:02 25560082 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/erb/escape.so 7fc2a2292000-7fc2a2293000 r-xp 00001000 103:02 25560082 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/erb/escape.so 7fc2a2293000-7fc2a2294000 r--p 00002000 103:02 25560082 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/erb/escape.so 7fc2a2294000-7fc2a2295000 r--p 00002000 103:02 25560082 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/erb/escape.so 7fc2a2295000-7fc2a2296000 rw-p 00003000 103:02 25560082 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/erb/escape.so 7fc2a2296000-7fc2a2299000 r--p 00000000 103:02 24121924 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/psych.so 7fc2a2299000-7fc2a229d000 r-xp 00003000 103:02 24121924 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/psych.so 7fc2a229d000-7fc2a229e000 r--p 00007000 103:02 24121924 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/psych.so 7fc2a229e000-7fc2a229f000 r--p 00007000 103:02 24121924 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/psych.so 7fc2a229f000-7fc2a22a0000 rw-p 00008000 103:02 24121924 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/psych.so 7fc2a22a0000-7fc2a22f0000 rw-p 00000000 00:00 0 7fc2a22f1000-7fc2a22f2000 r--p 00000000 103:02 25560154 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/wait.so 7fc2a22f2000-7fc2a22f3000 r-xp 00001000 103:02 25560154 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/wait.so 7fc2a22f3000-7fc2a22f4000 r--p 00002000 103:02 25560154 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/wait.so 7fc2a22f4000-7fc2a22f5000 r--p 00002000 103:02 25560154 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/wait.so 7fc2a22f5000-7fc2a22f6000 rw-p 00003000 103:02 25560154 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/io/wait.so 7fc2a22f6000-7fc2a22f8000 r--p 00000000 103:02 24121919 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/etc.so 7fc2a22f8000-7fc2a22fb000 r-xp 00002000 103:02 24121919 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/etc.so 7fc2a22fb000-7fc2a22fd000 r--p 00005000 103:02 24121919 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/etc.so 7fc2a22fd000-7fc2a22fe000 r--p 00006000 103:02 24121919 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/etc.so 7fc2a22fe000-7fc2a22ff000 rw-p 00007000 103:02 24121919 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/etc.so 7fc2a22ff000-7fc2a2400000 rw-p 00000000 00:00 0 7fc2a2400000-7fc2a2422000 r--p 00000000 103:02 42994012 /usr/lib/x86_64-linux-gnu/libc.so.6 7fc2a2422000-7fc2a259a000 r-xp 00022000 103:02 42994012 /usr/lib/x86_64-linux-gnu/libc.so.6 7fc2a259a000-7fc2a25f2000 r--p 0019a000 103:02 42994012 /usr/lib/x86_64-linux-gnu/libc.so.6 7fc2a25f2000-7fc2a25f6000 r--p 001f1000 103:02 42994012 /usr/lib/x86_64-linux-gnu/libc.so.6 7fc2a25f6000-7fc2a25f8000 rw-p 001f5000 103:02 42994012 /usr/lib/x86_64-linux-gnu/libc.so.6 7fc2a25f8000-7fc2a2605000 rw-p 00000000 00:00 0 7fc2a2609000-7fc2a260a000 r--p 00000000 103:02 24120702 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/cgi/escape.so 7fc2a260a000-7fc2a260c000 r-xp 00001000 103:02 24120702 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/cgi/escape.so 7fc2a260c000-7fc2a260d000 r--p 00003000 103:02 24120702 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/cgi/escape.so 7fc2a260d000-7fc2a260e000 r--p 00003000 103:02 24120702 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/cgi/escape.so 7fc2a260e000-7fc2a260f000 rw-p 00004000 103:02 24120702 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/cgi/escape.so 7fc2a260f000-7fc2a2611000 r--p 00000000 103:02 24121908 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/pathname.so 7fc2a2611000-7fc2a2617000 r-xp 00002000 103:02 24121908 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/pathname.so 7fc2a2617000-7fc2a2619000 r--p 00008000 103:02 24121908 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/pathname.so 7fc2a2619000-7fc2a261a000 r--p 00009000 103:02 24121908 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/pathname.so 7fc2a261a000-7fc2a261b000 rw-p 0000a000 103:02 24121908 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/pathname.so 7fc2a261b000-7fc2a261c000 r--p 00000000 103:02 24120700 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/monitor.so 7fc2a261c000-7fc2a261d000 r-xp 00001000 103:02 24120700 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/monitor.so 7fc2a261d000-7fc2a261e000 r--p 00002000 103:02 24120700 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/monitor.so 7fc2a261e000-7fc2a261f000 r--p 00002000 103:02 24120700 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/monitor.so 7fc2a261f000-7fc2a2620000 rw-p 00003000 103:02 24120700 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/monitor.so 7fc2a2620000-7fc2a2640000 rw-p 00000000 00:00 0 7fc2a2642000-7fc2a2647000 rw-p 00000000 00:00 0 7fc2a2647000-7fc2a264a000 r--p 00000000 103:02 43000075 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc2a264a000-7fc2a2665000 r-xp 00003000 103:02 43000075 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc2a2665000-7fc2a2669000 r--p 0001e000 103:02 43000075 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc2a2669000-7fc2a266a000 r--p 00021000 103:02 43000075 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc2a266a000-7fc2a266b000 rw-p 00022000 103:02 43000075 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 7fc2a266b000-7fc2a2679000 r--p 00000000 103:02 42994016 /usr/lib/x86_64-linux-gnu/libm.so.6 7fc2a2679000-7fc2a26f7000 r-xp 0000e000 103:02 42994016 /usr/lib/x86_64-linux-gnu/libm.so.6 7fc2a26f7000-7fc2a2752000 r--p 0008c000 103:02 42994016 /usr/lib/x86_64-linux-gnu/libm.so.6 7fc2a2752000-7fc2a2753000 r--p 000e6000 103:02 42994016 /usr/lib/x86_64-linux-gnu/libm.so.6 7fc2a2753000-7fc2a2754000 rw-p 000e7000 103:02 42994016 /usr/lib/x86_64-linux-gnu/libm.so.6 7fc2a2754000-7fc2a2756000 r--p 00000000 103:02 42992265 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 7fc2a2756000-7fc2a276a000 r-xp 00002000 103:02 42992265 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 7fc2a276a000-7fc2a2784000 r--p 00016000 103:02 42992265 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 7fc2a2784000-7fc2a2785000 r--p 0002f000 103:02 42992265 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 7fc2a2785000-7fc2a2786000 rw-p 00030000 103:02 42992265 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 7fc2a2786000-7fc2a278e000 rw-p 00000000 00:00 0 7fc2a278e000-7fc2a2798000 r--p 00000000 103:02 43000696 /usr/lib/x86_64-linux-gnu/libgmp.so.10.4.1 7fc2a2798000-7fc2a27f8000 r-xp 0000a000 103:02 43000696 /usr/lib/x86_64-linux-gnu/libgmp.so.10.4.1 7fc2a27f8000-7fc2a280f000 r--p 0006a000 103:02 43000696 /usr/lib/x86_64-linux-gnu/libgmp.so.10.4.1 7fc2a280f000-7fc2a2810000 r--p 00080000 103:02 43000696 /usr/lib/x86_64-linux-gnu/libgmp.so.10.4.1 7fc2a2810000-7fc2a2811000 rw-p 00081000 103:02 43000696 /usr/lib/x86_64-linux-gnu/libgmp.so.10.4.1 7fc2a2811000-7fc2a2814000 r--p 00000000 103:02 42996870 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13 7fc2a2814000-7fc2a2826000 r-xp 00003000 103:02 42996870 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13 7fc2a2826000-7fc2a282d000 r--p 00015000 103:02 42996870 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13 7fc2a282d000-7fc2a282e000 r--p 0001b000 103:02 42996870 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13 7fc2a282e000-7fc2a282f000 rw-p 0001c000 103:02 42996870 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13 7fc2a2832000-7fc2a2833000 r--p 00000000 103:02 24120725 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/trans/transdb.so 7fc2a2833000-7fc2a2834000 r-xp 00001000 103:02 24120725 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/trans/transdb.so 7fc2a2834000-7fc2a2835000 r--p 00002000 103:02 24120725 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/trans/transdb.so 7fc2a2835000-7fc2a2836000 r--p 00002000 103:02 24120725 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/trans/transdb.so 7fc2a2836000-7fc2a2837000 rw-p 00003000 103:02 24120725 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/trans/transdb.so 7fc2a2837000-7fc2a2838000 r--p 00000000 103:02 24120713 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/encdb.so 7fc2a2838000-7fc2a2839000 r-xp 00001000 103:02 24120713 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/encdb.so 7fc2a2839000-7fc2a283a000 r--p 00002000 103:02 24120713 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/encdb.so 7fc2a283a000-7fc2a283b000 r--p 00002000 103:02 24120713 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/encdb.so 7fc2a283b000-7fc2a283c000 rw-p 00003000 103:02 24120713 /home/yahonda/.rbenv/versions/trunk/lib/ruby/3.3.0+0/x86_64-linux/enc/encdb.so 7fc2a283c000-7fc2a2843000 r--s 00000000 103:02 43654361 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache 7fc2a2843000-7fc2a2845000 rw-p 00000000 00:00 0 7fc2a2845000-7fc2a2846000 r--p 00000000 103:02 42994006 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7fc2a2846000-7fc2a286e000 r-xp 00001000 103:02 42994006 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7fc2a286e000-7fc2a2878000 r--p 00029000 103:02 42994006 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7fc2a2878000-7fc2a287a000 r--p 00033000 103:02 42994006 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7fc2a287a000-7fc2a287c000 rw-p 00035000 103:02 42994006 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7fffd3978000-7fffd4177000 rw-p 00000000 00:00 0 [stack] 7fffd41fa000-7fffd41fe000 r--p 00000000 00:00 0 [vvar] 7fffd41fe000-7fffd4200000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] Aborted (core dumped) ``` -- https://bugs.ruby-lang.org/
2 3
0 0
[ruby-core:114628] [Ruby master Bug#19862] argument stack underflow compile error happens for the combination of and/or & one line pattern matching
by yui-knk (Kaneko Yuichiro) 06 Sep '23

06 Sep '23
Issue #19862 has been reported by yui-knk (Kaneko Yuichiro). ---------------------------------------- Bug #19862: argument stack underflow compile error happens for the combination of and/or & one line pattern matching https://bugs.ruby-lang.org/issues/19862 * Author: yui-knk (Kaneko Yuichiro) * Status: Open * Priority: Normal * ruby -v: ruby 3.3.0dev (2023-09-04T18:01:33Z master db3b814cb0) [arm64-darwin21] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- This code raises argument stack underflow compile error on ruby 3.3 which is under development. ```ruby # test3.rb if true or {a: 0} in {a:} p 1 else p 0 end ``` ```shell % ruby -v test3.rb ruby 3.3.0preview1 (2023-05-12 master a1b01e7701) [arm64-darwin21] test3.rb:2: warning: assigned but unused variable - a -- raw disasm-------- trace: 1 0000 jump <L000> ( 2) <L006> [sp: 0] <L004> [sp: 0] * 0002 pop ( 2) 0003 pop ( 2) 0004 jump <L001> ( 2) <L000> [sp: 0] trace: 1 0006 putself ( 3) 0007 putobject_INT2FIX_1_ ( 3) 0008 opt_send_without_block <calldata:p, 1> ( 3) 0010 leave ( 5) <L001> [sp: -1] trace: 1 0011 putself ( 5) 0012 putobject_INT2FIX_0_ ( 5) 0013 opt_send_without_block <calldata:p, 1> ( 5) 0015 leave ( 5) --------------------- test3.rb:2: argument stack underflow (-1) test3.rb: compile error (SyntaxError) % ./ruby -v ../../test3.rb ruby 3.3.0dev (2023-09-04T18:01:33Z master db3b814cb0) [arm64-darwin21] `RubyGems' were not loaded. `error_highlight' was not loaded. `did_you_mean' was not loaded. `syntax_suggest' was not loaded. ../../test3.rb:2: warning: assigned but unused variable - a -- raw disasm-------- trace: 1 0000 jump <L000> ( 2) <L006> [sp: 0] <L004> [sp: 0] * 0002 pop ( 2) 0003 pop ( 2) 0004 jump <L001> ( 2) <L000> [sp: 0] trace: 1 0006 putself ( 3) 0007 putobject_INT2FIX_1_ ( 3) 0008 opt_send_without_block <calldata:p, 1> ( 3) 0010 leave ( 5) <L001> [sp: -1] trace: 1 0011 putself ( 5) 0012 putobject_INT2FIX_0_ ( 5) 0013 opt_send_without_block <calldata:p, 1> ( 5) 0015 leave ( 5) --------------------- ../../test3.rb:2: argument stack underflow (-1) ../../test3.rb: compile error (SyntaxError) ``` This also raises same error. ```ruby # test4.rb if false and {a: 0} in {a:} p 1 else p 0 end ``` As far as I checked, 3.0.0, 3.1.0, 3.2.0 don't raise the error. -- https://bugs.ruby-lang.org/
2 1
0 0
[ruby-core:114639] [Ruby master Feature#19075] Binary searching for the last element
by Dan0042 (Daniel DeLorme) 05 Sep '23

05 Sep '23
Issue #19075 has been updated by Dan0042 (Daniel DeLorme). sawa (Tsuyoshi Sawada) wrote in #note-11: > `bsearch_rindex` I love this one, how it has a direct parallel in the way the condition must be inverted when using `index` vs `rindex`. ```ruby a = [5,6,6,6,7] a.index{ |e| e >= 6 } #=>1 a.rindex{ |e| e <= 6 } #=>3 (inverted condition) a.bsearch_index{ |e| e >= 6 } #=>1 a.bsearch_rindex{ |e| e <= 6 } #=>3 (inverted condition just like rindex and bsearch(target: :last) implementation above) ``` ---------------------------------------- Feature #19075: Binary searching for the last element https://bugs.ruby-lang.org/issues/19075#change-104468 * Author: kyanagi (Kouhei Yanagita) * Status: Open * Priority: Normal ---------------------------------------- My latest proposal is https://bugs.ruby-lang.org/issues/19075#note-6. I will leave the initial proposal below. --- PR: https://github.com/ruby/ruby/pull/6611 (I'm going to talk about `Array` here, but the same argument can be made for `Range`. If `Array#bsearch_last` is acceptable, I will work also for `Range`.) Ruby's bsearch returns the first element which satisfies the given block. ```ruby # Search the first element greater than 18 array = [10, 15, 20, 25] array.bsearch { |x| x > 18 } # => 20 ``` If we want the last element, we need to invert the condition and step backward. ```ruby # Search the last element less than 18 array = [10, 15, 20, 25] index = array.bsearch_index { |x| !(x < 18) } array[index-1] # => 15 ``` Of course, we need to consider `nil` and the boundary. ```ruby # Search the last element less than 100 index = array.bsearch_index { |x| !(x < 100) } # => nil if index.nil? array.last # => 25 else array[index-1] end ``` ```ruby # Search the last element less than 0 index = array.bsearch_index { |x| !(x < 0) } # => 0 if index.nil? array.last elsif index == 0 nil else array[index-1] end ``` This is where mistakes can easily be made, so I propose `Array#bsearch_last` and `Array#bsearch_last_index`. `Array#bsearch_last` returns the last element which satisfies the given block. `Array#bsearch` requires that all false-evaluating elements precede all true-evaluating elements. As is clear from the meaning of the method, conversely to `bsearch`, `bsearch_last` requires that all true-evaluating elements precede all false-evaluating elements. (If `bsearch_last` is acceptable, the name "find-minimum mode" should be changed.) ```ruby array = [10, 15, 20, 25] array.bsearch_last { |x| x < 18 } # => 15 array.bsearch_last { |x| x < 100 } # => 25 array.bsearch_last { |x| x < 0 } # => nil ``` There are several possible options for find-any mode. (1) `bsearch_last` does not support find-any mode. A block for `bsearch_last` must return `true`, `false` or `nil`. ``` [1, 2, 3].bsearch_last { 0 } # => TypeError ``` My pull request tentatively includes this implementation. (2) `bsearch_last` supports find-any mode and it behaves like `bsearch`. `bsearch` with find-any mode returns an element, for which the block returns zero. If multiple elements satisfy the condition, it is not determined which of them will be returned. It is conceivable that `bsearch_last` behaves in the same way as `bsearch`. ``` # current behavior # It is not specified whether `:b`, `:c`, or `:d` is returned. [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch { |a, b| 2 <=> a } # => [2, :c] ``` (3) `bsearch_last` supports find-any mode and returns the last element. Make `bsearch` return the first element. Change the behavior of `bsearch` to return the first element for which the block returns zero. `bsearch_last` returns the last element for which the block returns zero. ``` # Change it like this: [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch { |a, b| 2 <=> a } # => [2, :b] [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch_last { |a, b| 2 <=> a } # => [2, :d] ``` (If this option is adopted, the name "find-any mode" should be renamed.) -- https://bugs.ruby-lang.org/
1 0
0 0
[ruby-core:114625] [Ruby master Bug#19861] Ripper does not fire any error event on unfinished heredoc
by thyresias (Thierry Lambert) 05 Sep '23

05 Sep '23
Issue #19861 has been reported by thyresias (Thierry Lambert). ---------------------------------------- Bug #19861: Ripper does not fire any error event on unfinished heredoc https://bugs.ruby-lang.org/issues/19861 * Author: thyresias (Thierry Lambert) * Status: Open * Priority: Normal * ruby -v: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x64-mingw-ucrt] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- require 'ripper' ```ruby class BasicParser < Ripper EVENTS.each do |event| module_eval(<<~RUBY, __FILE__, __LINE__ + 1) def on_#{event}(*args) puts "#{event}(\#{args.inspect})" args.unshift :#{event} args end RUBY end end p = BasicParser.new(<<~RUBY) <<~EOT foo RUBY p.parse p error: p.error? # in stdout: # heredoc_beg(["<<~EOT"]) # string_content([]) # tstring_content([" foo\n"]) # string_add([[:string_content], [:tstring_content, " foo\n"]]) # heredoc_dedent([[:string_add, [:string_content], [:tstring_content, " foo\n"]], 2]) # string_literal([[:string_add, [:string_content], [:tstring_content, " foo\n"]]]) # nl(["\n"]) # stmts_new([]) # stmts_add([[:stmts_new], [:string_literal, [:string_add, [:string_content], [:tstring_content, " foo\n"]]]]) # program([[:stmts_add, [:stmts_new], [:string_literal, [:string_add, [:string_content], [:tstring_content, " foo\n"]]]]]) # {:error=>true} ``` I would have expected one of the _error events to fire, since `p.error?` returns `true`. -- https://bugs.ruby-lang.org/
2 2
0 0
[ruby-core:114635] [Ruby master Bug#16492] TestBugReporter#test_bug_reporter_add test failures
by vo.x (Vit Ondruch) 05 Sep '23

05 Sep '23
Issue #16492 has been updated by vo.x (Vit Ondruch). I'm going to drop the patch testing with Ruby 3.3. Just briefly looking at the changes of the test case, I can imagine this one commit:git|308fe1eb858fd8029f67510a18 could have positive influence. But not sure, because I'd say this must have been issue also for Ruby 3.2. I'll see and will be back if I observe some issues. ---------------------------------------- Bug #16492: TestBugReporter#test_bug_reporter_add test failures https://bugs.ruby-lang.org/issues/16492#change-104462 * Author: vo.x (Vit Ondruch) * Status: Closed * Priority: Normal * Assignee: jaruga (Jun Aruga) * ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [s390x-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Building Ruby packages on Fedora, in 90% of cases, I observe the following error on s390: ~~~ 1) Error: TestBugReporter#test_bug_reporter_add: Timeout::Error: execution of assert_in_out_err expired timeout (10 sec) pid 2061293 killed by SIGKILL (signal 9) | | -:1: [BUG] Segmentation fault at 0x001f73ed000003e8 | ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [s390x-linux] | | -- Control frame information ----------------------------------------------- | c:0003 p:---- s:0012 e:000011 CFUNC :kill | c:0002 p:0021 s:0006 e:000005 EVAL -:1 [FINISH] | c:0001 p:0000 s:0003 E:000430 (none) [FINISH] | | -- Ruby level backtrace information ---------------------------------------- | -:1:in `<main>' | -:1:in `kill' | | -- Other runtime information ----------------------------------------------- | | * Loaded script: - | | * Loaded features: | | 0 enumerator.so | 1 thread.rb | 2 rational.so | 3 complex.so | 4 ruby2_keywords.rb | 5 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/enc/encdb.so | 6 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/enc/trans/transdb.so | 7 /builddir/build/BUILD/ruby-2.7.0/abrt.rb | 8 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/-test-/bug_reporter.so | | * Process memory map: | | 2aa27a00000-2aa27a01000 r-xp 00000000 fc:03 1845127 /builddir/build/BUILD/ruby-2.7.0/ruby | 2aa27a01000-2aa27a02000 r--p 00000000 fc:03 1845127 /builddir/build/BUILD/ruby-2.7.0/ruby | 2aa27a02000-2aa27a03000 rw-p 00001000 fc:03 1845127 /builddir/build/BUILD/ruby-2.7.0/ruby | 2aa28a7e000-2aa28bfe000 rw-p 00000000 00:00 0 [heap] | 3ff9ff80000-3ff9ff81000 r-xp 00000000 fc:03 1844756 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/-test-/bug_reporter.so | 3ff9ff81000-3ff9ff82000 r--p 00000000 fc:03 1844756 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/-test-/bug_reporter.so | 3ff9ff82000-3ff9ff83000 rw-p 00000000 00:00 0 | 3ffa0000000-3ffa0002000 r-xp 00000000 fc:03 1844387 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/enc/trans/transdb.so | 3ffa0002000-3ffa0003000 r--p 00001000 fc:03 1844387 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/enc/trans/transdb.so | 3ffa0003000-3ffa0004000 rw-p 00000000 00:00 0 | 3ffa0036000-3ffa0037000 ---p 00000000 00:00 0 | 3ffa0037000-3ffa0078000 rw-p 00000000 00:00 0 | 3ffa0078000-3ffa0079000 ---p 00000000 00:00 0 | 3ffa0079000-3ffa00ba000 rw-p 00000000 00:00 0 | 3ffa00ba000-3ffa00bb000 ---p 00000000 00:00 0 | 3ffa00bb000-3ffa00fc000 rw-p 00000000 00:00 0 | 3ffa00fc000-3ffa00fd000 ---p 00000000 00:00 0 | 3ffa00fd000-3ffa013e000 rw-p 00000000 00:00 0 | 3ffa013e000-3ffa013f000 ---p 00000000 00:00 0 | 3ffa013f000-3ffa0180000 rw-p 00000000 00:00 0 | 3ffa0180000-3ffa0181000 ---p 00000000 00:00 0 | 3ffa0181000-3ffa01c2000 rw-p 00000000 00:00 0 | 3ffa01c2000-3ffa01c3000 ---p 00000000 00:00 0 | 3ffa01c3000-3ffa0204000 rw-p 00000000 00:00 0 | 3ffa0204000-3ffa0205000 ---p 00000000 00:00 0 | 3ffa0205000-3ffa0246000 rw-p 00000000 00:00 0 | 3ffa0246000-3ffa0247000 ---p 00000000 00:00 0 | 3ffa0247000-3ffa0288000 rw-p 00000000 00:00 0 | 3ffa0288000-3ffa0289000 ---p 00000000 00:00 0 | 3ffa0289000-3ffa02ca000 rw-p 00000000 00:00 0 | 3ffa02ca000-3ffa02cb000 ---p 00000000 00:00 0 | 3ffa02cb000-3ffa030c000 rw-p 00000000 00:00 0 | 3ffa030c000-3ffa030d000 ---p 00000000 00:00 0 | 3ffa030d000-3ffa034e000 rw-p 00000000 00:00 0 | 3ffa034e000-3ffa034f000 ---p 00000000 00:00 0 | 3ffa034f000-3ffa0390000 rw-p 00000000 00:00 0 | 3ffa0390000-3ffa0391000 ---p 00000000 00:00 0 | 3ffa0391000-3ffa03d2000 rw-p 00000000 00:00 0 | 3ffa03d2000-3ffa03d3000 ---p 00000000 00:00 0 | 3ffa03d3000-3ffa0414000 rw-p 00000000 00:00 0 | 3ffa0414000-3ffa0415000 ---p 00000000 00:00 0 | 3ffa0415000-3ffa0456000 rw-p 00000000 00:00 0 | 3ffa0456000-3ffa0457000 ---p 00000000 00:00 0 | 3ffa0457000-3ffa0498000 rw-p 00000000 00:00 0 | 3ffa0498000-3ffa0499000 ---p 00000000 00:00 0 | 3ffa0499000-3ffa04da000 rw-p 00000000 00:00 0 | 3ffa04da000-3ffa04db000 ---p 00000000 00:00 0 | 3ffa04db000-3ffa051c000 rw-p 00000000 00:00 0 | 3ffa051c000-3ffa051d000 ---p 00000000 00:00 0 | 3ffa051d000-3ffa055e000 rw-p 00000000 00:00 0 | 3ffa055e000-3ffa055f000 ---p 00000000 00:00 0 | 3ffa055f000-3ffa05a0000 rw-p 00000000 00:00 0 | 3ffa05a0000-3ffa05a1000 ---p 00000000 00:00 0 | 3ffa05a1000-3ffa05e2000 rw-p 00000000 00:00 0 | 3ffa05e2000-3ffa05e3000 ---p 00000000 00:00 0 | 3ffa05e3000-3ffa0624000 rw-p 00000000 00:00 0 | 3ffa0624000-3ffa0625000 ---p 00000000 00:00 0 | 3ffa0625000-3ffa0666000 rw-p 00000000 00:00 0 | 3ffa0666000-3ffa0667000 ---p 00000000 00:00 0 | 3ffa0667000-3ffa06a8000 rw-p 00000000 00:00 0 | 3ffa06a8000-3ffa06a9000 ---p 00000000 00:00 0 | 3ffa06a9000-3ffa06ea000 rw-p 00000000 00:00 0 | 3ffa06ea000-3ffa06eb000 ---p 00000000 00:00 0 | 3ffa06eb000-3ffa072c000 rw-p 00000000 00:00 0 | 3ffa072c000-3ffa072d000 ---p 00000000 00:00 0 | 3ffa072d000-3ffa076e000 rw-p 00000000 00:00 0 | 3ffa076e000-3ffa076f000 ---p 00000000 00:00 0 | 3ffa076f000-3ffa07b0000 rw-p 00000000 00:00 0 | 3ffa07b0000-3ffa07b1000 ---p 00000000 00:00 0 | 3ffa07b1000-3ffa07f2000 rw-p 00000000 00:00 0 | 3ffa07f2000-3ffa07f3000 ---p 00000000 00:00 0 | 3ffa07f3000-3ffa0834000 rw-p 00000000 00:00 0 | 3ffa0834000-3ffa0835000 ---p 00000000 00:00 0 | 3ffa0835000-3ffa2980000 rw-p 00000000 00:00 0 | 3ffa2980000-3ffa2a17000 r-xp 00000000 fc:03 1813828 /usr/lib64/libm-2.30.9000.so | 3ffa2a17000-3ffa2a18000 r--p 00096000 fc:03 1813828 /usr/lib64/libm-2.30.9000.so | 3ffa2a18000-3ffa2a19000 rw-p 00097000 fc:03 1813828 /usr/lib64/libm-2.30.9000.so | 3ffa2a80000-3ffa2ab2000 r-xp 00000000 fc:03 1814596 /usr/lib64/libcrypt.so.2.0.0 | 3ffa2ab2000-3ffa2ab3000 ---p 00032000 fc:03 1814596 /usr/lib64/libcrypt.so.2.0.0 | 3ffa2ab3000-3ffa2ab4000 r--p 00032000 fc:03 1814596 /usr/lib64/libcrypt.so.2.0.0 | 3ffa2ab4000-3ffa2abd000 rw-p 00000000 00:00 0 | 3ffa2b00000-3ffa2b03000 r-xp 00000000 fc:03 1813826 /usr/lib64/libdl-2.30.9000.so | 3ffa2b03000-3ffa2b04000 r--p 00002000 fc:03 1813826 /usr/lib64/libdl-2.30.9000.so | 3ffa2b04000-3ffa2b05000 rw-p 00000000 00:00 0 | 3ffa2b80000-3ffa2c05000 r-xp 00000000 fc:03 1814658 /usr/lib64/libgmp.so.10.3.2 | 3ffa2c05000-3ffa2c07000 r--p 00084000 fc:03 1814658 /usr/lib64/libgmp.so.10.3.2 | 3ffa2c07000-3ffa2c08000 rw-p 00086000 fc:03 1814658 /usr/lib64/libgmp.so.10.3.2 | 3ffa2c80000-3ffa2c88000 r-xp 00000000 fc:03 1813840 /usr/lib64/librt-2.30.9000.so | 3ffa2c88000-3ffa2c89000 r--p 00007000 fc:03 1813840 /usr/lib64/librt-2.30.9000.so | 3ffa2c89000-3ffa2c8a000 rw-p 00008000 fc:03 1813840 /usr/lib64/librt-2.30.9000.so | 3ffa2d00000-3ffa2d1e000 r-xp 00000000 fc:03 1813836 /usr/lib64/libpthread-2.30.9000.so | 3ffa2d1e000-3ffa2d1f000 r--p 0001d000 fc:03 1813836 /usr/lib64/libpthread-2.30.9000.so | 3ffa2d1f000-3ffa2d20000 rw-p 0001e000 fc:03 1813836 /usr/lib64/libpthread-2.30.9000.so | 3ffa2d20000-3ffa2d24000 rw-p 00000000 00:00 0 | 3ffa2d80000-3ffa2f1e000 r-xp 00000000 fc:03 1813824 /usr/lib64/libc-2.30.9000.so | 3ffa2f1e000-3ffa2f22000 r--p 0019d000 fc:03 1813824 /usr/lib64/libc-2.30.9000.so | 3ffa2f22000-3ffa2f25000 rw-p 001a1000 fc:03 1813824 /usr/lib64/libc-2.30.9000.so | 3ffa2f25000-3ffa2f28000 rw-p 00000000 00:00 0 | 3ffa2f80000-3ffa2f82000 r-xp 00000000 fc:03 1844333 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/enc/encdb.so | 3ffa2f82000-3ffa2f83000 r--p 00001000 fc:03 1844333 /builddir/build/BUILD/ruby-2.7.0/.ext/s390x-linux/enc/encdb.so | 3ffa2f83000-3ffa2f84000 rw-p 00000000 00:00 0 | 3ffa3000000-3ffa336e000 r-xp 00000000 fc:03 1844256 /builddir/build/BUILD/ruby-2.7.0/libruby.so.2.7.0 | 3ffa336e000-3ffa3377000 r--p 0036d000 fc:03 1844256 /builddir/build/BUILD/ruby-2.7.0/libruby.so.2.7.0 | 3ffa3377000-3ffa3378000 rw-p 00376000 fc:03 1844256 /builddir/build/BUILD/ruby-2.7.0/libruby.so.2.7.0 | 3ffa3378000-3ffa338f000 rw-p 00000000 00:00 0 | 3ffa3400000-3ffa3426000 r-xp 00000000 fc:03 1813817 /usr/lib64/ld-2.30.9000.so | 3ffa3426000-3ffa3427000 r--p 00025000 fc:03 1813817 /usr/lib64/ld-2.30.9000.so | 3ffa3427000-3ffa3428000 rw-p 00026000 fc:03 1813817 /usr/lib64/ld-2.30.9000.so | 3ffa3428000-3ffa3429000 rw-p 00000000 00:00 0 | 3ffa3476000-3ffa347e000 rw-p 00000000 00:00 0 | 3ffa347e000-3ffa3480000 r-xp 00000000 00:00 0 [vdso] | 3ffc5301000-3ffc5b00000 rw-p 00000000 00:00 0 [stack] | | | Sample bug reporter: 12345 /builddir/build/BUILD/ruby-2.7.0/test/-ext-/bug_reporter/test_bug_reporter.rb:22:in `test_bug_reporter_add' Finished tests in 544.051367s, 38.5515 tests/s, 4998.1953 assertions/s. 20974 tests, 2719275 assertions, 0 failures, 1 errors, 68 skips ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [s390x-linux] ~~~ Since the default timeout is 10s, I tried to increase the timeout to 30s via simple `sed -i '/assert_in_out_err/ s/)/, timeout: 30)/' test/-ext-/bug_reporter/test_bug_reporter.rb` and this seems to help to avoid this issue. However, I am not really sure why s390x is so slow handling this test case :/ ---Files-------------------------------- 0001-Timeout-the-test_bug_reporter_add-witout-raising-err.patch (1.45 KB) Time.png (56 KB) -- https://bugs.ruby-lang.org/
1 0
0 0
[ruby-core:114627] [Ruby master Feature#19057] Hide implementation of `rb_io_t`.
by byroot (Jean Boussier) 05 Sep '23

05 Sep '23
Issue #19057 has been updated by byroot (Jean Boussier). Eric just said he'll cut new `unicorn` and `kgio` releases: https://yhbt.net/kgio.git/dbf5290cf9f89174f6b35a597af9a4226633d79b/s/ > Will push out a release once docs are updated to more strongly discourage the use of kgio and unicorn. ---------------------------------------- Feature #19057: Hide implementation of `rb_io_t`. https://bugs.ruby-lang.org/issues/19057#change-104455 * Author: ioquatix (Samuel Williams) * Status: Assigned * Priority: Normal * Assignee: ioquatix (Samuel Williams) * Target version: 3.3 ---------------------------------------- In order to make improvements to the IO implementation like <https://bugs.ruby-lang.org/issues/18455>, we need to add new fields to `struct rb_io_t`. By the way, ending types in `_t` is not recommended by POSIX, so I'm also trying to rename the internal implementation to drop `_t` where possible during this conversion. Anyway, we should try to hide the implementation of `struct rb_io`. Ideally, we don't expose any of it, but the problem is backwards compatibility. So, in order to remain backwards compatibility, we should expose some fields of `struct rb_io`, the most commonly used one is `fd` and `mode`, but several others are commonly used. There are many fields which should not be exposed because they are implementation details. ## Current proposal The current proposed change <https://github.com/ruby/ruby/pull/6511> creates two structs: ```c // include/ruby/io.h #ifndef RB_IO_T struct rb_io { int fd; // ... public fields ... }; #else struct rb_io; #endif // internal/io.h #define RB_IO_T struct rb_io { int fd; // ... public fields ... // ... private fields ... }; ``` However, we are not 100% confident this is safe according to the C specification. My experience is not sufficiently wide to say this is safe in practice, but it does look okay to both myself, and @Eregon + @tenderlovemaking have both given some kind of approval. That being said, maybe it's not safe. There are two alternatives: ## Hide all details We can make public `struct rb_io` completely invisible. ```c // include/ruby/io.h #define RB_IO_HIDDEN struct rb_io; int rb_ioptr_descriptor(struct rb_io *ioptr); // accessor for previously visible state. // internal/io.h struct rb_io { // ... all fields ... }; ``` This would only be forwards compatible, and code would need to feature detect like this: ```c #ifdef RB_IO_HIDDEN #define RB_IOPTR_DESCRIPTOR rb_ioptr_descriptor #else #define RB_IOPTR_DESCRIPTOR(ioptr) rb_ioptr_descriptor(ioptr) #endif ``` ## Nested public interface Alternatively, we can nest the public fields into the private struct: ```c // include/ruby/io.h struct rb_io_public { int fd; // ... public fields ... }; // internal/io.h #define RB_IO_T struct rb_io { struct rb_io_public public; // ... private fields ... }; ``` ## Considerations I personally think the "Hide all details" implementation is the best, but it's also the lest compatible. This is also what we are ultimately aiming for, whether we decide to take an intermediate "compatibility step" is up to us. I think "Nested public interface" is messy and introduces more complexity, but it might be slightly better defined than the "Current proposal" which might create undefined behaviour. That being said, all the tests are passing. -- https://bugs.ruby-lang.org/
1 0
0 0
[ruby-core:114626] [Ruby master Bug#18080] Syntax error on one-line pattern matching
by yui-knk (Kaneko Yuichiro) 04 Sep '23

04 Sep '23
Issue #18080 has been updated by yui-knk (Kaneko Yuichiro). It's possible https://github.com/yui-knk/ruby/tree/bugs_18080. However need to notice about inconsistency for one line pattern matching for command call without block, like `[].append 1 => a`. Because this is interpreted as `#append` call with hash (`1 => a`) now, so it's impossible to change the behavior without introducing incompatibility. ```ruby [].append => a [].append in a [].append do end => a [].append do end in a [].append(1) => a [].append(1) in a [].append(1) do end => a [].append(1) do end in a # Only this is interpreted as #append method call with hash argument [].append 1 => a [].append 1 in a [].append 1 do end => a [].append 1 do end in a ``` In my opinion (1) is more clear than (2). (1) Method call without surrounding parameters parenthesis can not be put on left of single line pattern matching (2) Almost all method calls can be on left of single line pattern matching but there is one exception (a) without block (b) without parenthesis for parameters (c) pattern matching with `=>` # Note The inconsistency can be found as Shift/Reduce conflict. In this state, shift derives `arg_value • "=>" arg_value` (hash), on the other hand reduce derives `command_call => p_top_expr_body` (pattern matching). https://github.com/yui-knk/ruby/tree/bugs_18080_2 ``` State 223 shift/reduce conflict on token "=>": 308 args: arg_value • 759 assoc: arg_value • "=>" arg_value First example: $@1 k_return arg_value • "=>" arg_value opt_block_arg "=>" @7 @8 p_top_expr_body opt_terms "end-of-input" Shift derivation $accept ↳ 0: program "end-of-input" ↳ 2: $@1 top_compstmt ↳ 3: top_stmts opt_terms ↳ 5: top_stmt ↳ 7: stmt ↳ 37: expr ↳ 65: command "=>" @7 @8 p_top_expr_body ↳ 97: k_return call_args ↳ 299: assocs opt_block_arg ↳ 757: assoc ↳ 759: arg_value • "=>" arg_value Second example: $@1 k_return arg_value • opt_block_arg "=>" @7 @8 p_top_expr_body opt_terms "end-of-input" Reduce derivation $accept ↳ 0: program "end-of-input" ↳ 2: $@1 top_compstmt ↳ 3: top_stmts opt_terms ↳ 5: top_stmt ↳ 7: stmt ↳ 37: expr ↳ 65: command_call "=>" @7 @8 p_top_expr_body ↳ 82: command ↳ 97: k_return call_args ↳ 298: args opt_block_arg ↳ 308: arg_value • ``` ---------------------------------------- Bug #18080: Syntax error on one-line pattern matching https://bugs.ruby-lang.org/issues/18080#change-104454 * Author: ko1 (Koichi Sasada) * Status: Open * Priority: Normal * ruby -v: 3.1.0dev * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- One line pattern matching with a method return value with parameters which are not surrounded by parenthesis raises syntax error. I think it is not intentional, but nobu said it's hard to support because of parse.y limitation. ```ruby p do end => a p a #=> nil p(1) do end => a p a #=> 1 p 1 do end => a #=> # syntax error, unexpected =>, expecting end-of-input # end => a # ^~ p 1 do end in a #=> # syntax error, unexpected `in', expecting end-of-input # end in a # ^~ ``` -- https://bugs.ruby-lang.org/
1 0
0 0
[ruby-core:111499] [Ruby master Bug#19281] SyntaxError if first argument of command call has semicolon inside parenthesis
by tompng (tomoya ishida) 04 Sep '23

04 Sep '23
Issue #19281 has been reported by tompng (tomoya ishida). ---------------------------------------- Bug #19281: SyntaxError if first argument of command call has semicolon inside parenthesis https://bugs.ruby-lang.org/issues/19281 * Author: tompng (tomoya ishida) * Status: Open * Priority: Normal * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- These are syntax error ~~~ruby p (1;2),(3),(4) p (;),(),() a.b (1;2),(3),(4) a.b (;),(),() ~~~ I expect it to be syntax ok because the code below is syntax ok. ~~~ruby p (1),(2;3),(4;5) p (),(;),(;) a.b (1),(2;3),(4;5) a.b (),(;),(;) ~~~ It will be easy to traverse sexp if the sexp of first argument is same as others ~~~ruby Ripper.sexp "p (),(),()" # => [:program, [[:command, [:@ident, "p", [1, 0]], [:args_add_block, [[:paren, false], # [:paren, [[:void_stmt]]] [:paren, [[:void_stmt]]], [:paren, [[:void_stmt]]]], false]]]] Ripper.sexp "p (1),(2),(3)" # => [:program, [[:command, [:@ident, "p", [1, 0]], [:args_add_block, [[:paren, [:@int, "1", [1, 3]]], # [:paren, [[:@int, "1", [1, 3]]]] [:paren, [[:@int, "2", [1, 7]]]], [:paren, [[:@int, "3", [1, 11]]]]], false]]]] ~~~ -- https://bugs.ruby-lang.org/
3 2
0 0
[ruby-core:114620] [Ruby master Feature#19075] Binary searching for the last element
by sawa (Tsuyoshi Sawada) 04 Sep '23

04 Sep '23
Issue #19075 has been updated by sawa (Tsuyoshi Sawada). When we want to reverse the direction in any sense, such as the direction of search, in my understanding, it's Ruby's custom to use the word "reverse" or a prefix "r": `Enumerable#revserse_each` `Array#rindex` `String#rindex` `String#rjust` `String#rpartition` `String#rstrip` To be consistent, I think it is better to have independent methods as in the original proposal, but with method names like: `reverse_bsearch` `bsearch_rindex` ---------------------------------------- Feature #19075: Binary searching for the last element https://bugs.ruby-lang.org/issues/19075#change-104447 * Author: kyanagi (Kouhei Yanagita) * Status: Open * Priority: Normal ---------------------------------------- My latest proposal is https://bugs.ruby-lang.org/issues/19075#note-6. I will leave the initial proposal below. --- PR: https://github.com/ruby/ruby/pull/6611 (I'm going to talk about `Array` here, but the same argument can be made for `Range`. If `Array#bsearch_last` is acceptable, I will work also for `Range`.) Ruby's bsearch returns the first element which satisfies the given block. ```ruby # Search the first element greater than 18 array = [10, 15, 20, 25] array.bsearch { |x| x > 18 } # => 20 ``` If we want the last element, we need to invert the condition and step backward. ```ruby # Search the last element less than 18 array = [10, 15, 20, 25] index = array.bsearch_index { |x| !(x < 18) } array[index-1] # => 15 ``` Of course, we need to consider `nil` and the boundary. ```ruby # Search the last element less than 100 index = array.bsearch_index { |x| !(x < 100) } # => nil if index.nil? array.last # => 25 else array[index-1] end ``` ```ruby # Search the last element less than 0 index = array.bsearch_index { |x| !(x < 0) } # => 0 if index.nil? array.last elsif index == 0 nil else array[index-1] end ``` This is where mistakes can easily be made, so I propose `Array#bsearch_last` and `Array#bsearch_last_index`. `Array#bsearch_last` returns the last element which satisfies the given block. `Array#bsearch` requires that all false-evaluating elements precede all true-evaluating elements. As is clear from the meaning of the method, conversely to `bsearch`, `bsearch_last` requires that all true-evaluating elements precede all false-evaluating elements. (If `bsearch_last` is acceptable, the name "find-minimum mode" should be changed.) ```ruby array = [10, 15, 20, 25] array.bsearch_last { |x| x < 18 } # => 15 array.bsearch_last { |x| x < 100 } # => 25 array.bsearch_last { |x| x < 0 } # => nil ``` There are several possible options for find-any mode. (1) `bsearch_last` does not support find-any mode. A block for `bsearch_last` must return `true`, `false` or `nil`. ``` [1, 2, 3].bsearch_last { 0 } # => TypeError ``` My pull request tentatively includes this implementation. (2) `bsearch_last` supports find-any mode and it behaves like `bsearch`. `bsearch` with find-any mode returns an element, for which the block returns zero. If multiple elements satisfy the condition, it is not determined which of them will be returned. It is conceivable that `bsearch_last` behaves in the same way as `bsearch`. ``` # current behavior # It is not specified whether `:b`, `:c`, or `:d` is returned. [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch { |a, b| 2 <=> a } # => [2, :c] ``` (3) `bsearch_last` supports find-any mode and returns the last element. Make `bsearch` return the first element. Change the behavior of `bsearch` to return the first element for which the block returns zero. `bsearch_last` returns the last element for which the block returns zero. ``` # Change it like this: [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch { |a, b| 2 <=> a } # => [2, :b] [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch_last { |a, b| 2 <=> a } # => [2, :d] ``` (If this option is adopted, the name "find-any mode" should be renamed.) -- https://bugs.ruby-lang.org/
1 0
0 0
[ruby-core:114619] [Ruby master Feature#19075] Binary searching for the last element
by Dan0042 (Daniel DeLorme) 04 Sep '23

04 Sep '23
Issue #19075 has been updated by Dan0042 (Daniel DeLorme). > ``` > a = [2, 3, 5, 7, 11] > a.bsearch {|x| x >= 6 } # => 7 > a.bsearch(target: :first) {|x| x >= 6 } # same as a.bsearch { ... } > a.bsearch(target: :last) {|x| x <= 6 } # => 5 > a.bsearch(target: :first) {|x| 0 } # => 2 > a.bsearch(target: :last) {|x| 0 } # => 11 > ``` I like this implementation. But for naming, personally I find `target: :last` to be confusing. If I suddenly read that in code I wouldn't be able to guess what it does; I would have to refer to the documentation. I don't really have a good alternative. Maybe `bsearch(find: :last)` ?_? ---------------------------------------- Feature #19075: Binary searching for the last element https://bugs.ruby-lang.org/issues/19075#change-104446 * Author: kyanagi (Kouhei Yanagita) * Status: Open * Priority: Normal ---------------------------------------- My latest proposal is https://bugs.ruby-lang.org/issues/19075#note-6. I will leave the initial proposal below. --- PR: https://github.com/ruby/ruby/pull/6611 (I'm going to talk about `Array` here, but the same argument can be made for `Range`. If `Array#bsearch_last` is acceptable, I will work also for `Range`.) Ruby's bsearch returns the first element which satisfies the given block. ```ruby # Search the first element greater than 18 array = [10, 15, 20, 25] array.bsearch { |x| x > 18 } # => 20 ``` If we want the last element, we need to invert the condition and step backward. ```ruby # Search the last element less than 18 array = [10, 15, 20, 25] index = array.bsearch_index { |x| !(x < 18) } array[index-1] # => 15 ``` Of course, we need to consider `nil` and the boundary. ```ruby # Search the last element less than 100 index = array.bsearch_index { |x| !(x < 100) } # => nil if index.nil? array.last # => 25 else array[index-1] end ``` ```ruby # Search the last element less than 0 index = array.bsearch_index { |x| !(x < 0) } # => 0 if index.nil? array.last elsif index == 0 nil else array[index-1] end ``` This is where mistakes can easily be made, so I propose `Array#bsearch_last` and `Array#bsearch_last_index`. `Array#bsearch_last` returns the last element which satisfies the given block. `Array#bsearch` requires that all false-evaluating elements precede all true-evaluating elements. As is clear from the meaning of the method, conversely to `bsearch`, `bsearch_last` requires that all true-evaluating elements precede all false-evaluating elements. (If `bsearch_last` is acceptable, the name "find-minimum mode" should be changed.) ```ruby array = [10, 15, 20, 25] array.bsearch_last { |x| x < 18 } # => 15 array.bsearch_last { |x| x < 100 } # => 25 array.bsearch_last { |x| x < 0 } # => nil ``` There are several possible options for find-any mode. (1) `bsearch_last` does not support find-any mode. A block for `bsearch_last` must return `true`, `false` or `nil`. ``` [1, 2, 3].bsearch_last { 0 } # => TypeError ``` My pull request tentatively includes this implementation. (2) `bsearch_last` supports find-any mode and it behaves like `bsearch`. `bsearch` with find-any mode returns an element, for which the block returns zero. If multiple elements satisfy the condition, it is not determined which of them will be returned. It is conceivable that `bsearch_last` behaves in the same way as `bsearch`. ``` # current behavior # It is not specified whether `:b`, `:c`, or `:d` is returned. [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch { |a, b| 2 <=> a } # => [2, :c] ``` (3) `bsearch_last` supports find-any mode and returns the last element. Make `bsearch` return the first element. Change the behavior of `bsearch` to return the first element for which the block returns zero. `bsearch_last` returns the last element for which the block returns zero. ``` # Change it like this: [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch { |a, b| 2 <=> a } # => [2, :b] [[1,:a], [2, :b], [2, :c], [2, :d], [3, :e]].bsearch_last { |a, b| 2 <=> a } # => [2, :d] ``` (If this option is adopted, the name "find-any mode" should be renamed.) -- https://bugs.ruby-lang.org/
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 16
  • 17
  • 18
  • 19
  • 20
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.