Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

File.expand_path falls into infinite loop #87

Open
michaelklishin opened this issue Jun 26, 2011 · 5 comments
Open

File.expand_path falls into infinite loop #87

michaelklishin opened this issue Jun 26, 2011 · 5 comments

Comments

@michaelklishin
Copy link

Some projects on travis-ci.org fail with fakefs going into an infinite loop, like so:

/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file.rb:122:in `expand_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:95:in `normalize_path'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/file_system.rb:100:in `current_dir'
/home/vagrant/.rvm/gems/rbx-head/gems/fakefs-0.3.2/lib/fakefs/dir.rb:107:in `pwd'
kernel/common/file.rb:445:in `expand_path'
@ghost
Copy link

ghost commented Jul 19, 2011

I hit that issue, too. I guess FakeFS::File.expand_path shouldn't fall back to RealFile.expand_path.

@ghost
Copy link

ghost commented Jul 19, 2011

I tried passing RealDir#pwd to File#expand_path, that fixed the infinite loop, at least. I'm now struggling with 4 more failures but haven't found out yet if they are related to expand_path or just simple bugs with Rubinius.

@ghost
Copy link

ghost commented Jul 20, 2011

Patch submitted at #88

I'm pretty sure that the remaining errors and failures are not directly related to the infinite loop.

@ghost ghost assigned smtlaissezfaire Sep 5, 2011
@ghost
Copy link

ghost commented Sep 6, 2011

Do bundle exec rake on a more or less recent rbx-2.0.0pre for reproducing this.

@evanphx
Copy link

evanphx commented Oct 21, 2011

This happens because FakeFS stubs out soo much it confuses the heck out of Rubinius. FakeFS basically depends on the idea that ruby is NOT written in ruby.

I'm working on some fixes to Rubinius to mitigate the problem, but I fear that FakeFS in it's current incarnation will never be bug-free on Rubinius because of the constant internal confusion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants