
#13945: 'ghc-pkg update' fails due to bad file descriptor error ---------------------------------+---------------------------------------- Reporter: mpickering | Owner: (none) Type: bug | Status: new Priority: high | Milestone: Component: Compiler | Version: 8.2.1-rc3 Resolution: | Keywords: Operating System: Linux | Architecture: Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | ---------------------------------+---------------------------------------- Description changed by bgamari: @@ -42,4 +42,4 @@ - database r/o if it can't open it > r/w, and it tried to acquire a write - lock (which will fail with EBADF if the file descriptor is only open for > - > read). and there is an SElinux context prohibiting your process opening - the db for write + database r/o if it can't open it r/w, and it tried to acquire a write lock + (which will fail with EBADF if the file descriptor is only open for read). + and there is an SElinux context prohibiting your process opening the db + for write New description: In the final part of installation when packages are registered, the following command fails {{{ "inplace/bin/ghc-cabal" register libraries/ghc-prim dist-install "/home/pgrads/mp16005/linux/installed-ghc/lib/ghc-8.2.0.20170708/bin/ghc" "/home/pgrads/mp16005/linux/installed-ghc/lib/ghc-8.2.0.20170708/bin/ghc- pkg" "/home/pgrads/mp16005/linux/installed-ghc/lib/ghc-8.2.0.20170708" '' '/home/pgrads/mp16005/linux/installed-ghc' '/home/pgrads/mp16005/linux /installed-ghc/lib/ghc-8.2.0.20170708' '/home/pgrads/mp16005/linux /installed-ghc/share/doc/ghc-8.2.0.20170708/html/libraries' NO }}} with the following output {{{ Registering library for ghc-prim-0.5.0.0.. ghc-cabal: '/home/pgrads/mp16005/linux/installed-ghc/lib/ghc-8.2.0.20170708/bin/ghc- pkg' exited with an error: ghc-pkg: Couldn't open database /home/pgrads/mp16005/linux/installed- ghc/lib/ghc-8.2.0.20170708/package.conf.d for modification: {handle: /home/pgrads/mp16005/linux/installed- ghc/lib/ghc-8.2.0.20170708/package.conf.d/package.cache.lock}: hLock: invalid argument (Bad file descriptor) }}} It might be something to do with the permissions I have on my machine but I used to be able to install ghc if I gave it a suitable prefix other than `/usr/local`. A workaround is to make sure that `HAVE_FLOCK` is not defined, the way I did this was commenting out the three relevant lines in libraries/base/configure.ac. geekosaur suggests on IRC that the problem might be
what might be possible is that hLock uses fcntl locking, ghc-pkg opens a database r/o if it can't open it r/w, and it tried to acquire a write lock (which will fail with EBADF if the file descriptor is only open for read). and there is an SElinux context prohibiting your process opening the db for write
-- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13945#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler