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 1 17 18

Activity

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)
04:24 AM Ruby Bug #21882: IO::Buffer#locked leaves the buffer locked when the block raises
Thank you for your review, nobu. I added test cases for break and throw. hanazuki (Kasumi Hanazuki)

02/15/2026

04:44 PM Ruby Bug #21882: IO::Buffer#locked leaves the buffer locked when the block raises
Patch: https://github.com/ruby/ruby/pull/16180 hanazuki (Kasumi Hanazuki)

Also available in: Atom