[Win32utils-devel] rb_w32_select function patch

Daniel Berger djberg96 at gmail.com
Mon Apr 28 21:29:47 EDT 2008


Heesob Park wrote:
> Hi, all
>  
> As you know, rb_w32_select don't work well with standard input.
> Here is test code:
> 
> t = Thread.new {
>    while true
>      puts "printing a line"
>      sleep 2
>    end
>  }
> 
> gets
> t.exit
> puts "exiting"
>  
> Following is the first version of patch code of rb_w32_select  function 
> in win32.c
> It is inspired by cygwin select implementation code and adopted some 
> code from it.
> The basic idea is creating thread for each file descriptor and wait events.
>  
> What's your thought about it?

I applied the patch and then tried to run the thread tests in my 
ruby_test test suite against Ruby 1.8.6 p114 on Windows XP, built with 
VC++ 8.

C:\Documents and Settings\djberge\workspace\ruby_test>ruby test_thread.rb
Loaded suite test_thread
Started
......................................................C:/rubyVC8/lib/ruby/1.8/test/unit/ui/console/testrunner.
rb:113: [BUG] Segmentation fault
ruby 1.8.6 (2008-03-03) [i386-mswin32_80]


This application has requested the Runtime to terminate it in an unusual 
way.
Please contact the application's support team for more information.

Where "test_thread.rb" is just:

# test_thread.rb
$LOAD_PATH.unshift File.join(Dir.pwd, 'lib')

Dir['test/core/thread/**/*.rb'].each{ |f|
    begin
       require f
    rescue LoadError
       next
    end
}

Or you can just run 'rake test_thread' if you have Rake installed.

You can grab "ruby_test" out of the "shards" CVS repo.

  cvs -d :pserver:anonymous at rubyforge.org:/var/cvs/shards login
cvs -d :pserver:anonymous at rubyforge.org:/var/cvs/shards checkout ruby_test

Is it possible I applied the patch wrong? Do you happen to have a 
unified diff, i.e. "diff -u" output?

Regards,

Dan



More information about the win32utils-devel mailing list