[#11073] segfault printing instruction sequence for iterator — <noreply@...>

Bugs item #10527, was opened at 2007-05-02 14:42

14 messages 2007/05/02
[#11142] Re: [ ruby-Bugs-10527 ] segfault printing instruction sequence for iterator — Nobuyoshi Nakada <nobu@...> 2007/05/10

Hi,

[#11188] Re: [ ruby-Bugs-10527 ] segfault printing instruction sequence for iterator — Paul Brannan <pbrannan@...> 2007/05/16

On Thu, May 10, 2007 at 04:51:18PM +0900, Nobuyoshi Nakada wrote:

[#11234] Planning to release 1.8.6 errata — Urabe Shyouhei <shyouhei@...>

Hi all.

17 messages 2007/05/25

"read_nonblock" Problem (Windows and Ruby 1.8)

From: =?ISO-8859-15?Q?Wolfgang_N=E1dasi-Donner?= <wonado@...>
Date: 2007-05-15 19:08:36 UTC
List: ruby-core #11172
Hi!

We tried to use "read_nonblock" in Windows environments using Ruby 1.8, 
but no one (German Ruby-Forum) was able to do this with success. The 
error message will always be "bad file descriptor".

An Example, which works with normal I/O. File "read_nonblock_test.rb":
-----------------------------------------------------------------
diener = File::popen("ruby read_nonblock_diener.rb", "r+") #
puts "diener=#{diener}"

puts ("a".."z").each { |buchstabe|
  diener.puts buchstabe
  diener.flush
  erg =
    case 3
      when 1 then diener.read_nonblock(1)
      when 2 then diener.read(1)
      when 3 then diener.gets
    end
 
  break "nil erhalten." unless erg
 
  print ":" + erg
  $stdout.flush    # nur aus optischen Grden
}
    
puts "Fertig."
-----------------------------------------------------------------
 File "read_nonblock_diener.rb":
-----------------------------------------------------------------
8.times {
  erg =
    case 2
      when 1 then $stdin.read_nonblock(2)
      when 2 then $stdin.read(2)
    end
  puts  "diener erhielt <<#{erg}>>"
  $stdout.flush
  sleep 0.2
}
-----------------------------------------------------------------
It works fine:
-----------------------------------------------------------------
C:\Dokumente und Einstellungen\wolfgang\Desktop>ruby read_nonblock_test.rb
diener=#<File:0x2df89e4>
:diener erhielt <<a
:>>
:diener erhielt <<b
:>>
:diener erhielt <<c
:>>
:diener erhielt <<d
:>>
:diener erhielt <<e
:>>
:diener erhielt <<f
:>>
:diener erhielt <<g
:>>
:diener erhielt <<h
:>>
nil erhalten.
Fertig.
-----------------------------------------------------------------

When changing the switch to "case 1", the result is the following (the 
listing is a little bit confusing, because the output of one process 
appears after the system prompt).
-----------------------------------------------------------------
C:\Dokumente und Einstellungen\wolfgang\Desktop>ruby read_nonblock_test.rb
diener=#<File:0x2df89e4>
read_nonblock_test.rb:9:in `read_nonblock': Bad file descriptor 
(Errno::EBADF)
        from read_nonblock_test.rb:9
        from read_nonblock_test.rb:20:in `each'
        from read_nonblock_test.rb:4

C:\Dokumente und 
Einstellungen\wolfgang\Desktop>read_nonblock_diener.rb:4:in 
`read_nonblock': Bad fi
le descriptor (Errno::EBADF)
        from read_nonblock_diener.rb:4
        from read_nonblock_diener.rb:1:in `times'
        from read_nonblock_diener.rb:1
-----------------------------------------------------------------

Now I started some first tests with Ruby 1.9 (Windows2000, MinGW/MSYS 
generated) and received some other problems. In the moment we started 
the discussion about them in German Ruby-Forum. I will report them here 
if they are not based on errors I made.

Greets, WOlfgang N疆asi-Donner

In This Thread

Prev Next