endStackAddress like this in
frame.endStackAddress = activation_->asJit()->jsOrWasmExitFP();
This is fine for activations that have a valid exit FP, but it's not if we're currently in JIT or Wasm code, because we don't clear the exit FP when returning to JIT code.
Furthermore, we don't always set the exit FP for C++ calls: sometimes we want to have faster calls without constructing an exit frame (see
I think we have the following failure cases:
endStackAddress is non-nullptr, stale, points to an address higher up on the stack than the most recent JIT/Wasm frame. In this case we'd probably get unsymbolicated frames.
endStackAddress is non-nullptr, stale, and we called into C++ with
callWithABI. This could result in missing stack frames because we incorrectly filter them out?
endStackAddress is nullptr and we're either executing JIT/Wasm code or we called into C++ with
callWithABI. In this case we could get unsymbolicated frames too I think because we don't filter anything out.