From: "mame (Yusuke Endoh)" Date: 2012-04-22T08:54:25+09:00 Subject: [ruby-core:44519] [ruby-trunk - Bug #6228] [mingw] Errno::EBADF in ruby/test_io.rb on ruby_1_9_3 Issue #6228 has been updated by mame (Yusuke Endoh). Assignee changed from authorNari (Narihiro Nakamura) to nobu (Nobuyoshi Nakada) +1 for nagachika-san. jonforums (Jon Forums) wrote: > Why is the following > > ensure > fds.each {|fd| IO.for_fd(fd).close rescue next} > > wrong usage of IO.for_fd? f = open("...") # this first IO has a fd X which is opened now. IO.for_fd(f.fileno) # this second IO also has the fd X. GC.start # the second IO is GC'ed; the fd X is auto-closed. f.close # this attempts to close the fd X, but it is already closed => Errno::EBADF > Specifically, is there another style of explicit recycling of fds that doesn't require starting a GC cycle? Call IO#close explicitly. -- Yusuke Endoh ---------------------------------------- Bug #6228: [mingw] Errno::EBADF in ruby/test_io.rb on ruby_1_9_3 https://bugs.ruby-lang.org/issues/6228#change-26072 Author: jonforums (Jon Forums) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: test Target version: 1.9.3 ruby -v: ruby 1.9.3p172 (2012-03-30 revision 35179) [i386-mingw32] On Win7 32bit built with MinGW 4.6.2 using the RubyInstaller build recipes, I get the following test error: sh-3.1$ ruby --version ruby 1.9.3p172 (2012-03-30 revision 35179) [i386-mingw32] sh-3.1$ make test-all TESTS='openssl fiddle psych zlib io json mkmf pathname stringio erb fileutils ruby/test_io.rb ruby/test_io_m17n.rb ruby/test_file.rb' 7) Error: test_lines(TestIO): Errno::EBADF: Bad file descriptor c:/Users/Jon/Documents/RubyDev/ruby-git/test/ruby/test_io.rb:33:in `close' c:/Users/Jon/Documents/RubyDev/ruby-git/test/ruby/test_io.rb:33:in `rescue in block in pipe' c:/Users/Jon/Documents/RubyDev/ruby-git/test/ruby/test_io.rb:30:in `block in pipe' -- http://bugs.ruby-lang.org/