[GHC] #14669: Windows binaries sometimes throw a stack overflow.
GHC
ghc-devs at haskell.org
Fri Jan 26 19:40:50 UTC 2018
#14669: Windows binaries sometimes throw a stack overflow.
-------------------------------------+-------------------------------------
Reporter: sergv | Owner: (none)
Type: bug | Status: patch
Priority: highest | Milestone: 8.4.1
Component: Runtime System | Version: 8.2.1
Resolution: | Keywords:
Operating System: Windows | Architecture:
| Unknown/Multiple
Type of failure: Runtime crash | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s): Phab:D4343
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ben Gamari <ben@…>):
In [changeset:"a55d581f8f2923560c3444253050b13fdf2dec10/ghc"
a55d581f/ghc]:
{{{
#!CommitTicketReference repository="ghc"
revision="a55d581f8f2923560c3444253050b13fdf2dec10"
Fix Windows stack allocations.
On Windows we use the function `win32AllocStack` to do stack
allocations in 4k blocks and insert a stack check afterwards
to ensure the allocation returned a valid block.
The problem is this function does something that by C semantics
is pointless. The stack allocated value can never escape the
function, and the stack isn't used so the compiler just optimizes
away the entire function body.
After considering a bunch of other possibilities I think the simplest
fix is to just disable optimizations for the function.
Alternatively inline assembly is an option but the stack check function
doesn't have a very portable name as it relies on e.g. `libgcc`.
Thanks to Sergey Vinokurov for helping diagnose and test.
Test Plan: ./validate
Reviewers: bgamari, erikd, simonmar
Reviewed By: bgamari
Subscribers: rwbarton, thomie, carter
GHC Trac Issues: #14669
Differential Revision: https://phabricator.haskell.org/D4343
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14669#comment:31>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list