qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH] fix gdbstub support for multiple threads in use


From: Jan Kiszka
Subject: [Qemu-devel] Re: [PATCH] fix gdbstub support for multiple threads in usermode, v3
Date: Wed, 03 Jun 2009 21:40:48 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

Nathan Froyd wrote:
> When debugging multi-threaded programs, QEMU's gdb stub would report the
> correct number of threads (the qfThreadInfo and qsThreadInfo packets).
> However, the stub was unable to actually switch between threads (the T
> packet), since it would report every thread except the first as being
> dead.  Furthermore, the stub relied upon cpu_index as a reliable means
> of assigning IDs to the threads.  This was a bad idea; if you have this
> sequence of events:
> 
> initial thread created
> new thread #1
> new thread #2
> thread #1 exits
> new thread #3
> 
> thread #3 will have the same cpu_index as thread #1, which would confuse
> GDB.  (This problem is partly due to the remote protocol not having a
> good way to send thread creation/destruction events.)
> 
> We fix this by using the host thread ID for the identifier passed to GDB
> when debugging a multi-threaded userspace program.  The thread ID might
> wrap, but the same sort of problems with wrapping thread IDs would come
> up with debugging programs natively, so this doesn't represent a
> problem.
> ---
>  cpu-defs.h           |    1 +
>  exec.c               |    2 +-
>  gdbstub.c            |   69 +++++++++++++++++++++++++++++++------------------
>  linux-user/syscall.c |    4 ++-
>  4 files changed, 49 insertions(+), 27 deletions(-)
> 
> Changes from earlier versions: use the host thread ID as the unique ID
> to pass to GDB instead of inventing a new ID that tries to be robust
> against wrapping.

Looks good to me, has additionally some nice cleanup aspects, and
survived a quick regression test in system mode.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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