* [PATCH] gdbstub: use 0 ("any process") on packets with no PID
@ 2023-08-01 15:37 Matheus Tavares Bernardino
2023-08-01 21:11 ` Ilya Leoshkevich
0 siblings, 1 reply; 4+ messages in thread
From: Matheus Tavares Bernardino @ 2023-08-01 15:37 UTC (permalink / raw)
To: qemu-devel; +Cc: alex.bennee, iii, bcain, Philippe Mathieu-Daudé
Previously, qemu-user would always report PID 1 to GDB. This was changed
at dc14a7a6e9 (gdbstub: Report the actual qemu-user pid, 2023-06-30),
but read_thread_id() still considers GDB packets with "no PID" as "PID
1", which is not the qemu-user PID. Fix that by parsing "no PID" as "0",
which the GDB Remote Protocol defines as "any process".
Note that this should have no effect for system emulation as, in this
case, gdb_create_default_process() will assign PID 1 for the first
process and that is what the gdbstub uses for GDB requests with no PID,
or PID 0.
This issue was found with hexagon-lldb, which sends a "Hq" packet with
only the thread-id, but no process-id, leading to the invalid usage of
"PID 1" by qemu-hexagon and a subsequent "E22" reply.
Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
---
gdbstub/gdbstub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index ce8b42eb15..e74ecc78cc 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -537,7 +537,7 @@ static GDBThreadIdKind read_thread_id(const char *buf, const char **end_buf,
/* Skip '.' */
buf++;
} else {
- p = 1;
+ p = 0;
}
ret = qemu_strtoul(buf, &buf, 16, &t);
--
2.37.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] gdbstub: use 0 ("any process") on packets with no PID
2023-08-01 15:37 [PATCH] gdbstub: use 0 ("any process") on packets with no PID Matheus Tavares Bernardino
@ 2023-08-01 21:11 ` Ilya Leoshkevich
2023-08-02 11:04 ` Matheus Tavares Bernardino
0 siblings, 1 reply; 4+ messages in thread
From: Ilya Leoshkevich @ 2023-08-01 21:11 UTC (permalink / raw)
To: Matheus Tavares Bernardino, qemu-devel
Cc: alex.bennee, bcain, Philippe Mathieu-Daudé
On Tue, 2023-08-01 at 12:37 -0300, Matheus Tavares Bernardino wrote:
> Previously, qemu-user would always report PID 1 to GDB. This was
> changed
> at dc14a7a6e9 (gdbstub: Report the actual qemu-user pid, 2023-06-30),
> but read_thread_id() still considers GDB packets with "no PID" as
> "PID
> 1", which is not the qemu-user PID. Fix that by parsing "no PID" as
> "0",
> which the GDB Remote Protocol defines as "any process".
>
> Note that this should have no effect for system emulation as, in this
> case, gdb_create_default_process() will assign PID 1 for the first
> process and that is what the gdbstub uses for GDB requests with no
> PID,
> or PID 0.
>
> This issue was found with hexagon-lldb, which sends a "Hq" packet
> with
> only the thread-id, but no process-id, leading to the invalid usage
> of
> "PID 1" by qemu-hexagon and a subsequent "E22" reply.
Did you mean "Hg"?
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
> gdbstub/gdbstub.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
The change looks good to me.
Thanks for looking into this and sorry for the breakage.
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] gdbstub: use 0 ("any process") on packets with no PID
2023-08-01 21:11 ` Ilya Leoshkevich
@ 2023-08-02 11:04 ` Matheus Tavares Bernardino
2023-08-02 16:19 ` Richard Henderson
0 siblings, 1 reply; 4+ messages in thread
From: Matheus Tavares Bernardino @ 2023-08-02 11:04 UTC (permalink / raw)
To: iii; +Cc: alex.bennee, bcain, philmd, qemu-devel, quic_mathbern
Ilya Leoshkevich <iii@linux.ibm.com> wrote:
>
> On Tue, 2023-08-01 at 12:37 -0300, Matheus Tavares Bernardino wrote:
> > Previously, qemu-user would always report PID 1 to GDB. This was
> > changed
> > at dc14a7a6e9 (gdbstub: Report the actual qemu-user pid, 2023-06-30),
> > but read_thread_id() still considers GDB packets with "no PID" as
> > "PID
> > 1", which is not the qemu-user PID. Fix that by parsing "no PID" as
> > "0",
> > which the GDB Remote Protocol defines as "any process".
> >
> > Note that this should have no effect for system emulation as, in this
> > case, gdb_create_default_process() will assign PID 1 for the first
> > process and that is what the gdbstub uses for GDB requests with no
> > PID,
> > or PID 0.
> >
> > This issue was found with hexagon-lldb, which sends a "Hq" packet
> > with
> > only the thread-id, but no process-id, leading to the invalid usage
> > of
> > "PID 1" by qemu-hexagon and a subsequent "E22" reply.
>
> Did you mean "Hg"?
Oops, that's right, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] gdbstub: use 0 ("any process") on packets with no PID
2023-08-02 11:04 ` Matheus Tavares Bernardino
@ 2023-08-02 16:19 ` Richard Henderson
0 siblings, 0 replies; 4+ messages in thread
From: Richard Henderson @ 2023-08-02 16:19 UTC (permalink / raw)
To: Matheus Tavares Bernardino, iii; +Cc: alex.bennee, bcain, philmd, qemu-devel
On 8/2/23 04:04, Matheus Tavares Bernardino wrote:
> Ilya Leoshkevich <iii@linux.ibm.com> wrote:
>>
>> On Tue, 2023-08-01 at 12:37 -0300, Matheus Tavares Bernardino wrote:
>>> Previously, qemu-user would always report PID 1 to GDB. This was
>>> changed
>>> at dc14a7a6e9 (gdbstub: Report the actual qemu-user pid, 2023-06-30),
>>> but read_thread_id() still considers GDB packets with "no PID" as
>>> "PID
>>> 1", which is not the qemu-user PID. Fix that by parsing "no PID" as
>>> "0",
>>> which the GDB Remote Protocol defines as "any process".
>>>
>>> Note that this should have no effect for system emulation as, in this
>>> case, gdb_create_default_process() will assign PID 1 for the first
>>> process and that is what the gdbstub uses for GDB requests with no
>>> PID,
>>> or PID 0.
>>>
>>> This issue was found with hexagon-lldb, which sends a "Hq" packet
>>> with
>>> only the thread-id, but no process-id, leading to the invalid usage
>>> of
>>> "PID 1" by qemu-hexagon and a subsequent "E22" reply.
>>
>> Did you mean "Hg"?
>
> Oops, that's right, thanks.
>
Queued to tcg-next, with the typo fixed.
r~
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-08-02 16:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-01 15:37 [PATCH] gdbstub: use 0 ("any process") on packets with no PID Matheus Tavares Bernardino
2023-08-01 21:11 ` Ilya Leoshkevich
2023-08-02 11:04 ` Matheus Tavares Bernardino
2023-08-02 16:19 ` Richard Henderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).