2
votes

I'm running the latest version of Haskell Platform 8.6.3 on a fairly standard Windows 10 x64 system.

Now I am at my wits end getting packages installed from Hackage to work reliably. Attributing my issues to local configuration problems, I've taken all steps short of nuking my Windows installation. I have uninstalled and reinstalled Hackage, rebooted, scoured every last configuration file I could in any hidden directory or otherwise, deleted every registry key apparently related to Haskell, most of them multiple times, all to no avail:

Packages installed with cabal just don't appear to be available under ghci, WinGHCI, either to be loaded interactively with (:m) under ghci or when compiling using ghc under WinGHCI, no matter what I do.

Below are some symptoms. Any suggestions?

#cabal new-update
Downloading the latest package list from hackage.haskell.org
To revert to previous state run:
    cabal new-update 'hackage.haskell.org,2019-04-02T19:24:19Z'

#cabal new-install --lib vector
Resolving dependencies...
Up to date

#ghci
Prelude> :m Data.Vector

<no location info>: error:
    Could not find module ‘Data.Vector’
    Perhaps you meant Data.Functor (from base-4.12.0.0)

#ghc -O -optc-O3 -funfolding-use-threshold=16 -fexcess-precision -Wall -Wno-type-defaults -Wno-unused-imports -Wno-unused-top-binds -rtsopts "P663.hs"
[1 of 1] Compiling Main             ( P663.hs, P663.o )

P663.hs:54:1: error:
    Could not find module ‘Data.Vector.Unboxed’
    Use -v to see a list of the files searched for.
   |
54 | import           Data.Vector.Unboxed (Vector, (!))    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 #ghc-pkg list
C:\Program Files\Haskell Platform\8.6.3\lib\package.conf.d
    Cabal-2.4.0.1
    Win32-2.6.1.0
    array-0.5.3.0
    base-4.12.0.0
    binary-0.8.6.0
    bytestring-0.10.8.2
    containers-0.6.0.1
    deepseq-1.4.4.0
    directory-1.3.3.0
    filepath-1.4.2.1
    (ghc-8.6.3)
    ghc-boot-8.6.3
    ghc-boot-th-8.6.3
    ghc-compact-0.1.0.0
    ghc-heap-8.6.3
    ghc-prim-0.5.3
    ghci-8.6.3
    haskeline-0.7.4.3
    hpc-0.6.0.3
    hscolour-1.24.4
    integer-gmp-1.0.2.0
    libiserv-8.6.3
    mtl-2.2.2
    parsec-3.1.13.0
    pretty-1.1.3.6
    process-1.6.3.0
    rts-1.0
    stm-2.5.0.0
    template-haskell-2.14.0.0
    text-1.2.3.1
    time-1.8.0.2
    transformers-0.5.5.0
    xhtml-3000.2.2.1

#ghc-pkg list --user-package-db=C:\Users\Carl\AppData\Roaming\cabal\store\ghc-8.6.3\package.db
C:\Program Files\Haskell Platform\8.6.3\lib\package.conf.d
    Cabal-2.4.0.1
    Win32-2.6.1.0
    array-0.5.3.0
    base-4.12.0.0
    binary-0.8.6.0
    bytestring-0.10.8.2
    containers-0.6.0.1
    deepseq-1.4.4.0
    directory-1.3.3.0
    filepath-1.4.2.1
    (ghc-8.6.3)
    ghc-boot-8.6.3
    ghc-boot-th-8.6.3
    ghc-compact-0.1.0.0
    ghc-heap-8.6.3
    ghc-prim-0.5.3
    ghci-8.6.3
    haskeline-0.7.4.3
    hpc-0.6.0.3
    hscolour-1.24.4
    integer-gmp-1.0.2.0
    libiserv-8.6.3
    mtl-2.2.2
    parsec-3.1.13.0
    pretty-1.1.3.6
    process-1.6.3.0
    rts-1.0
    stm-2.5.0.0
    template-haskell-2.14.0.0
    text-1.2.3.1
    time-1.8.0.2
    transformers-0.5.5.0
    xhtml-3000.2.2.1

C:\Users\Carl\AppData\Roaming\cabal\store\ghc-8.6.3\package.db
    primitive-0.6.4.0
    vector-0.12.0.2

#set GHC_PACKAGE_PATH=C:\Users\Carl\AppData\Roaming\cabal\store\ghc-8.6.3\package.db;
#ghc-pkg list
C:\Program Files\Haskell Platform\8.6.3\lib\package.conf.d
    Cabal-2.4.0.1
    Win32-2.6.1.0
    array-0.5.3.0
    base-4.12.0.0
    binary-0.8.6.0
    bytestring-0.10.8.2
    containers-0.6.0.1
    deepseq-1.4.4.0
    directory-1.3.3.0
    filepath-1.4.2.1
    (ghc-8.6.3)
    ghc-boot-8.6.3
    ghc-boot-th-8.6.3
    ghc-compact-0.1.0.0
    ghc-heap-8.6.3
    ghc-prim-0.5.3
    ghci-8.6.3
    haskeline-0.7.4.3
    hpc-0.6.0.3
    hscolour-1.24.4
    integer-gmp-1.0.2.0
    libiserv-8.6.3
    mtl-2.2.2
    parsec-3.1.13.0
    pretty-1.1.3.6
    process-1.6.3.0
    rts-1.0
    stm-2.5.0.0
    template-haskell-2.14.0.0
    text-1.2.3.1
    time-1.8.0.2
    transformers-0.5.5.0
    xhtml-3000.2.2.1

C:\Users\Carl\AppData\Roaming\ghc\x86_64-mingw32-8.6.3\package.conf.d
    (no packages)
C:\Users\Carl\AppData\Roaming\cabal\store\ghc-8.6.3\package.db
    primitive-0.6.4.0
    vector-0.12.0.2

# ghci
GHCi, version 8.6.3: http://www.haskell.org/ghc/  :? for help
Prelude> :m Data.Vector
Prelude Data.Vector> toList $ empty

Access violation in generated code when reading 0xffffffffffffffff

 Attempting to reconstruct a stack trace...

   Frame        Code address
 * 0x7e5dd90    0x3d7d618 C:\Program Files\Haskell Platform\8.6.3\bin\ghc.exe+0x397d618
2
At one point I couldn't even compile the template project with a fresh download of haskell-platform on windows. I had to revert to an earlier ghc version to get things running, and then a couple months later or so I was able to update to the latest and it worked. Might be worth a shot trying to downgrade some stuff to see if it works.Nathan Wilson
My suggestion is to do what you know you should be doing, and use unix. You can install an image on windows. From there you can use stack.Michael Litchard
This may be a case where going with the flow gets your work done faster. Emacs makes a fine IDE, but would require learning the "Emacs Way". If you don't need much more than coloring cues, graphical vim may meet your requirements.Michael Litchard
I don't know how recent your installation is, but I just installed haskell on my windows machine from scratch about a month ago, and it all worked but I avoided Haskell Platform like the plague and just installed stack. It was pretty seamlessNathan Wilson
I use stack on both linux and windows, so to be sure I'm working with a set of packages that is conflict-free. While it has its shortcomings (IMO), it greatly simplified the handling of packages.chi

2 Answers

1
votes

So it looks like you solved your problem by setting GHC_PACKAGE_PATH, right? You might wish to file a bug about that.

The second issue, the runtime "Access violation in generated code when reading" error seems to be documented here:

https://github.com/commercialhaskell/stack/issues/3765

https://gitlab.haskell.org/ghc/ghc/issues/13112

Supposedly passing -fexternal-interpreter to ghci is a workaround. You might want to manually edit the ghc/ghci shim scripts to ensure the flag is always passed until the bug can be fixed.

1
votes

Thanks for all the responses. I've experimented both with running ghc on some version of UN*X under VirtualBox and uninstalling Haskell Platform and going purely with stack under Windows 10 x64.

Both seem to avoid the many issues I listed above, but stack under Windows seems a little more light-weight and integrates better with my preferred editors (Sublime Text and Visual Studio Code), so that is what I'm going with for now.

In the meantime, with all due gratitude for all the great, free work done by the Haskell Platform guys and the author of WinGHCI, I cannot urge anybody reading this strongly enough to stay away from it, in particular version 8.6.3 under Windows, at least until things are much improved.