Re: [MI] Fix segfault for -remove-inferior

Pedro Alves
2010-08-05T14:47:56Z

On Wednesday 04 August 2010 20:56:45, Marc Khouzam wrote:
> Hi,

Hi Marc,

> I started to play around with MI multi-exec and got a segfault.
> Below is the session showing the problem and the patch to fix it.

Thanks.

> I think this should go into the 7.2 branch.

Agreed.

> (I did not have time to run the test suite)

You can run the testsuite in parallel make mode nowadays. E.g.,
on my laptop, "make check -j4" only takes around 5 minutes.
You can also run only the MI tests with:

make check RUNTESTFLAGS="--directory=gdb.mi"

although, I don't think there's any test covering these MI
commands. :-/

> OK?

Looks obviously correct to me.

--
Pedro Alves

> GNU gdb (GDB) 7.2.50.20100727-cvs
> Copyright (C) 2010 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> (gdb) interpreter-exec mi "-remove-inferior i1"
> Segmentation fault
>
>
> 2010-08-04 Marc Khouzam <marc.khouzam@ericsson.com>
>
> * mi/mi-main.c (mi_cmd_remove_inferior): Properly access first argument.
>
>
> ### Eclipse Workspace Patch 1.0
> #P src
> Index: gdb/mi/mi-main.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
> retrieving revision 1.178
> diff -u -r1.178 mi-main.c
> --- gdb/mi/mi-main.c 11 Jun 2010 15:36:07 -0000 1.178
> +++ gdb/mi/mi-main.c 4 Aug 2010 19:40:19 -0000
> @@ -1609,7 +1609,7 @@
> if (argc != 1)
> error ("-remove-inferior should be passed a single argument");
>
> - if (sscanf (argv[1], "i%d", &id) != 1)
> + if (sscanf (argv[0], "i%d", &id) != 1)
> error ("the thread group id is syntactically invalid");
>
> inf = find_inferior_id (id);
>