[Top][All Lists]
[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
signature.asc
Description: OpenPGP digital signature