#4993: getDirectoryContents goes into an infinite loop
-----------------------+----------------------------------------------------
    Reporter:  bos     |       Owner:                     
        Type:  bug     |      Status:  new                
    Priority:  normal  |   Component:  libraries/directory
     Version:  7.0.1   |    Keywords:                     
    Testcase:          |   Blockedby:                     
          Os:  Linux   |    Blocking:                     
Architecture:  x86     |     Failure:  Runtime crash      
-----------------------+----------------------------------------------------
 This is a really peculiar bug. Prepare for some fun!

 I'm using a tool called boxgrinder to create a virtual machine image for
 running in Amazon's EC2 compute environment. The virtual machine is
 intended to contain GHC and a few libraries. I'm running boxgrinder itself
 in an EC2 virtual machine.

 boxgrinder works fine on a 64-bit virtual machine, when creating a 64-bit
 virtual machine, but gets stuck forever when I try to run it in a 32-bit
 VM to create a 32-bit image.

 The reason for boxgrinder hanging is that when installing {{{GHC}}},
 {{{ghc-pkg}}} is going into an infinite loop. I've got a super simple
 reproduction:

 {{{
 import System.Directory

 main = getDirectoryContents "." >>= print
 }}}

 If compiled, the above command runs fine in the regular 32-bit system
 image, but not in the {{{chroot}}} filesystem created by boxgrinder. In
 there, it goes into an infinite loop right after reading some of the
 directory contents:

 {{{
 ... everything looks normal ...
 open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
 getdents64(3, /* 25 entries */, 32768)  = 640
 getdents64(3, /* 0 entries */, 32768)   = 0
 --- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
 sigreturn()                             = ? (mask now [])
 --- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
 sigreturn()                             = ? (mask now [])
 --- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
 sigreturn()                             = ? (mask now [])
 ... and no more life! ...
 }}}

 I have verified that this infinite loop occurs both with 6.12.3 and 7.0.2
 RC2. Investigating further at the moment.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4993>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to