suspicious piece of code in RTS(Profiling.c) code

Edward Z. Yang ezyang at
Mon Jun 2 18:09:09 UTC 2014

Hello Ömer,

That does seem pretty suspicious. My interpretation is that
ccs should just never be EMPTY_STACK.  If we look at the calling
codepaths, the only case that a NULL could be passed is if
pushCostCentre is called with NULL ccs, but we only create these
invocations in code generation and never pass a NULL in such situations.

What I am not sure is if there is some special treatment for empty
stacks that should be happening, but is not, at the moment.


Excerpts from Ömer Sinan Ağacan's message of 2014-06-02 08:19:21 -0700:
> Hi all,
> I recently found a suspicious piece of code in RTS code.
> * here it's
> checking that ccs is not EMPTY_STACK.
> * here
> EMPTY_STACK is defined as NULL.
> Now weird part is that before the if-statement checks for `ccs != NULL` ccs
> is used to reach some of it's fields(for example, line 601 and 602). As far
> as I can see either we have a bug here or the if-statement is not necessary
> and we can move it's body to top level.
> Am I missing anything here?
> Thanks.
> ---
> Ömer Sinan Ağacan

More information about the ghc-devs mailing list