qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] gdbstub: fix sThreadInfo handler


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH] gdbstub: fix sThreadInfo handler
Date: Mon, 22 Jul 2013 12:54:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7

Am 22.07.2013 07:24, schrieb Max Filippov:
> After the commit 182735e cpu: Make first_cpu and next_cpu CPUState
> we can no longer blindly use cpu->next_cpu->env_ptr to get CPUArchState
> of the next CPU, as the next_cpu is NULL in the last CPU.
> 
> This fixes segfault caused by gdb command 'info threads'.
> 
> Signed-off-by: Max Filippov <address@hidden>

This should be obsoleted by the patch on qom-cpu that I pointed you to,
no? I so far didn't send a pull for that alone since I was hoping to get
more gdbstub patches in - I added a comment explaining vaddr type as
requested by Peter, so a Reviewed-by/Acked-by for the modified Xtensa
subclasses would help push that forward, and no one bothered to review
the ..._read_register() changes yet IIRC, split up on rth's request. I
could just apply the initial set_pc stuff of course and wait some longer
with the rest.

Andreas

> ---
>  gdbstub.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/gdbstub.c b/gdbstub.c
> index 0ee82a9..deb8159 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -2406,10 +2406,11 @@ static int gdb_handle_packet(GDBState *s, const char 
> *line_buf)
>          } else if (strcmp(p,"sThreadInfo") == 0) {
>          report_cpuinfo:
>              if (s->query_cpu) {
> +                CPUState *cpu = ENV_GET_CPU(s->query_cpu);
>                  snprintf(buf, sizeof(buf), "m%x",
> -                         cpu_index(ENV_GET_CPU(s->query_cpu)));
> +                         cpu_index(cpu));
>                  put_packet(s, buf);
> -                s->query_cpu = ENV_GET_CPU(s->query_cpu)->next_cpu->env_ptr;
> +                s->query_cpu = cpu->next_cpu ? cpu->next_cpu->env_ptr : NULL;
>              } else
>                  put_packet(s, "l");
>              break;
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

[Prev in Thread] Current Thread [Next in Thread]