Skip to content

Document Ruby bug #21195 and drop Ruby 3.2 from CI - #1188

Merged
petergoldstein merged 2 commits into
4-3-stablefrom
docs/ruby-io-timeout-bug-4x
Oct 4, 2026
Merged

petergoldstein merged 2 commits into
4-3-stablefrom
docs/ruby-io-timeout-bug-4x

Conversation

@petergoldstein

Copy link
Copy Markdown
Owner

Addresses #1180.

Background

Ruby #21195: with IO#timeout set, a buffered read that a signal interrupts loses its error code, and Ruby aborts the whole process with [BUG] rb_sys_fail_path_in(io_fillbuf, ...) - errno == 0. Ruby code can't rescue it.

  • Affected: Ruby 3.2.x, 3.3.0–3.3.7 and 3.4.0–3.4.2.
  • Fixed: in 3.3.8 and 3.4.3. Ruby 3.2 reached end of life in March without the fix.
  • Why Dalli 4.x is affected: it sets IO#timeout on Ruby 3.2+ and reads replies with buffered gets, which is exactly the affected path. That's what intermittently crashed the Ruby 3.2 CI jobs on Prepare 4.3.5 release #1175.
  • Ruby 3.1 uses the SO_RCVTIMEO fallback instead, so it isn't affected.

We decided not to work around a VM bug in Dalli. Instead:

Changes

  • README: a "Known Ruby issue" note under Requirements, covering the affected and fixed Ruby versions and what the crash looks like.
  • CI: Ruby 3.2 is removed from the test matrix. The 3.3 and 3.4 jobs install the latest patch releases, which have the fix.
  • Changelog: entries under Unreleased.

Nothing under lib/ changes. Ruby 3.2 is still allowed by the gemspec (>= 3.1); this only documents the problem and stops CI from testing on it.

🤖 Generated with Claude Code

petergoldstein and others added 2 commits October 4, 2026 12:55
Ruby 3.2.x, 3.3.0-3.3.7 and 3.4.0-3.4.2 can abort the process with
"[BUG] rb_sys_fail_path_in(io_fillbuf, ...) - errno == 0" when a read
using IO#timeout is interrupted by a signal. Dalli 4.x sets IO#timeout
on Ruby 3.2+, so it can trigger this, and Ruby 3.2 reached end of life
without the fix. Document it in the README with the fixed versions, and
stop testing Ruby 3.2, whose CI runs intermittently crashed on it.

Refs #1180.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@petergoldstein
petergoldstein merged commit 6eacb6a into 4-3-stable Oct 4, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant