[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