I’ve got some eunit code that looks a bit like this:
    % ...
    meck:wait(m, f, '_', 2000),    % L1
    receive                        % L2
        message1 -> ok
    end,
    receive                        % L3
        message2 -> ok
    end
    % ...
message2 is never sent, so the receive at L3 never completes, so eunit kills my test with a timeout. This is expected.
But: the location reported is L1, rather than the expected L3. It looks like receive expressions don’t appear in stack traces.
It’s probably not relevant that I’m using meck – if I add some code in between the two receive expressions, the reported location is that of the added code.
This is with Erlang/OTP 26.2.5.3.