Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • GHC GHC
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 5.6k
    • Issues 5.6k
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 639
    • Merge requests 639
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Model experiments
  • Analytics
    • Analytics
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Glasgow Haskell CompilerGlasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #13945

'ghc-pkg update' fails due to bad file descriptor error

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

Edited Mar 10, 2019 by Ben Gamari
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking