The UPDATE_CONTEXT_POINTERS actually breaks lots of debuggers tests. The root problem is that when arm unwind the stack, we will call this function
hr = RtlpUnwindFunctionFull(pContext->Pc - (ULONG)ImageBase,
(ULONG)ImageBase,
&Rfe,
pContext,
&DummyEstablisherFrame,
&DummyHandlerRoutine,
&DummyHandlerData,
NULL); <-- UnwindParams
This will set UnwindParams as NULL, and eventually passed to UPDATE_CONTEXT_POINTERS and UPDATE_FP_CONTEXT_POINTERS in RtlpPopRegisterMask. This will generate the AV.
The fix is just simply checking the whether the Params is NULL or not.
[tfs-changeset: 1520758]