xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Don Slutz <dslutz@verizon.com>
To: George Dunlap <george.dunlap@eu.citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	Don Slutz <dslutz@verizon.com>
Cc: Don Slutz <Don@CloudSwitch.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	xen-devel@lists.xen.org
Subject: Re: [PATCH v8 03/20] xenctx: Add -n (--display-stack-pages) option to output larger stack
Date: Tue, 01 Apr 2014 16:28:38 -0400	[thread overview]
Message-ID: <533B2176.6080402@terremark.com> (raw)
In-Reply-To: <533ABE41.2020901@eu.citrix.com>

On 04/01/14 09:25, George Dunlap wrote:
> On 04/01/2014 02:19 PM, Ian Campbell wrote:
>> On Thu, 2014-03-27 at 15:05 -0400, Don Slutz wrote:
>>> Important: This is the stack size (also known as stack limit) to
>>> display not the configured stack size.
>>>
>>> Note: use with caution (easy to get garbage).
>>>
>>> Below is a pictures of a configured 3 page stack, and where
>>> the SP currently is.  Each box is a page.
>>>
>>>                              -n 1    -n 2    -n 3
>>>
>>>         +------------------+
>>>         |                  |
>>>         |                  |
>>>         |                  |
>>>         |                  |
>>> SP --> |                  |   *       *       *
>>>         +------------------+             |          |
>>>         |                  |          |          |
>>>         |                  |          |          |
>>>         |                  |          |          |
>>>         |                  |          |          |
>>>         |                  |          *          |
>>>         +------------------+                    |
>>>         |                  |              |
>>>         |                  |              |
>>>         |                  |              |
>>>         |                  |              |
>>>         |                  |              *
>>>         +------------------+
>>>
>>> Display using "-n 3" since the used stack pages is 3.
>>
>> Stacks grow downwards on all of the architectures we support. Perhaps
>> that is why the rest of us find your diagrams so confusing?
>>

I expect so.  I can flip the picture (and add relative address) to help.  I was basing
the layout to match the stack output:

Call Trace:
                     [<ffffffff81346898>] io_serial_out+0x18 <--
ffff880032bb1310:   [<ffffffff81346f51>] serial8250_console_putchar+0x31
ffff880032bb1330:   [<ffffffff813428de>] uart_console_write+0x3e
ffff880032bb1338:   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
ffff880032bb1370:   [<ffffffff813472ad>] serial8250_console_write+0xbd
ffff880032bb13c0:   [<ffffffff8106b8f5>] __call_console_drivers+0x75
ffff880032bb13f0:   [<ffffffff8106b95a>] _call_console_drivers+0x4a
ffff880032bb1410:   [<ffffffff8106be6e>] release_console_sem+0x4e
ffff880032bb1450:   [<ffffffff8106c628>] vprintk+0x248
ffff880032bb14f0:   [<ffffffff814fd363>] printk+0x41
ffff880032bb3f20:   [<ffffffff8100204c>] do_one_initcall+0x3c
ffff880032bb3f50:   [<ffffffff810b0eb1>] sys_init_module+0xe1
ffff880032bb3f80:   [<ffffffff8100b0f2>] system_call_fastpath+0x16

Adding (my) boxes (note not fully to scale):

     +------------------------------------------------------------------------------+
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                     [<ffffffff81346898>] io_serial_out+0x18 <--              |
SP->| ffff880032bb1310:   [<ffffffff81346f51>] serial8250_console_putchar+0x31     |
     | ffff880032bb1330:   [<ffffffff813428de>] uart_console_write+0x3e             |
     | ffff880032bb1338:   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe            |
     | ffff880032bb1370:   [<ffffffff813472ad>] serial8250_console_write+0xbd       |
     | ffff880032bb13c0:   [<ffffffff8106b8f5>] __call_console_drivers+0x75         |
     | ffff880032bb13f0:   [<ffffffff8106b95a>] _call_console_drivers+0x4a          |
     | ffff880032bb1410:   [<ffffffff8106be6e>] release_console_sem+0x4e            |
     | ffff880032bb1450:   [<ffffffff8106c628>] vprintk+0x248                       |
     | ffff880032bb14f0:   [<ffffffff814fd363>] printk+0x41                         |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     +------------------------------------------------------------------------------+
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     +------------------------------------------------------------------------------+
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     |                                                                              |
     | ffff880032bb3f20:   [<ffffffff8100204c>] do_one_initcall+0x3c                |
     | ffff880032bb3f50:   [<ffffffff810b0eb1>] sys_init_module+0xe1                |
     | ffff880032bb3f80:   [<ffffffff8100b0f2>] system_call_fastpath+0x16           |
     |                                                                              |
     +------------------------------------------------------------------------------+



>> I drew my example to you the way I did for a reason.
>>

Sorry, I did not notice that.


>> Also, should the other end of the *---* line from SP (the bottom in your
>> diagram above) not be aligned to a page boundary, after all -n works in
>> pages.
>>

I am happy to do it either way.  I think of the page breaks to not be part of memory.


>>
>>> @@ -664,6 +667,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.nr_stack_pages > 1 )
>>> +        stack_limit += (xenctx.nr_stack_pages - 1) * XC_PAGE_SIZE;
>>
>> The if here is still redundant.
>>

Will drop.

>>>       printf("\n");
>>>       printf("Stack:\n");
>>>       for (i=1; i<5 && stack < stack_limit; i++) {
>>> @@ -834,18 +839,24 @@ static void usage(void)
>>>           kernel_start);
>>>       printf("  -a, --all          display more registers\n");
>>>       printf("  -C, --all-vcpus    print info for all vcpus\n");
>>> +    printf("  -n PAGES, --display-stack-pages=PAGES\n");
>>> +    printf("                     Display N pages from the stack pointer. (default %d)\n",
>>> +           DEFAULT_NR_STACK_PAGES);
>>> +    printf("                     Changes stack limit.  Note: use with caution (easy\n");
>>> +    printf("                     to get garbage).\n");
>>
>> Doesn't it go without saying that if you go off the bottom of the stack
>> you will get garbage?
>
> Only if you know that the tool doesn't know where the end of the stack is.  (Although hopefully the wording, "Display N pages" should give you a hint.)
>
> But what is "changes stack limit" supposed to mean?
>

Partly it is used in the next patch's usage output:

  -l <lines>, --lines <lines>
                      change the number of lines output for Stack. (default 5)
                      Can be specified as MAX.  Note: Fewer lines will be output
                      if stack limit reached.


And it was the best term I know of to say in a few words:

The output of stack starts at the current SP and stops when the
end of N page(s) is/are reached.

    -Don Slutz



>  -George
>

  reply	other threads:[~2014-04-01 20:28 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-27 19:05 [PATCH v8 00/20] xenctx: Many changes Don Slutz
2014-03-27 19:05 ` [PATCH v8 01/20] xenctx: clean up usage output Don Slutz
2014-03-27 19:05 ` [PATCH v8 02/20] xenctx: Clean up stack trace when hypercall_page not in symbol table Don Slutz
2014-03-27 19:05 ` [PATCH v8 03/20] xenctx: Add -n (--display-stack-pages) option to output larger stack Don Slutz
2014-04-01 13:19   ` Ian Campbell
2014-04-01 13:25     ` George Dunlap
2014-04-01 20:28       ` Don Slutz [this message]
2014-04-02 10:39         ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 04/20] xenctx: Add command line options -b (--bytes-per-line) and -l (--lines) Don Slutz
2014-04-01 14:30   ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 05/20] xenctx: Add command line option -D (--decode-as-ascii) Don Slutz
2014-04-01 13:27   ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 06/20] xenctx: Add command line option -t (--tag-stack-dump) Don Slutz
2014-03-27 19:05 ` [PATCH v8 07/20] xenctx: Change print_symbol to do the space before Don Slutz
2014-03-27 19:05 ` [PATCH v8 08/20] xenctx: More info on failed to map page Don Slutz
2014-03-27 19:05 ` [PATCH v8 09/20] xenctx: Add output of stack address to Call and Stack Trace Don Slutz
2014-04-01 13:28   ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 10/20] xenctx: Add -m (--memory) <maddr> option to dump memory at maddr Don Slutz
2014-04-01 13:30   ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 11/20] xenctx: Add error output if --all-vcpus (-C) and [VCPU] are both specified Don Slutz
2014-04-01 13:44   ` Ian Campbell
2014-04-01 18:24     ` Don Slutz
2014-03-27 19:05 ` [PATCH v8 12/20] xenctx: Add -d (--dump-as-stack) <daddr> option to dump memory at daddr as a stack Don Slutz
2014-04-01 13:46   ` Ian Campbell
2014-04-01 18:23     ` Don Slutz
2014-03-27 19:05 ` [PATCH v8 13/20] xenctx: change is_kernel_text() into kernel_addr() Don Slutz
2014-04-01 14:10   ` Ian Campbell
2014-04-01 21:33     ` Don Slutz
2014-04-02 10:34       ` Ian Campbell
2014-04-02 17:08         ` Don Slutz
2014-03-27 19:05 ` [PATCH v8 14/20] xenctx: Add convert of more registers to symbols Don Slutz
2014-04-01 14:11   ` Ian Campbell
2014-04-01 17:25     ` Don Slutz
2014-03-27 19:05 ` [PATCH v8 15/20] xenctx: Add output of vcpu value and state for --all-vcpus Don Slutz
2014-03-27 19:05 ` [PATCH v8 16/20] xenctx: Fix handling of !guest_protected_mode Don Slutz
2014-04-01 14:14   ` Ian Campbell
2014-04-01 18:35     ` Don Slutz
2014-04-02 10:41       ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 17/20] xenctx: Allow output for offline vcpu when specified Don Slutz
2014-04-01 14:24   ` Ian Campbell
2014-04-01 19:24     ` Don Slutz
2014-04-02 10:42       ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 18/20] xenctx: Add 16 bit output Don Slutz
2014-04-01 14:25   ` Ian Campbell
2014-04-01 18:53     ` Don Slutz
2014-03-27 19:05 ` [PATCH v8 19/20] xenctx: Fix print_ctx_32on64's print_special call Don Slutz
2014-04-01 14:27   ` Ian Campbell
2014-03-27 19:05 ` [PATCH v8 20/20] xenctx: Ensure errno is not zero on error in xc_translate_foreign_address() Don Slutz
2014-04-01 14:30   ` Ian Campbell
2014-04-01 20:49     ` Don Slutz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=533B2176.6080402@terremark.com \
    --to=dslutz@verizon.com \
    --cc=Don@CloudSwitch.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).