[GHC] #8974: 64 bit windows executable built with ghc-7.9.20140405+LLVM segfaults

GHC ghc-devs at haskell.org
Tue Oct 18 15:56:41 UTC 2016


#8974: 64 bit windows executable built with ghc-7.9.20140405+LLVM segfaults
------------------------------------+--------------------------------------
        Reporter:  awson            |                Owner:
            Type:  bug              |               Status:  new
        Priority:  high             |            Milestone:  8.0.1
       Component:  Compiler (LLVM)  |              Version:  7.9
      Resolution:                   |             Keywords:
Operating System:  Windows          |         Architecture:  x86_64 (amd64)
 Type of failure:  Runtime crash    |            Test Case:
      Blocked By:                   |             Blocking:
 Related Tickets:                   |  Differential Rev(s):
       Wiki Page:                   |
------------------------------------+--------------------------------------

Comment (by GordonBGood):

 Replying to [comment:53 awson]:
 > Well, I've downloaded 8.0.1 release, tried it and all your examples
 immediately started to segfault, but after I replaced distributed binutils
 with the correct one all started to work flawlessly, no segfaults
 altogether for all your examples.

 So, Yes, I was unable to compile anything to run at all without segfaults
 using -fllvm on Windows 64-bit until I updated MSYS2 with pacman update so
 as to update to binutils 2.27-2, then downgraded LLVM from 3.8 back to
 3.7.0-6, which is where I am sitting now with this problem.

 I think that one difference between our setups is that my path finds the
 MSYS2 bindir first before the mingw that comes with GHC 8.0.1, and perhaps
 some of those GHC mingw files have been patched or are versions that work
 with GHC 8.0.1 whereas the up-to-date MSYS2 ones aren't quite compatible.
 This would explain why 'Integer' has problems as I notice that MSYS2 has
 updated GMP files.  I can move the LLVM 3.7 and binutils files into the
 GHC mingw folder and temporarily remove MSYS2 bindir from the path, but I
 need to know what binutil files were patched for binutils 2.27-2 or if I
 should just replace all of them.

 Another possible difference is that I am using the MSYS2 LLVM version
 3.7.0 where you might be using the LLVM version 3.7.1 which may have some
 differences.  I don't have a copy of LLVM 3.7.1 and don't know how to get
 the crucial two files 'llc.exe' and 'opt.exe' without compiling it as most
 binary distros have been replaced with newer versions.  However, I did
 find a copy of a binary distro for MSYS2 mingw x86_64 LLVM 3.7.0-9 which I
 will try.

 It seems that this is just another case of incompatibilities between GHC
 and the versions of programs it requires such as specific versions of LLVM
 but perhaps others, which hopefully will be fixed with GHC 8.2.1
 distributing versions that are known to work and automatically setting the
 path to use those versions.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8974#comment:54>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list