[GHC] #7655: 7.6.2 Segmentation Fault/Bus Error in large exponentation
GHC
ghc-devs at haskell.org
Mon Jul 28 01:33:14 UTC 2014
#7655: 7.6.2 Segmentation Fault/Bus Error in large exponentation
-------------------------------------+----------------------------------
Reporter: Doug310 | Owner:
Type: bug | Status: infoneeded
Priority: normal | Milestone: 7.8.4
Component: GHCi | Version: 7.8.1-rc1
Resolution: | Keywords: exponentiation
Operating System: MacOS X | Architecture: x86_64 (amd64)
Type of failure: GHCi crash | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Revisions: |
-------------------------------------+----------------------------------
Comment (by rwbarton):
Actually a few things were not quite right in that. `--enable-
alloca=reentrant` is not the same as `WANT_TMP_REENTRANT`! It means "use
`WANT_TMP_ALLOCA` if you have `alloca`, otherwise use
`WANT_TMP_REENTRANT`". So that explains how `WANT_TMP_ALLOCA` is getting
set.
Also, my examination of the Debian `libgmp.so.10` was overly hasty. It is
actually built with `WANT_TMP_ALLOCA`. There are several allocation paths
in `mpn_mul`, and some call `malloc` when the amount to be allocated
exceeds a certain threshold, while others unconditionally allocate on the
stack.
Not sure what the best thing to do here is aside from resorting to
`WANT_TMP_REENTRANT`, which I fear may carry a noticeable performance
penalty.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7655#comment:32>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list