General

Profile

hanazuki (Kasumi Hanazuki)

  • Login: hanazuki
  • Registered on: 11/21/2017
  • Last sign in: 08/30/2026

Issues

open closed Total
Assigned issues 0 0 0
Reported issues 2 17 19

Activity

10/12/2026

12:35 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
Nested slices, which can be obtained by `buffer.slice.slice` now, have been introduced in commit:5f5d655 / [GH #19091](https://github.com/ruby/ruby/pull/19091), and they have a significant performance drawback as they require an O(depth)... hanazuki (Kasumi Hanazuki)

10/05/2026

03:44 PM Ruby Bug #22407 (Assigned): IO::Buffer#set_value does not call to_int for 128-bit values
IO::Buffer gained support for reading and writing 128-bit integers (:u128, :U128, :s128, and :S128) in Ruby 4.0 (commit:a7dc53b91c8475323b34d5a332fdb25d190e277d).
Unlike the other smaller integer types, IO::Buffer#set_value does not cal...
hanazuki (Kasumi Hanazuki)

09/12/2026

07:48 AM Ruby Revision ae5a02b0 (git): Free temporary `IO::Buffer` objects when I/O hooks raise. (#18666)
hanazuki (Kasumi Hanazuki)

09/08/2026

06:42 AM Ruby Bug #22298: IO::Buffer is left unfreed with an invalid pointer when fiber scheduler raises
patch: https://github.com/ruby/ruby/pull/18666 hanazuki (Kasumi Hanazuki)
06:39 AM Ruby Bug #22298 (Closed): IO::Buffer is left unfreed with an invalid pointer when fiber scheduler raises
When an installed Fiber scheduler raises from its I/O hook, the temporary IO::Buffer passed to the hook is left unfreed. The buffer may then outlive the memory it wraps, so accessing it afterward can cause undefined behavior.
This onl...
hanazuki (Kasumi Hanazuki)

06/26/2026

09:29 PM Ruby Revision 2bf4c08b (git): IO::Buffer#locked: Release lock even when the block raises (#16180)
IO::Buffer#locked: Release lock even when the block raises/breaks
Previously, `IO::Buffer#locked` leaks the lock when the block raises
an exception, or breaks.
Fixes: [Bug #21882]
hanazuki (Kasumi Hanazuki)

06/23/2026

10:23 AM Ruby Bug #22125 (Closed): IO::Buffer triggers use-after-free when it's freed/resized during enumeration
The block passed to `IO::Buffer#each` can free or resize the receiver (or its parent buffer when the reciver is a slice), which invalidates the memory region being iterated. The next iteration causes use-after-free.

repro:
```
./m...
hanazuki (Kasumi Hanazuki)

02/20/2026

01:57 AM Ruby Bug #21882 (Closed): IO::Buffer#locked leaves the buffer locked when the block raises
Applied in changeset commit:git|b5ccab2093c9bb19ae8564a935e6fd72ec7354cc.
----------
IO::Buffer#locked: Release lock even when the block raises (#16180)
IO::Buffer#locked: Release lock even when the block raises/breaks
Previously, `IO...
hanazuki (Kasumi Hanazuki)
01:56 AM Ruby Revision b5ccab20 (git): IO::Buffer#locked: Release lock even when the block raises (#16180)
IO::Buffer#locked: Release lock even when the block raises/breaks
Previously, `IO::Buffer#locked` leaks the lock when the block raises
an exception, or breaks.
Fixes: [Bug #21882]
hanazuki (Kasumi Hanazuki)

02/16/2026

06:07 AM Ruby Bug #21883 (Closed): IO::Buffer can be unlocked and freed by another thread during syscall
```ruby
# Assume this file is on a very slow device such as NFS.
io = File.open('/mnt/slowfs/slow')
buf = IO::Buffer.new(100)
t1 = Thread.new do
buf.locked do
sleep 0.5
end
buf.free
end
t2 = Thread.new do
b...
hanazuki (Kasumi Hanazuki)

Also available in: Atom