IO specs fail after changing IO::BufferSize while they should not
Reported by Le Huy | February 16th, 2008 @ 09:13 PM
try to change IO::BufferSize to lets say 16 then run and see
bin/ci -t x spec/ruby/1.8/core/io
Started
.EEEEEEEEEEEE.........F.F.F.F.............EF.FFF....FFF......FFF..F......F.F.....FEFEEE...EF......................................FFFF.FFFFEEEF..FF.F.FFFFF...EEFF
1)
IO#close_read raises an IOError on subsequent invocations ERROR
No method 'closed?' on an instance of NilClass.:
Kernel(NilClass)#closed? (method_missing_cv) at kernel/core/kernel.rb:604
Object#__script__ {} at ./spec/ruby/1.8/core/io/close_read_spec.rb:9
Proc#call at kernel/core/proc.rb:84
SpecRunner#describe {} at ./mspec/runner/runner.rb:141
Array#each at kernel/core/array.rb:573
SpecRunner#describe {} at ./mspec/runner/runner.rb:147
Array#each at kernel/core/array.rb:573
SpecRunner#describe at ./mspec/runner/runner.rb:156
Object#describe at ./mspec/runner/object.rb:11
Object#__script__ at ./spec/ruby/1.8/core/io/close_read_spec.rb:4
CompiledMethod#as_script at kernel/core/compiled_method.rb:210
Compile.single_load at kernel/core/compile.rb:221
Compile.unified_load {} at kernel/core/compile.rb:140
Array#each at kernel/core/array.rb:573
Compile.unified_load at kernel/core/compile.rb:120
Kernel(Object)#load at kernel/core/compile.rb:371
Object#__script__ {} at tmp/last_ci.rb:56
Array#each at kernel/core/array.rb:573
Object#__script__ at tmp/last_ci.rb:64
CompiledMethod#as_script at kernel/core/compiled_method.rb:210
Compile.single_load at kernel/core/compile.rb:221
Compile.load_from_extension at kernel/core/compile.rb:298
Object#__script__ at kernel/loader.rb:185
2)
IO#close_read raises an IOError on subsequent invocations ERROR
No method 'closed?' on an instance of NilClass.:
Kernel(NilClass)#closed? (method_missing_cv) at kernel/core/kernel.rb:604
Object#__script__ {} at ./spec/ruby/1.8/core/io/close_read_spec.rb:9
Proc#call at kernel/core/proc.rb:84
SpecRunner#describe {} at ./mspec/runner/runner.rb:141
Array#each at kernel/core/array.rb:573
SpecRunner#describe {} at ./mspec/runner/runner.rb:147
Array#each at kernel/core/array.rb:573
SpecRunner#describe at ./mspec/runner/runner.rb:156
Object#describe at ./mspec/runner/object.rb:11
Object#__script__ at ./spec/ruby/1.8/core/io/close_read_spec.rb:4
CompiledMethod#as_script at kernel/core/compiled_method.rb:210
Compile.single_load at kernel/core/compile.rb:221
Compile.unified_load {} at kernel/core/compile.rb:140
Array#each at kernel/core/array.rb:573
Compile.unified_load at kernel/core/compile.rb:120
Kernel(Object)#load at kernel/core/compile.rb:371
Object#__script__ {} at tmp/last_ci.rb:56
Array#each at kernel/core/array.rb:573
Object#__script__ at tmp/last_ci.rb:64
CompiledMethod#as_script at kernel/core/compiled_method.rb:210
Compile.single_load at kernel/core/compile.rb:221
Compile.load_from_extension at kernel/core/compile.rb:298
Object#__script__ at kernel/loader.rb:185
3)
IO#close_read allows subsequent invocation of close ERROR
No method 'closed?' on an instance of NilClass.:
Kernel(NilClass)#closed? (method_missing_cv) at kernel/core/kernel.rb:604
Object#__script__ {} at ./spec/ruby/1.8/core/io/close_read_spec.rb:9
Proc#call at kernel/core/proc.rb:84
SpecRunner#describe {} at ./mspec/runner/runner.rb:141
Array#each at kernel/core/array.rb:573
SpecRunner#describe {} at ./mspec/runner/runner.rb:147
Array#each at kernel/core/array.rb:573
SpecRunner#describe at ./mspec/runner/runner.rb:156
Object#describe at ./mspec/runner/object.rb:11
Object#__script__ at ./spec/ruby/1.8/core/io/close_read_spec.rb:4
CompiledMethod#as_script at kernel/core/compiled_method.rb:210
Compile.single_load at kernel/core/compile.rb:221
Compile.unified_load {} at kernel/core/compile.rb:140
Array#each at kernel/core/array.rb:573
Compile.unified_load at kernel/core/compile.rb:120
Kernel(Object)#load at kernel/core/compile.rb:371
Object#__script__ {} at tmp/last_ci.rb:56
Array#each at kernel/core/array.rb:573
Object#__script__ at tmp/last_ci.rb:64
CompiledMethod#as_script at kernel/core/compiled_method.rb:210
Compile.single_load at kernel/core/compile.rb:221
Compile.load_from_extension at kernel/core/compile.rb:298
Object#__script__ at kernel/loader.rb:185
[...]
Comments and changes to this ticket
-
Le Huy February 17th, 2008 @ 02:08 AM
- → Title changed from [BUG] a lot of io spec(s) fail after changing IO::BufferSize to [BUG] a lot of io spec(s) fail after changing IO::BufferSize while they should not
-
Ryan Davis February 29th, 2008 @ 03:58 PM
- → State changed from new to open
- → Assigned user changed from to Eric Hodel
-
Eric Hodel June 23rd, 2008 @ 05:16 PM
- → Milestone cleared.
-
Eric Hodel July 21st, 2008 @ 12:45 PM
- → Tag changed from to io spec
- → Title changed from [BUG] a lot of io spec(s) fail after changing IO::BufferSize while they should not to IO specs fail after changing IO::BufferSize while they should not
- → Assigned user cleared.
I don't know if this is a bug or not. While changing the buffer size should have no effect, it's not something that's exposed to the end user.
-
Le Huy July 22nd, 2008 @ 10:03 PM
It just shows that there is some problem related to using read buffer in IO code. Since most of IO spec using small files with size less then IO::BufferSize, hidden bugs are not detected when running spec.
-
Brian Ford November 24th, 2008 @ 02:45 PM
- → State changed from open to resolved
The IO buffer is set in the builtin class (i.e. in C++), so this should no longer be an issue. Reopen if it is.
Please Login or create a free account to add a new comment.
You can update this ticket by sending an email to from your email client. (help)
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
