Re: PR13984 - gdb stops controlling a thread after "Remote 'g' packet reply is too long: ..." error message

Luis Machado
2016-04-11T21:19:30Z

Hi,

On 04/10/2016 09:49 AM, Orgad Shaneh wrote:
> Please review the attached patch. It was inspired by the patch
> attached to the bug report.

Usually, when you receive that message from GDB it because your target
reported an incorrect register set as a 'g' reply.

The correct solution is to fix your remote target to reply the proper
register set.

From the description, it sounds like QEMU needs to be adjusted.

>
> Thanks.
>
>
> 0001-PR13984-gdb-stops-controlling-a-thread.patch
>
>
> From 03ab95933b85dd85c2f4fa5797017e6cee0c8466 Mon Sep 17 00:00:00 2001
> From: Orgad Shaneh<orgad.shaneh@audiocodes.com>
> Date: Sun, 10 Apr 2016 17:39:24 +0300
> Subject: [PATCH] PR13984, gdb stops controlling a thread...
>
> ... after "Remote 'g' packet reply is too long: ..." error message
>
> PR13984:
> remote.c: Handle long g packets instead of failing
> ---
> gdb/remote.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/gdb/remote.c b/gdb/remote.c
> index 5c407b6..e8951dc 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -7188,10 +7188,6 @@ process_g_packet (struct regcache *regcache)
>
> buf_len = strlen (rs->buf);
>
> - /* Further sanity checks, with knowledge of the architecture. */
> - if (buf_len > 2 * rsa->sizeof_g_packet)
> - error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
> -

This is a serious error. If GDB fetches a bogus register set reply, it
will most definitely do the wrong thing after this.