This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ruby on Rails 2.0.2/Cygwin Bug

On Fri, 21 Dec 2007, Mike Boone wrote:

> I came up with a simple Ruby snippet that reproduces the problem. I'd
> appreciate it if other Cygwin users would try it. You can change the
> "cause_failure = true" line to say false and it will run.
> --urandom_test.rb------
> # Test failure of reading /dev/urandom after failed require
> # this method is from the Rails' source secret_key_generator.rb
> def generate_secret_with_urandom
>   return"/dev/urandom", 64).unpack("H*")[0]
> end
> cause_failure = true
> begin
>   require 'nonexistent_file'
> rescue LoadError
>   puts '' unless cause_failure
> end
> puts generate_secret_with_urandom
> -----------------------
> So far, the strace output of this is too low level for me to follow.
> Perhaps it will be clear to a regular Cygwin hacker.
> BTW, I'm running "ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-cygwin]".

As I mentioned before, I don't use Ruby too often.  But I just realized
something: to reproduce the error, you needed a "require
'nonexistent_file'", which will obviously set errno to ENOENT (which is
exactly the error you're seeing).  It's possible that checks
errno and exits right away if it's non-zero, and that nothing resets errno
before  Inserting the puts call will likely reset errno, thus
avoiding the bug.  So, the bug is probably in Ruby code for exception
handling ("rescue") -- it should reset errno so that subsequent code isn't
affected (and it's also suspicious that the code checks errno
without a valid reason, e.g., a non-zero return value).
      |\      _,,,---,,_ |
ZZZzz /,`.-'`'    -.  ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
     |,4-  ) )-,_. ,\ (  `'-'		old name: Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"That which is hateful to you, do not do to your neighbor.  That is the whole
Torah; the rest is commentary.  Go and study it." -- Rabbi Hillel

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]