[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v8 03/20] xenctx: Add -n (--display-stack-pages) option to output larger stack



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 drew my example to you the way I did for a reason.

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.


> @@ -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.

>      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?

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.