[Crash-utility] How do I get IA64 register R32 and above?

Bob Montgomery bob.montgomery at hp.com
Tue Apr 23 20:03:13 UTC 2013


On Mon, 2013-04-22 at 16:38 -0700, Jay Lan wrote:
> Hi,
> 
> I got an IA64 vmcore. The stack backtrace only
> printed registers up to R31. How do I get the contents
> of R32 and above?
> 
> Thanks,
> Jay

Jay, here's an excerpt from an email I answered in 2006.  It's not clear
that I remember anything about this now :-)   Hope it helps.

Bob Montgomery

--------------------------------


>  #8 [BSP:e00000404ae490e8] mdc_replay_open at a00000020122f490
>     (e0000040ffcd1f10)
>     ...mdc/mdc_request.c: 332
>  #9 [BSP:e00000404ae49078] ptlrpc_replay_interpret at a0000002013ed930
>     (e0000040ff86f300)
>     ...ptlrpc/client.c: 1636
> #10 [BSP:e00000404ae48fe8] ptlrpc_check_set at a0000002013e14c0
>     (e0000000015eda80)
>     

There are three big secrets:

1) The saved values of the stack frame registers (r32, r33, ... up to
the limit set by the alloc statement at the beginning of the function
for that frame) are located at the Backing Store Pointer (BSP) shown for
the frame.  If you want to see r32, r33, r34, r35 for frame #8, do
        crash> x/4xg 0xe00000404ae490e8

2) The saved values of the stack frame registers are their current
values, not necessarily the values passed in to the function (for those
registers that were used as input registers, for example).  In other
words, the first parameter is passed as r32, but r32 might be modified
by that function before the point in the code represented by the stack
trace.  Check for this by disassembling:
        crash> dis mdc_replay_open | grep r32
and looking to see where (if ever) r32 is modified (appears on the left
hand side of an "=") in that function.

3)  Every 64th word in the backing store is a NaT register store, not a
regular register.  So when you're counting words from the BSP pointer
for that frame to match up with registers, skip any word whose address
ends in 0x1f8, 0x3f8, 0x5f8, ...

crash is trying to show you the passed parameters.  If that's working,
those values in parentheses at each level should correspond to r32,
r33 ... for as many as shown.  If I remember right, crash doesn't do
that very well for functions in modules.
---------------------------------------------------------------




More information about the Crash-utility mailing list