[GHC] #16143: Some cost centre stacks are not registered via registerCcsList()
GHC
ghc-devs at haskell.org
Mon Jan 7 11:02:04 UTC 2019
#16143: Some cost centre stacks are not registered via registerCcsList()
-------------------------------------+-------------------------------------
Reporter: osa1 | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Profiling | Version: 8.6.3
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
In #15508 I observe that some closures have incorrect CCS field. To be
able to
catch this problem as early as possible I implemented a simple check:
{{{
static void
checkClosureProfSanity(const StgClosure *p)
{
StgProfHeader prof_hdr = p->header.prof;
CostCentreStack *ccs = prof_hdr.ccs;
// For now just make sure the CCS is a registered CCS and not a
pointer to
// some random heap closure (happened before, see #15508).
for (CostCentreStack *ccs_ = CCS_LIST; ccs_; ccs_ = ccs_->prevStack) {
if (ccs == ccs_) {
return;
}
}
barf("CCS for closure %p is not registered: %p", (void*)p,
(void*)ccs);
}
}}}
I call this on all closures before and after a GC. This assumes that all
cost
centre stacks are registered via `registerCcsList()`, however this
currently
does not hold. I was able to find two cases:
- `base_GHCziIOziHandleziFD_CAFs_cc_ccs` is never registered (there are
probably
a few CCSs per module like this which are never registered)
- None of the dynamically allocated CCSs are registered.
My question is: am I misunderstanding how the CCS registry (`CCS_LIST`) is
supposed to be used? I thought all CCSs should really be in that list,
because
the list is used when reporting. Not registering a CCS means not reporting
it.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16143>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list