From: "jhawthorn (John Hawthorn) via ruby-core" Date: 2025-11-08T00:30:57+00:00 Subject: [ruby-core:123729] [Ruby Bug#21671] Rails CI raises `Assertion Failed: rbimpl_rstring_getmem:RB_TYPE_P(str, RUBY_T_STRING): actual type: 26` with "-DENABLE_PATH_CHECK=0 -DRUBY_DEBUG=1" enabled Issue #21671 has been updated by jhawthorn (John Hawthorn). I have a patch in https://github.com/ruby/ruby/pull/15101 that I'll merge shortly. I believe this was an issue in at least Ruby 3.4 as well, need to test older versions. The root cause is that when certain fstrings were fed to IO#write they would be converted into a shared string (which an fstring must not be, they need to own their memory in case their hash is calculated when GC sweeping). This is probably showing up on head because of a new assertion when the table is rebuilt https://github.com/ruby/ruby/blob/a7c23b9a9f726bec7cbd6f89d157d7dd140420da/concurrent_set.c#L150 ---------------------------------------- Bug #21671: Rails CI raises `Assertion Failed: rbimpl_rstring_getmem:RB_TYPE_P(str, RUBY_T_STRING): actual type: 26` with "-DENABLE_PATH_CHECK=0 -DRUBY_DEBUG=1" enabled https://bugs.ruby-lang.org/issues/21671#change-115115 * Author: yahonda (Yasuo Honda) * Status: Open * ruby -v: ruby 3.5.0dev (2025-10-28T15:44:25Z master 7a736545e9) +PRISM [x86_64-linux] * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- Recently Rails CI using "-DENABLE_PATH_CHECK=0 -DRUBY_DEBUG=1" enabled ruby raises `Assertion Failed: rbimpl_rstring_getmem:RB_TYPE_P(str, RUBY_T_STRING): actual type: 26` assertion failures. https://buildkite.com/rails/rails-nightly/builds/3121#019a5af8-b2a1-4289-a791-3fefc14a2a41/1447-1452 ### Steps to reproduce 1. Build Ruby with this configure option ``` ./configure --prefix="/home/yahonda/.local/share/mise/installs/ruby/trunk" cppflags="-DENABLE_PATH_CHECK=0 -DRUBY_DEBUG=1" optflags="-O3 -fno-inline" --disable-install-doc ``` 2. Clone Rails repository and run Active Job integration tests ``` git clone https://github.com/rails/rails cd rails/activejob bundle update --bundler bundle install bundle exec rake test:integration ``` ### Expected behavior All of tests should pass. ### Actual behavior It usually raises `./include/ruby/internal/core/rstring.h:391: Assertion Failed: rbimpl_rstring_getmem:RB_TYPE_P(str, RUBY_T_STRING): actual type: 26` I have attached the entire output as assertion_failed.log ---Files-------------------------------- assertion_failed.log (495 KB) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/