[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Dir.foreach() crash

bdezonia

2/4/2009 7:04:00 PM

I continue to have a crash with a script I've written that recurses
through a disk calling foreach() as needed on directories.

I am getting the following error:

D:/BackupScripts/trimMachines.rb:130:in `open': Invalid argument - x:\.
\data\dubinin\vmap\v1180\soamafr\lib_180\trans\k\f\g\e (Errno::EINVAL)
from D:/BackupScripts/trimMachines.rb:130:in `foreach'
from D:/BackupScripts/trimMachines.rb:130:in `trimDirectory'
from D:/BackupScripts/trimMachines.rb:135:in `trimDirectory'
from D:/BackupScripts/trimMachines.rb:130:in `foreach'
from D:/BackupScripts/trimMachines.rb:130:in `trimDirectory'
from D:/BackupScripts/trimMachines.rb:135:in `trimDirectory'
from D:/BackupScripts/trimMachines.rb:130:in `foreach'
from D:/BackupScripts/trimMachines.rb:130:in `trimDirectory'
... 31 levels...
from D:/BackupScripts/trimMachines.rb:193:in `trimMachines'
from D:/BackupScripts/trimMachines.rb:178:in `foreach'
from D:/BackupScripts/trimMachines.rb:178:in `trimMachines'
from D:/BackupScripts/trimMachines.rb:244

I've checked and the directory mentioned does exist, the user account
has full access to the directory, the directory is not empty, the
directory name is < 255 chars long, etc.

This script works for millions of files with directories that have
much longer names and many more subdirectories than this example
failure. The failures happen routinely after a few days of running the
script and always on different directories.

I am running Ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] on
Windows Server 2003 64 bit.

Does anyone have a clue what the problem could be? Is this a Ruby bug?
6 Answers

7stud --

2/5/2009 1:19:00 AM

0

unknown wrote:
> I am getting the following error:
>
> D:/BackupScripts/trimMachines.rb:130:in `open': Invalid argument - x:\.
> \data\dubinin\vmap\v1180\soamafr\lib_180\trans\k\f\g\e (Errno::EINVAL)
>
> I've checked and the directory mentioned does exist, the user account
> has full access to the directory, the directory is not empty, the
> directory name is < 255 chars long, etc.
>
> This script works for millions of files with directories that have
> much longer names and many more subdirectories than this example
> failure. The failures happen routinely after a few days of running the
> script and always on different directories.
>
> Does anyone have a clue what the problem could be? Is this a Ruby bug?

Forward slashes are dangerous in strings because things like \v are
escape characters?
--
Posted via http://www.ruby-....

Julian Leviston

2/5/2009 2:00:00 AM

0

You mean backslashes. Yeah, use File::SEPARATOR or just use explicit
strings - ie single quoted

Blog: http://random8.ze...
Learn rails: http://sensei.ze...

On 05/02/2009, at 12:19 PM, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

> unknown wrote:
>> I am getting the following error:
>>
>> D:/BackupScripts/trimMachines.rb:130:in `open': Invalid argument -
>> x:\.
>> \data\dubinin\vmap\v1180\soamafr\lib_180\trans\k\f\g\e
>> (Errno::EINVAL)
>>
>> I've checked and the directory mentioned does exist, the user account
>> has full access to the directory, the directory is not empty, the
>> directory name is < 255 chars long, etc.
>>
>> This script works for millions of files with directories that have
>> much longer names and many more subdirectories than this example
>> failure. The failures happen routinely after a few days of running
>> the
>> script and always on different directories.
>>
>> Does anyone have a clue what the problem could be? Is this a Ruby
>> bug?
>
> Forward slashes are dangerous in strings because things like \v are
> escape characters?
> --
> Posted via http://www.ruby-....
>

7stud --

2/5/2009 3:40:00 AM

0

Julian Leviston wrote:
> You mean backslashes.

Whoops.
--
Posted via http://www.ruby-....

bdezonia

2/5/2009 3:06:00 PM

0

On Feb 4, 8:00 pm, Julian Leviston <jul...@coretech.net.au> wrote:
> You mean backslashes. Yeah, use File::SEPARATOR or just use explicit  
> strings - ie single quoted
>
> Blog:http://random8.ze...
> Learn rails:http://sensei.ze...
>
> On 05/02/2009, at 12:19 PM, 7stud -- <bbxx789_0...@yahoo.com> wrote:
>
> > unknown wrote:
> >> I am getting the following error:
>
> >> D:/BackupScripts/trimMachines.rb:130:in `open': Invalid argument -  
> >> x:\.
> >> \data\dubinin\vmap\v1180\soamafr\lib_180\trans\k\f\g\e  
> >> (Errno::EINVAL)
>
> >> I've checked and the directory mentioned does exist, the user account
> >> has full access to the directory, the directory is not empty, the
> >> directory name is < 255 chars long, etc.
>
> >> This script works for millions of files with directories that have
> >> much longer names and many more subdirectories than this example
> >> failure. The failures happen routinely after a few days of running  
> >> the
> >> script and always on different directories.
>
> >> Does anyone have a clue what the problem could be? Is this a Ruby  
> >> bug?
>
> > Forward slashes are dangerous in strings because things like \v are
> > escape characters?
> > --
> > Posted viahttp://www.ruby-....
>
>

All \'s in the script are entered as "\\". Like I said this script
works for millions of files. Its doubtful only one of them has a \v in
it. Also this script will not always fail on this directory which says
this is not the problem.

This is not the first problem I have had with Ruby on this (64 bit)
machine. If I run the two backup/trim scripts I have written at system
startup they eventually quit and I can't see the error messages
because they have no visible console. If I run them from consoles
explicitly the backup script never terminates and the trim script dies
after a few days.

Is it possible that the two scripts are accessing the directory at the
same time and somehow that is causing some kind of interference? The
backup script would be creating directories and putting files in them.
So the trim should not be thrown off. If in the trim script a previous
Dir.foreach in the parent directory found this directory then the
Dir.foreach in the child should certainly find the directory. Again
this seems like a Ruby bug.

7stud --

2/5/2009 3:42:00 PM

0

unknown wrote:
> I am running Ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] on
> Windows Server 2003 64 bit.
>
> Does anyone have a clue what the problem could be? Is this a Ruby bug?
>

It sounds like it may be a window's bug:


http://74.125.95.132/search?q=cache:_COKWkzEXhUJ:pullmonkey.com/2008/2/19/errno-einval-invalid-argument+Errno::EINVAL&hl=en&ct=clnk&cd=1&gl=us&cli...
--
Posted via http://www.ruby-....

bdezonia

2/5/2009 6:45:00 PM

0

On Feb 5, 9:41 am, 7stud -- <bbxx789_0...@yahoo.com> wrote:
> unknown wrote:
> > I am running Ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] on
> > Windows Server 2003 64 bit.
>
> > Does anyone have a clue what the problem could be? Is this a Ruby bug?
>
> It sounds like it may be a window's bug:
>
> http://74.125.95.132/search?q=cache:_COKWkzEXhUJ:pullmonkey......
> --
> Posted viahttp://www.ruby-....

Thanks for the pointer. I am not running Rails/Mongrel. Just ruby
scripts that manipulate files on a server on Windows. So I don't know
if this is the problem but it does give me testable solutions.

FYI the described problem at that URL is not a Windows bug. Its a Ruby
(or Mongrel) on Windows bug.