[GHC] #15508: concprog001 fails with various errors

GHC ghc-devs at haskell.org
Tue Jan 15 09:40:22 UTC 2019


#15508: concprog001 fails with various errors
-------------------------------------+-------------------------------------
        Reporter:  osa1              |                Owner:  osa1
            Type:  bug               |               Status:  merge
        Priority:  highest           |            Milestone:  8.8.1
       Component:  Compiler          |              Version:  8.5
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Runtime crash     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #15571            |  Differential Rev(s):  Phab:D5051
                                     |  (reverted), Phab:D5165, Phab:D5178,
       Wiki Page:                    |  MR:103
-------------------------------------+-------------------------------------

Comment (by osa1):

 Here are some notes. Compile and run:

 {{{
 ghc-stage2 Mult.hs -prof -fprof-auto -fforce-recomp -debug && ./Mult +RTS
 -DS
 }}}

 At one point we do a GC and continue:

 {{{
 >>> bt
 #0  0x0000000000a0ed5d in StgRunIsImplementedInAssembler () at
 rts/StgCRun.c:370
 #1  0x0000000000a0226a in schedule (initialCapability=0xd2c600
 <MainCapability>, task=0x242dd70) at rts/Schedule.c:452
 #2  0x0000000000a03b7b in scheduleWaitThread (tso=0x4200105370, ret=0x0,
 pcap=0x7ffdbfd88f10) at rts/Schedule.c:2547
 #3  0x0000000000a15e4b in rts_evalLazyIO (cap=0x7ffdbfd88f10, p=0xb3bb98,
 ret=0x0) at rts/RtsAPI.c:530
 #4  0x0000000000a175d3 in hs_main (argc=1, argv=0x7ffdbfd89108,
 main_closure=0xb3bb98, rts_config=...) at rts/RtsMain.c:72
 #5  0x0000000000463e78 in main ()
 }}}

 If I step a few instructions I see these instructions being executed

 {{{
     0x0000000000a35d60 stg_ap_0_fast+336 mov    0x8(%rbp),%rax
     0x0000000000a35d64 stg_ap_0_fast+340 mov    0x10(%rbp),%rbx
     0x0000000000a35d68 stg_ap_0_fast+344 mov    0x18(%rbp),%rcx
     0x0000000000a35d6c stg_ap_0_fast+348 add    $0x20,%rbp
     0x0000000000a35d70 stg_ap_0_fast+352 mov    %rcx,%rdx
 }}}

 This is in `stg_ap_0_fast` and `%rbx` is supposed to be a FUN for a PAP,
 but
 it's actually collected by the GC:

 {{{
 >>> print (StgClosure*)$rbx
 $27 = (StgClosure *) 0x42000b2868
 >>> print *(StgClosure*)$rbx
 $28 = {
   header = {
     info = 0xaaaaaaaaaaaaaaaa,
     prof = {
       ccs = 0xaaaaaaaaaaaaaaaa,
       hp = {
         rs = 0xaaaaaaaaaaaaaaaa,
         ldvw = 12297829382473034410
       }
     }
   },
   payload = 0x42000b2880
 }
 }}}

 Interestingly only some part of it is collected (the first 3 words).

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


More information about the ghc-tickets mailing list