#15508: concprog001 fails with various errors -------------------------------------+------------------------------------- Reporter: osa1 | Owner: osa1 Type: bug | Status: new 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 Wiki Page: | (reverted), Phab:D5165, Phab:D5178 -------------------------------------+------------------------------------- Changes (by osa1): * cc: simonmar (added) Comment: I came across something interesting. While digging deeper I found that this is where we assign a location of heap (instead of location of the arena where we allocate cost centre stacks) to a closure's CCS field: {{{ #0 0x0000000000a15794 in raiseAsync (cap=0xd35700 <MainCapability>, tso=0x420320f000, exception=0xb570c0, stop_at_atomically=false, stop_here=0x0) at rts/RaiseAsync.c:873 #1 0x0000000000a14aa6 in throwToMsg (cap=0xd35700 <MainCapability>, msg=0x42000be730) at rts/RaiseAsync.c:275 #2 0x0000000000a148f0 in throwTo (cap=0xd35700 <MainCapability>, source=0x4205b6f728, target=0x420320f000, exception=0xb570c0) at rts/RaiseAsync.c:213 #3 0x0000000000a3c323 in stg_killThreadzh () #4 0x0000000000000000 in ?? () }}} The closure (an `AP_STACK`) previously has this cost centre stack: {{{
print ((StgClosure *) 0x4200345e70)->header.prof.ccs $30 = (CostCentreStack *) 0xb44390 print *((StgClosure *) 0x4200345e70)->header.prof.ccs $31 = { ccsID = 241, cc = 0xb44350, prevStack = 0xd2df00 <CCS_MAIN>, indexTable = 0x0, root = 0xb44390, depth = 1, scc_count = 0, selected = 1, time_ticks = 0, mem_alloc = 59522362, inherited_alloc = 0, inherited_ticks = 0 } }}}
The new value is `0x4207528000`, a location in the heap. The new location is coming from another closure so I should debug more and see how the value ended up in that closure, but I noticed a `TODO` comment around the code that makes this assignment: {{{ -- RaiseAsync.c:873 SET_HDR(ap,&stg_AP_STACK_info, ((StgClosure *)frame)->header.prof.ccs /* ToDo */); }}} I wonder if that `ToDo` has anything to do with this. @simonmar, any ideas? The commit that added that `ToDo`: b1953bbb1ed3cb16497e5447db7487f0c2d9e41a. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15508#comment:30> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler