Skip to content

Document Ruby bug #21195 in the README - #1189

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

petergoldstein merged 2 commits into
mainfrom
docs/ruby-io-timeout-bug

Conversation

@petergoldstein

Copy link
Copy Markdown
Owner

Addresses the 5.x side of #1180. #1188 handles 4.x.

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.

5.x sets IO#timeout on its sockets and requires Ruby 3.3+, so users on Ruby 3.3.0–3.3.7 or 3.4.0–3.4.2 can hit it. It's fixed in 3.3.8 and 3.4.3. CI isn't affected, because setup-ruby installs the latest patch releases.

This adds a "Known Ruby issue" note to the README's Requirements section, with the affected and fixed versions, plus a changelog entry. Nothing under lib/ changes.

🤖 Generated with Claude Code

petergoldstein and others added 2 commits October 4, 2026 12:56
Ruby 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 sets IO#timeout on its
sockets, so users on those Rubies can hit it. Document the affected and
fixed versions.

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 0a0d8ad into main Oct 4, 2026
31 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