I am not sure if I am understanding the raw output of dds esp
or its 64-bit counterpart dqs rsp
properly. When I see a list of entries in the stack, I tend to assume that wherever I see return addresses, those are calls made by code that have not returned yet. IOW, stringing them together should form a nice call stack. (let's not bother with k*
group of Windbg commands for now.) Is that not the case always?
Because there are some third party extensions, that operate on the esp/rsp output and strings together the entries into something that appear to look like a call stack but I can't seem to match that order with what I see in the source (well, whatever source I have.) There are even entries of functions that have returned long ago.
What am I missing?
UPDATE:
OK -- the third party extension I use does say:
Dumps (dps) from the stack limit the base only showing items that include the ! followed by +0x
So, the question then becomes what is that entry? I thought it was the return address of some function that is fixing to make a call into another function?