#330 √ resolved
Le Huy

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

    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

    Ryan Davis February 29th, 2008 @ 03:58 PM

    • → State changed from “new” to “open”
    • → Assigned user changed from “” to “Eric Hodel”
  • Eric Hodel

    Eric Hodel June 23rd, 2008 @ 05:16 PM

    • → Milestone cleared.
  • Eric Hodel

    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

    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

    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 »

People watching this ticket

Tags