The UPDATE_CONTEXT_POINTERS actually breaks lots of debuggers tests. The root probl...
authorZhicheng Zhu <zhizhu@microsoft.com>
Tue, 1 Sep 2015 03:03:00 +0000 (20:03 -0700)
committerZhicheng Zhu <zhizhu@microsoft.com>
Tue, 1 Sep 2015 03:03:00 +0000 (20:03 -0700)
commit7c0a1e4c90c626d569a60a1431a48b0a620e51d5
tree419e72826f675b8eb3e5a7f6ea75dcc272bc0d6d
parent1d5dcc52c7a2661bbda732c98c511f4e6f2ce6f8
 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]
src/unwinder/arm/unwinder_arm.cpp