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 <jcmvb...@gmail.com>
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