[GHC] #11317: Test prog003 fails with segfault on Windows (GHCi)

GHC ghc-devs at haskell.org
Wed Dec 30 22:30:59 UTC 2015


#11317: Test prog003 fails with segfault on Windows (GHCi)
---------------------------------+----------------------------------------
        Reporter:  rdragon       |                Owner:
            Type:  bug           |               Status:  new
        Priority:  normal        |            Milestone:
       Component:  GHCi          |              Version:  7.11
      Resolution:                |             Keywords:  GC
Operating System:  Windows       |         Architecture:  Unknown/Multiple
 Type of failure:  GHCi crash    |            Test Case:  prog003
      Blocked By:                |             Blocking:
 Related Tickets:  #11234 #3408  |  Differential Rev(s):
       Wiki Page:                |
---------------------------------+----------------------------------------
Changes (by Phyx-):

 * keywords:   => GC
 * testcase:   => prog003
 * architecture:  x86_64 (amd64) => Unknown/Multiple
 * related:  #11234 => #11234 #3408


Comment:

 This seems like it's related to #3408. The `GC` timeout `-I` is at fault.

 The default timeout for Windows was changed to 5secs in
 https://github.com/ghc/ghc/blob/master/ghc/hschooks.c#L42 to avoid issues
 with the `GC` and `haskeline` on Windows.

 Coincidentally I don't know why this was done there (which is rather
 hidden) rather than in `RtsFlags.c`. The helptext for RTS opts is also
 wrong (says the default is 0.3s for all platforms).


 In any case, the test is setting a value so low that it's causing a
 segfault.

 On a normal run the GC ends with

 {{{
 Memory inventory:
   gen 0 blocks :    16 blocks (   0.1 MB)
   gen 1 blocks :  5541 blocks (  21.6 MB)
   nursery      :  5379 blocks (  21.0 MB)
   retainer     :     0 blocks (   0.0 MB)
   arena blocks :     0 blocks (   0.0 MB)
   exec         :     1 blocks (   0.0 MB)
   free         :  1411 blocks (   5.5 MB)
   total        : 12348 blocks (  48.2 MB)
        84f44: cap 0: all caps stopped for GC
        84f44: cap 0: finished GC
        84f44: exitHpc
        84f44: cap 0: shutting down
 }}}

 but when it segfaults

 {{{
 Memory inventory:
   gen 0 blocks :    51 blocks (   0.2 MB)
   gen 1 blocks :  5470 blocks (  21.4 MB)
   nursery      :  5202 blocks (  20.3 MB)
   retainer     :     0 blocks (   0.0 MB)
   arena blocks :     0 blocks (   0.0 MB)
   exec         :     1 blocks (   0.0 MB)
   free         :  3388 blocks (  13.2 MB)
   total        : 14112 blocks (  55.1 MB)
        84cd4: cap 0: all caps stopped for GC
        84cd4: cap 0: finished GC
 }}}

 So GC does finish, but something happens between then and `exitHpc`

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


More information about the ghc-tickets mailing list