[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 03/17] xenctx: Add -n (--display-stack-pages) option to output larger stack
On 03/21/14 10:29, Ian Campbell wrote: On Thu, 2014-03-20 at 15:06 -0400, Don Slutz wrote:From: Don Slutz <Don@xxxxxxxxxxxxxxx> Important: This is the stack size to display not the configured stack size. Note: use with caution (easy to get garbage). Below is various pictures of a configured 3 page stack, and where the SP currently is. Each box is a page. +------------------+ | | | | | | | | | | +------------------+ | | | | | | | | | | +------------------+ | | | | | | SP --> | | | | +------------------+ Display using "-n 1" since the used stack pages is 1.Like George I am also confused by what these diagrams are trying to show me, and even having read your response to him I'm confused. Let me try again. Here is real output for a kernel with 4 page stacks: tools/xentrace/xenctx -s ~/zzm 4 -n 1 rip: ffffffff81346876 io_serial_in+0x16 flags: 00000002 nz rsp: ffff8800385a5ab8 rax: 000000000000006f rcx: 0000000000000000 rdx: 00000000000003fd rbx: ffffffff81ff8f00 rsi: 0000000000000005 rdi: ffffffff81ff8f00 rbp: ffff8800385a5ab8 r8: ffffffff81c03a10 r9: 0000000000000080 r10: 0000000000000005 r11: 0000000000000046 r12: 000000000000270f r13: 0000000000000020 r14: 0000000000000025 r15: ffffffff81346f20 cs: 0010 ss: 0018 ds: 0000 es: 0000 fs: 0000 @ 00007f07972f3700 gs: 0000 @ ffff88000b400000/0000000000000000/ Code (instr addr ffffffff81346876)48 89 e5 0f 1f 44 00 00 0f b6 4f 41 0f b7 57 08 d3 e6 01 f2 ec <0f> b6 c0 c9 c3 0f 1f 44 00 00 55 Stack: ffff8800385a5ae8 ffffffff81346e64 ffffffff81ff8f00 0000000000000072 0000000000000064 0000000000000025 ffff8800385a5b08 ffffffff81346f46 ffffffff81e3e430 ffffffff81ff8f00 ffff8800385a5b48 ffffffff813428de ffffffff8100bc0e 0000000000000000 ffffffff81ff8f00 0000000000000001 0000000000000064 ffffffff81e3e40c ffff8800385a5b98 ffffffff813472ad Call Trace: [<ffffffff81346876>] io_serial_in+0x16 <-- [<ffffffff81346e64>] wait_for_xmitr+0x24 [<ffffffff81346f46>] serial8250_console_putchar+0x26 [<ffffffff813428de>] uart_console_write+0x3e [<ffffffff8100bc0e>] apic_timer_interrupt+0xe [<ffffffff813472ad>] serial8250_console_write+0xbd [<ffffffff8106b8f5>] __call_console_drivers+0x75 [<ffffffff8106b95a>] _call_console_drivers+0x4a [<ffffffff8106be6e>] release_console_sem+0x4e [<ffffffff8106c628>] vprintk+0x248 [<ffffffff814fd363>] printk+0x41 tools/xentrace/xenctx -s ~/zzm 4 -n 2 rip: ffffffff81346876 io_serial_in+0x16 flags: 00000002 nz rsp: ffff8800385a5ab8 rax: 000000000000006f rcx: 0000000000000000 rdx: 00000000000003fd rbx: ffffffff81ff8f00 rsi: 0000000000000005 rdi: ffffffff81ff8f00 rbp: ffff8800385a5ab8 r8: ffffffff81c03a10 r9: 0000000000000080 r10: 0000000000000005 r11: 0000000000000046 r12: 000000000000270f r13: 0000000000000020 r14: 0000000000000025 r15: ffffffff81346f20 cs: 0010 ss: 0018 ds: 0000 es: 0000 fs: 0000 @ 00007f07972f3700 gs: 0000 @ ffff88000b400000/0000000000000000/ Code (instr addr ffffffff81346876)48 89 e5 0f 1f 44 00 00 0f b6 4f 41 0f b7 57 08 d3 e6 01 f2 ec <0f> b6 c0 c9 c3 0f 1f 44 00 00 55 Stack: ffff8800385a5ae8 ffffffff81346e64 ffffffff81ff8f00 0000000000000072 0000000000000064 0000000000000025 ffff8800385a5b08 ffffffff81346f46 ffffffff81e3e430 ffffffff81ff8f00 ffff8800385a5b48 ffffffff813428de ffffffff8100bc0e 0000000000000000 ffffffff81ff8f00 0000000000000001 0000000000000064 ffffffff81e3e40c ffff8800385a5b98 ffffffff813472ad Call Trace: [<ffffffff81346876>] io_serial_in+0x16 <-- [<ffffffff81346e64>] wait_for_xmitr+0x24 [<ffffffff81346f46>] serial8250_console_putchar+0x26 [<ffffffff813428de>] uart_console_write+0x3e [<ffffffff8100bc0e>] apic_timer_interrupt+0xe [<ffffffff813472ad>] serial8250_console_write+0xbd [<ffffffff8106b8f5>] __call_console_drivers+0x75 [<ffffffff8106b95a>] _call_console_drivers+0x4a [<ffffffff8106be6e>] release_console_sem+0x4e [<ffffffff8106c628>] vprintk+0x248 [<ffffffff814fd363>] printk+0x41 tools/xentrace/xenctx -s ~/zzm 4 -n 3 rip: ffffffff81346876 io_serial_in+0x16 flags: 00000002 nz rsp: ffff8800385a5ab8 rax: 000000000000006f rcx: 0000000000000000 rdx: 00000000000003fd rbx: ffffffff81ff8f00 rsi: 0000000000000005 rdi: ffffffff81ff8f00 rbp: ffff8800385a5ab8 r8: ffffffff81c03a10 r9: 0000000000000080 r10: 0000000000000005 r11: 0000000000000046 r12: 000000000000270f r13: 0000000000000020 r14: 0000000000000025 r15: ffffffff81346f20 cs: 0010 ss: 0018 ds: 0000 es: 0000 fs: 0000 @ 00007f07972f3700 gs: 0000 @ ffff88000b400000/0000000000000000/ Code (instr addr ffffffff81346876)48 89 e5 0f 1f 44 00 00 0f b6 4f 41 0f b7 57 08 d3 e6 01 f2 ec <0f> b6 c0 c9 c3 0f 1f 44 00 00 55 Stack: ffff8800385a5ae8 ffffffff81346e64 ffffffff81ff8f00 0000000000000072 0000000000000064 0000000000000025 ffff8800385a5b08 ffffffff81346f46 ffffffff81e3e430 ffffffff81ff8f00 ffff8800385a5b48 ffffffff813428de ffffffff8100bc0e 0000000000000000 ffffffff81ff8f00 0000000000000001 0000000000000064 ffffffff81e3e40c ffff8800385a5b98 ffffffff813472ad Call Trace: [<ffffffff81346876>] io_serial_in+0x16 <-- [<ffffffff81346e64>] wait_for_xmitr+0x24 [<ffffffff81346f46>] serial8250_console_putchar+0x26 [<ffffffff813428de>] uart_console_write+0x3e [<ffffffff8100bc0e>] apic_timer_interrupt+0xe [<ffffffff813472ad>] serial8250_console_write+0xbd [<ffffffff8106b8f5>] __call_console_drivers+0x75 [<ffffffff8106b95a>] _call_console_drivers+0x4a [<ffffffff8106be6e>] release_console_sem+0x4e [<ffffffff8106c628>] vprintk+0x248 [<ffffffff814fd363>] printk+0x41 [<ffffffff8100204c>] do_one_initcall+0x3c [<ffffffff810b0eb1>] sys_init_module+0xe1 [<ffffffff8100b0f2>] system_call_fastpath+0x16 As you can see from above, only the last 3 lines show up for "-n 3" Why is the SP moving around in these pictures? I understood that this option was changing what was considered to be the limit of the stack, not the stack pointer itself, so shouldn't it be the base of the stack which is moving around? These are pictures of the same stack at 3 different times. And as you can see from above, this option does change the stack limit. Perhaps if you had the diagram once and along side it had columns showing what is printed for each -n value as a range e.g. None -n 1 +------------------+ + | | | | | | | | | | | | | | | +------------------+ + | | | | | SP --> | | + + | | | | | | +------------------+ (or whatever the reality is) [...] I will add this. And some statement about each picture is for a different time. Signed-off-by: Don Slutz <Don@xxxxxxxxxxxxxxx>Out of date? Yes, and no. Both email continue to work. I will update it. --- v5: Adjust option to -n, --display-stack-pages. Adjust usage message. tools/xentrace/xenctx.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c index 42a47f3..caa8899 100644 --- a/tools/xentrace/xenctx.c +++ b/tools/xentrace/xenctx.c @@ -35,6 +35,7 @@ static struct xenctx { int frame_ptrs; int stack_trace; int disp_all; + int multiple_pages; int all_vcpus; int self_paused; xc_dominfo_t dominfo; @@ -664,6 +665,8 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width)stack_limit = ((stack_pointer(ctx) + XC_PAGE_SIZE)& ~((guest_word_t) XC_PAGE_SIZE - 1)); + if ( xenctx.multiple_pages > 1 ) + stack_limit += (xenctx.multiple_pages - 1) * XC_PAGE_SIZE;"multiple_pages" sounds like a boolean to me, you seem to use it as "extra_pages", but why not just call it nr_stack_pages, initialise it to 1 and override it with --display-stack-pages. I will adjust the internal name also. No idea why I did not do so when to option name was changed. -Don Slutz Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |