Backport #2559
IO#write raises Errno::EINVAL instead of expected Errno::EPIPE
| Status: | Closed | Start date: | 01/06/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 100% |
||
| Category: | - | |||
| Target version: | - |
Description
Test case:
require 'thread'
a, b = IO.pipe
Thread.new do
a.read(1)
a.close
end
sleep 0.1 # wait for thread to begin
b.write("x" * (1024 * 16)) # should be larger than pipe/socket buffer size
b.write on 1.8.7-p174 raises Errno::EPIPE, as expected.
1.8.7-p248 raises Errno::EINVAL.
It looks like this bug was introduced in revision 25918. Unapplying that revision fixes the problem.
Associated revisions
* io.c (io_fwrite): preserve errno. [ruby-core:27425]
merge revision(s) 26253:
* io.c (io_fwrite): preserve errno. [ruby-core:27425]
History
Updated by hongli (Hongli Lai) over 2 years ago
Simpler test case:
a, b = IO.pipe
a.close
b.write("x")
Updated by hongli (Hongli Lai) over 2 years ago
- File io-write-fix.diff added
Attached patch fixes the problem. Includes unit test.
Updated by nobu (Nobuyoshi Nakada) over 2 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r26253. Hongli, thank you for reporting this issue. Your contribution to Ruby is greatly appreciated. May Ruby be with you.
Updated by nobu (Nobuyoshi Nakada) over 2 years ago
- Status changed from Closed to Assigned
- Assignee set to shyouhei (Shyouhei Urabe)
Updated by normalperson (Eric Wong) over 2 years ago
Nobuyoshi Nakada <redmine@ruby-lang.org> wrote: > Issue #2559 has been updated by Nobuyoshi Nakada. > > Status changed from Open to Closed > % Done changed from 0 to 100 > > This issue was solved with changeset r26253. This affects a FreeBSD user on 1.8.7-p248. Can somebody please backport this to the 1.8.7 branch? Thanks -- Eric Wong
Updated by shyouhei (Shyouhei Urabe) about 2 years ago
- Status changed from Assigned to Closed
This issue was solved with changeset r27913. Hongli, thank you for reporting this issue. Your contribution to Ruby is greatly appreciated. May Ruby be with you.