Re: Building Ruby (was Re: Ruby on Rails 2.0.2/Cygwin Bug)

2008-01-08 Thread Corinna Vinschen
On Jan  2 14:01, Dave Korn wrote:
 On 02 January 2008 10:25, melvins wrote:
  Mike Boone wrote:
  
  In reference to that /dev/urandom bug I encountered last week, I
  thought I might try to build Ruby from source on Cygwin and see how it
  works. 
  
  I downloaded Ruby 1.8.6-p111 off the ruby-lang.org website, unpacked
  it, then ./configure and make. This fails with:
  
  ./missing/strftime.c:193: error: 'timezone' redeclared as different kind
  of symbol /usr/include/cygwin/time.h:33: error: previous declaration of
  'timezone' was here make: *** [strftime.o] Error 1
  
 
  I had the same problem with you mike, what I did is I downloaded a
  stable-snapshot version of ruby, then I copy the missing/strftime.c file to
  hte 1.8.6 version,   run make again, then it now all works.
 
   For full explanation, see
 
 http://cygwin.com/ml/cygwin/2007-12/msg3.html

I've proposed a patch on comp.lang.ruby:
http://groups.google.com/group/comp.lang.ruby/msg/0e3f786c969bcd07


Corinna

-- 
Corinna Vinschen  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader  cygwin AT cygwin DOT com
Red Hat

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Building Ruby (was Re: Ruby on Rails 2.0.2/Cygwin Bug)

2008-01-02 Thread melvins

I had the same problem with you mike, what I did is I downloaded a
stable-snapshot version of ruby, then I copy the missing/strftime.c file to
hte 1.8.6 version,   run make again, then it now all works.



Mike Boone wrote:
 
 In reference to that /dev/urandom bug I encountered last week, I
 thought I might try to build Ruby from source on Cygwin and see how it
 works.
 
 I downloaded Ruby 1.8.6-p111 off the ruby-lang.org website, unpacked
 it, then ./configure and make. This fails with:
 
 ./missing/strftime.c:193: error: 'timezone' redeclared as different
 kind of symbol
 /usr/include/cygwin/time.h:33: error: previous declaration of
 'timezone' was here
 make: *** [strftime.o] Error 1
 
 I'm not sure why that happens, and I'm not sure what's different about
 the Cygwin Ruby package which works. Any ideas?
 
 Incidentally, I downloaded the new development release of Ruby 1.9.0,
 and it compiles just fine on Cygwin. It also runs my /dev/urandom bug
 script without failing, and lseek is not called in the strace.
 
 Mike Boone
 http://boonedocks.net/mike/
 
 --
 Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
 Problem reports:   http://cygwin.com/problems.html
 Documentation: http://cygwin.com/docs.html
 FAQ:   http://cygwin.com/faq/
 
 
 

-- 
View this message in context: 
http://www.nabble.com/Building-Ruby-%28was-Re%3A-Ruby-on-Rails-2.0.2-Cygwin-Bug%29-tp14505644p14576153.html
Sent from the Cygwin list mailing list archive at Nabble.com.


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Building Ruby (was Re: Ruby on Rails 2.0.2/Cygwin Bug)

2008-01-02 Thread Mike Boone
On Jan 2, 2008 5:24 AM, melvins [EMAIL PROTECTED] wrote:

 I had the same problem with you mike, what I did is I downloaded a
 stable-snapshot version of ruby, then I copy the missing/strftime.c file to
 hte 1.8.6 version,   run make again, then it now all works.

This worked for me too. Both the 1.8.6 with the new strftime.c and the
stable-snapshot compile OK in Cygwin. However, they both also fail my
test /dev/urandom script. There must be something peculiar as to how
1.8.x builds in Cygwin that makes that script fail. Maybe now that I
have the source I could debug it, but I'm rusty on that.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: Building Ruby (was Re: Ruby on Rails 2.0.2/Cygwin Bug)

2008-01-02 Thread Dave Korn
On 02 January 2008 10:25, melvins wrote:
 Mike Boone wrote:
 
 In reference to that /dev/urandom bug I encountered last week, I
 thought I might try to build Ruby from source on Cygwin and see how it
 works. 
 
 I downloaded Ruby 1.8.6-p111 off the ruby-lang.org website, unpacked
 it, then ./configure and make. This fails with:
 
 ./missing/strftime.c:193: error: 'timezone' redeclared as different kind
 of symbol /usr/include/cygwin/time.h:33: error: previous declaration of
 'timezone' was here make: *** [strftime.o] Error 1
 

 I had the same problem with you mike, what I did is I downloaded a
 stable-snapshot version of ruby, then I copy the missing/strftime.c file to
 hte 1.8.6 version,   run make again, then it now all works.

  For full explanation, see

http://cygwin.com/ml/cygwin/2007-12/msg3.html


cheers,
  DaveK
-- 
Can't think of a witty .sigline today


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2008-01-02 Thread Mike Boone
On Dec 22, 2007 3:46 PM, Igor Peshansky [EMAIL PROTECTED] wrote:
 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 File.read checks
 errno and exits right away if it's non-zero, and that nothing resets errno
 before File.read.  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 File.read code checks errno
 without a valid reason, e.g., a non-zero return value).

Looks like you got it right. They just fixed the Ruby source:
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/io.c?r1=13774r2=14858

I made the change to my io.c in the stable-snapshot and it compiles OK
and runs my test script without the not-found error.

Not sure how long this will take to find its way into Cygwin's ruby
package, but I'm glad it was finally solved.

Mike Boone.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Building Ruby (was Re: Ruby on Rails 2.0.2/Cygwin Bug)

2007-12-26 Thread Mike Boone
In reference to that /dev/urandom bug I encountered last week, I
thought I might try to build Ruby from source on Cygwin and see how it
works.

I downloaded Ruby 1.8.6-p111 off the ruby-lang.org website, unpacked
it, then ./configure and make. This fails with:

./missing/strftime.c:193: error: 'timezone' redeclared as different
kind of symbol
/usr/include/cygwin/time.h:33: error: previous declaration of
'timezone' was here
make: *** [strftime.o] Error 1

I'm not sure why that happens, and I'm not sure what's different about
the Cygwin Ruby package which works. Any ideas?

Incidentally, I downloaded the new development release of Ruby 1.9.0,
and it compiles just fine on Cygwin. It also runs my /dev/urandom bug
script without failing, and lseek is not called in the strace.

Mike Boone
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-22 Thread Corinna Vinschen
On Dec 21 22:13, 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 File.read(/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
 ---

Looks like a bug in ruby.  First of all, this works fine under Cygwin:

  $ dd if=/dev/urandom bs=64 count=1 | od -c
  1+0 records in
  1+0 records out
  64 bytes (64 B) copied, 0.39 s, 0.2 kB/s
  000 9d78 007a 8e7c 0cad 5d1c 6778 1298 88a9
  020 4256 8e69 be6f c3b5 be0a 695e 9446 5689
  040 db44 8a04 0159 175c b84e 79cf 0ebc 9ee7
  060 7e3d 8338 31bd b8e7 15df ab91 ea55 90b6
  100

And this, too:

  $ dd if=/dev/urandom of=/dev/urandom bs=64 count=1 
  1+0 records in
  1+0 records out
  64 bytes (64 B) copied, 0.015 s, 4.3 kB/s

Running the above ruby script under strace shows:

 1345 2541402 [main] ruby 3012 open: open (/dev/urandom, 0x0)
 [...]
  255 2543760 [main] ruby 3012 open: 3 = open (/dev/urandom, 0x0)

It now has a valid file descriptor.

  606 2544366 [main] ruby 3012 _cygwin_istext_for_stdio: fd 3: opened as binary
 2272 2546638 [main] ruby 3012 fhandler_base::fstat: here
  349 2546987 [main] ruby 3012 fstat64: 0 = fstat (3, 0x2409720)

fstat returned successfully.

  687 2547674 [main] ruby 3012 isatty: 0 = isatty (3)

/dev/urandom is obviously no tty.

  358 2548032 [main] ruby 3012 readv: readv (3, 0x2409740, 1) blocking, 
sigcatchers 10
  216 2548248 [main] ruby 3012 readv: no need to call ready_for_read
35355 2583603 [main] ruby 3012 readv: 65536 = readv (3, 0x2409740, 1), errno 2

read returned successfully with 64K random bytes in the buffer.

51453 2635056 [main] ruby 3012 lseek64: 0 = lseek (3, 0, 1)
  660 2635716 [main] ruby 3012 lseek64: 0 = lseek (3, -65472, 0)

Two lseek's of dubious purpose.  Why did it read 64K and then tries to
seek back?  Why does it rely on the return code of the first lseek?
Doing the same on Linux returns also with 0 from the first lseek, but
with -1 from the second call and errno set to EINVAL.  However,
according to the strace, it never *tries* to call lseek on Linux.

 9782 2645498 [main] ruby 3012 close: close (3)
  304 2645802 [main] ruby 3012 close: 0 = close (3)

The file descriptor gets closed.

The above is all about /dev/urandom in the strace output.


Corinna

-- 
Corinna Vinschen  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader  cygwin AT cygwin DOT com
Red Hat

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-22 Thread Mike Boone
On Dec 22, 2007 7:51 AM, Corinna Vinschen [EMAIL PROTECTED] wrote:
 Looks like a bug in ruby.  First of all, this works fine under Cygwin:

Thanks for analyzing this. I'll take it up at comp.lang.ruby and see
what happens.
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/284492

Mike Boone
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-22 Thread Mike Boone
Over on the comp.ruby.lang group, I got a reply from Matz, the lead
Ruby developer:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/284495

He states: The bug must lie between Cygwin and Ruby.  We don't call
lseek explicitly.  You can clearly see this by doing strace on Linux
(or other platforms), which don't call lseek at all.  So, someone (in
the library, I guess) must call lseek weirdly on Cygwin.

I know that Corinna noted that Linux was doing lseeks:

On Dec 22, 2007 7:51 AM, Corinna Vinschen [EMAIL PROTECTED] wrote:
 Two lseek's of dubious purpose.  Why did it read 64K and then tries to
 seek back?  Why does it rely on the return code of the first lseek?
 Doing the same on Linux returns also with 0 from the first lseek, but
 with -1 from the second call and errno set to EINVAL.  However,
 according to the strace, it never *tries* to call lseek on Linux.

However, when I tried strace ruby urandom_test.rb on a few flavors of
Linux, I did not see lseeks in the output. I ran the code on Ubuntu
7.04, RHEL 2.1AS, and whatever brand of Linux is running on Dreamhost.
Which version did you try?

My Cygwin:
   29  467324 [main] ruby 2944 open: 3 = open (/dev/urandom, 0x0)
   51  467375 [main] ruby 2944 _cygwin_istext_for_stdio: fd 3: opened as binary
 2461  469836 [main] ruby 2944 fhandler_base::fstat: here
   45  469881 [main] ruby 2944 fstat64: 0 = fstat (3, 0x24096E0)
  385  470266 [main] ruby 2944 isatty: 0 = isatty (3)
   35  470301 [main] ruby 2944 sig_send: sendsig 0x6F8, pid 2944,
signal -34, its_me 1
  414  470715 [main] ruby 2944 sig_send: wakeup 0x6FC
   60  470775 [main] ruby 2944 sig_send: Waiting for pack.wakeup 0x6FC
  178  470953 [sig] ruby 2944 wait_sig: signalling pack.wakeup 0x6FC
  146  471099 [main] ruby 2944 sig_send: returning 0x0 from sending signal -34
   36  471135 [main] ruby 2944 readv: readv (3, 0x2409700, 1)
blocking, sigcatchers 10
  133  471268 [main] ruby 2944 readv: no need to call ready_for_read
23838  495106 [main] ruby 2944 readv: 65536 = readv (3, 0x2409700, 1), errno 2
  940  496046 [main] ruby 2944 lseek64: 0 = lseek (3, 0, 1)
  524  496570 [main] ruby 2944 lseek64: 0 = lseek (3, -65472, 0)
   73  496643 [main] ruby 2944 close: close (3)


RHEL 2.1AS (Ubuntu 7.04 output was similar):
open(/dev/urandom, O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFCHR|0644, st_rdev=makedev(1, 9), ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbffe9c30) = -1 EINVAL
(Invalid argument)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40018000
read(3, \20gI\263\322j5E\345\24[\245\200,\375\23UT}\210(\365\310...,
4096) = 4096
close(3)= 0

Thanks,
Mike Boone
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-22 Thread Igor Peshansky
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 File.read(/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 File.read checks
errno and exits right away if it's non-zero, and that nothing resets errno
before File.read.  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 File.read code checks errno
without a valid reason, e.g., a non-zero return value).
Igor
-- 
http://cs.nyu.edu/~pechtcha/
  |\  _,,,---,,_[EMAIL PROTECTED] | [EMAIL PROTECTED]
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:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-21 Thread Mike Boone
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 File.read(/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].

Mike Boone
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-20 Thread Mike Boone
On Dec 19, 2007 11:59 PM, Igor Peshansky [EMAIL PROTECTED] wrote:
 Well, /dev/urandom certainly exists in Cygwin.  I'm not a Ruby expert, but
 considering that adding a puts() before the file open seems to fix it, I'd
 look somewhere in the Ruby code.  But you can try running the original
 under strace to see what exactly Ruby is trying to do with /dev/urandom.

I ran strace ruby /usr/bin/rails test_app  strace.txt, and it
generated 54MB of text. It looks like the last 100 lines or so might
be relevant, but I don't know how to decipher them. The No such file
or directory - /dev/urandom occurs toward the bottom.

http://boonedocks.net/code/rails-urandom-strace.txt

I'd appreciate it if anyone is willing to have a look. I guess my next
step might be to rerun the strace with the puts() statement in there
and see what the difference is.

Thanks,
Mike.
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-20 Thread Frodak Baksik
On Dec 20, 2007 10:28 AM, Mike Boone  wrote:
 On Dec 19, 2007 11:59 PM, Igor Peshansky wrote:
  Well, /dev/urandom certainly exists in Cygwin.  I'm not a Ruby expert, but
  considering that adding a puts() before the file open seems to fix it, I'd
  look somewhere in the Ruby code.  But you can try running the original
  under strace to see what exactly Ruby is trying to do with /dev/urandom.

 I ran strace ruby /usr/bin/rails test_app  strace.txt, and it
 generated 54MB of text. It looks like the last 100 lines or so might
 be relevant, but I don't know how to decipher them. The No such file
 or directory - /dev/urandom occurs toward the bottom.

 http://boonedocks.net/code/rails-urandom-strace.txt

 I'd appreciate it if anyone is willing to have a look. I guess my next
 step might be to rerun the strace with the puts() statement in there
 and see what the difference is.

 Thanks,
 Mike.
 http://boonedocks.net/mike/

 --


Can you access /dev/urandom outside of ruby?  It might be a simpler
check to ensure that /dev/urandom is working.

Something like to check reading:
head -c 10 /dev/urandom  rnd.bin

and then to check writing:
cat rnd.bin  /dev/urandom
or
strace -o strace.txt sh -c 'cat rnd.bin  /dev/urandom'

It looked like from the strace that reading worked, but writing didn't.

Regards,
Frodak

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-20 Thread Mike Boone
On Dec 20, 2007 4:29 PM, Frodak Baksik [EMAIL PROTECTED] wrote:
 On Dec 20, 2007 10:28 AM, Mike Boone  wrote:
 Can you access /dev/urandom outside of ruby?  It might be a simpler
 check to ensure that /dev/urandom is working.

I ran all the commands you suggested with no problems.

The problem function is this in the Rails code:
def generate_secret_with_urandom
  return File.read(/dev/urandom, 64).unpack(H*)[0]
end

If I put that function directly in its own Ruby code file and run it
from Cygwin, there is no problem, so I guess it has something to do
with how it's called.

Also, for some reason you can change the function to this in the Rails
code and everything works.

def generate_secret_with_urandom
  puts meaningless output
  return File.read(/dev/urandom, 64).unpack(H*)[0]
end

I'm going to re-strace things with the modified function and see what
the difference might be.

Mike Boone
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-20 Thread Mike Boone
OK, I modified the Rails source code to add the puts statement just
above the statement that reads from /dev/urandom. I then ran strace
again and looked for the relevant section of the output. I trimmed out
the leading numeric stuff so I could run a diff on them.

Here is the output of the failing strace:

stat_worker: 0 = (/dev/urandom, 0x2402BD0)
sig_send: sendsig 0x6F8, pid 2152, signal -34, its_me 1
sig_send: wakeup 0x6E0
sig_send: Waiting for pack.wakeup 0x6E0
wait_sig: signalling pack.wakeup 0x6E0
sig_send: returning 0x0 from sending signal -34

Here is the output of the working strace (with the extra puts statement):

stat_worker: 0 = (/dev/urandom, 0x2402BD0)
get_file_attribute: file: C:\cygwin\home\mb\some disk file
cygpsid::debug_print: get_sids_info: owner SID =
S-1-5-21-1614895754-1935655697-1343024091-1003
cygpsid::debug_print: get_sids_info: group SID =
S-1-5-21-1614895754-1935655697-1343024091-513
get_info_from_sd: ACL 1A4, uid 1003, gid 513
fhandler_base::fstat_helper: 0 = fstat (, 0x2404810) st_atime=476B0E59
st_size=56814726, st_mode=0x81A4, st_ino=19703248369749074, sizeof=96
fstat64: 0 = fstat (1, 0x2404810)
sig_send: sendsig 0x710, pid 3160, signal -34, its_me 1
sig_send: wakeup 0x6F4
sig_send: Waiting for pack.wakeup 0x6F4
wait_sig: signalling pack.wakeup 0x6F4
sig_send: returning 0x0 from sending signal -34

There are some other diffs since the modified code continues on to
successfully complete, but this is the section that references
/dev/urandom and has diffs.

Can anyone make sense of it?

Thanks,
Mike Boone
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Ruby on Rails 2.0.2/Cygwin Bug

2007-12-19 Thread Mike Boone
Can anyone running Cygwin and Ruby on Rails comment on this problem?

Create a Rails 2.0.2 application and see if it fails with this error:
No such file or directory - /dev/urandom

I filed a bug on Rails, please read for more details.
http://dev.rubyonrails.org/ticket/10544

I'm not sure if this is Cygwin's fault or something peculiar about the
Rails code, though it looks reasonable.

Thanks,
Mike Boone.
http://boonedocks.net/mike/

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Ruby on Rails 2.0.2/Cygwin Bug

2007-12-19 Thread Igor Peshansky
On Wed, 19 Dec 2007, Mike Boone wrote:

 Can anyone running Cygwin and Ruby on Rails comment on this problem?

 Create a Rails 2.0.2 application and see if it fails with this error:
 No such file or directory - /dev/urandom

 I filed a bug on Rails, please read for more details.
 http://dev.rubyonrails.org/ticket/10544

 I'm not sure if this is Cygwin's fault or something peculiar about the
 Rails code, though it looks reasonable.

Well, /dev/urandom certainly exists in Cygwin.  I'm not a Ruby expert, but
considering that adding a puts() before the file open seems to fix it, I'd
look somewhere in the Ruby code.  But you can try running the original
under strace to see what exactly Ruby is trying to do with /dev/urandom.

Also note that if, for some reason, you end up with non-Cygwin Ruby *or* a
non-Cygwin DLL that Ruby gets its File library from, it will definitely
not know about /dev/urandom.

In short, strace is your friend.  In particular, it will tell you the
exact Windows error Ruby gets when trying to open the device, as well as
any path translations that Cygwin tries to do in that case.
Igor
-- 
http://cs.nyu.edu/~pechtcha/
  |\  _,,,---,,_[EMAIL PROTECTED] | [EMAIL PROTECTED]
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:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/