[07/23] Delete unnecessary code from kill_command

Message ID 20190906232807.6191-8-palves@redhat.com
State New, archived
Headers

Commit Message

Pedro Alves Sept. 6, 2019, 11:27 p.m. UTC
  I believe this comment:

      /* Killing off the inferior can leave us with a core file.  If
	 so, print the state we are left in.  */

Referred to the fact that a decade ago, by design, GDB would let you
type "run" when debugging a core dump, keeping the core open.  That
"run" would push a process_stratum target on the target stack for the
live process, and, the core would remain open -- we used to have a
core_stratum.  When the live process was killed/detached or exited,
GDB would go back to debugging the core, since the core_stratum target
was now at the top of the stack.  That design had a number of
problems, see here for example:

  https://sourceware.org/ml/gdb-patches/2008-08/msg00290.html

In 2010, core_stratum was finaly eliminated and cores now have
process_stratum too, with commit c0edd9edadfe ("Make core files the
process_stratum.").  Pushing a live process on the stack while you're
debugging a core discards the core completely.

I also thought that this might be in use with checkpoints, but it does
not -- "kill" when you have multiple checkpoints kills all the
checkpoints.

gdb/ChangeLog:
yyyy-mm-dd  Pedro Alves  <palves@redhat.com>

	* infcmd.c (kill_command): Remove dead code.
---
 gdb/infcmd.c | 14 --------------
 1 file changed, 14 deletions(-)
  

Comments

Aktemur, Tankut Baris Oct. 1, 2019, 10:19 a.m. UTC | #1
Hi,

* On September 7, 2019 1:28 AM, Pedro Alves wrote:
>

> diff --git a/gdb/infcmd.c b/gdb/infcmd.c

> index d7a7e6f933..a12dba23aa 100644

> --- a/gdb/infcmd.c

> +++ b/gdb/infcmd.c

> @@ -2503,20 +2503,6 @@ kill_command (const char *arg, int from_tty)

>      printf_unfiltered (_("[Inferior %d (%s) killed]\n"),

>  		       infnum, pid_str.c_str ());

> 

> -  /* If we still have other inferiors to debug, then don't mess with

> -     with their threads.  */

> -  if (!have_inferiors ())

> -    {

> -      init_thread_list ();		/* Destroy thread info.  */


Removing 'init_thread_list' skips re-initialization of the
'highest_thread_num' global back to zero.  In turn, this causes the
following failure:

  FAIL: gdb.arch/i386-mpx-simple_segv.exp: print nopass stop: display

because the output becomes

  Thread 1 "i386-mpx-simple" received signal SIGSEGV

instead of

  Program received signal SIGSEGV

Regards,
-Baris


Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Gary Kershaw
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
  
Aktemur, Tankut Baris Oct. 1, 2019, 1:28 p.m. UTC | #2
* On October 1, 2019 12:19 PM, Aktemur, Tankut Baris wrote:
> 

> Hi,

> 

> * On September 7, 2019 1:28 AM, Pedro Alves wrote:

> >

> > diff --git a/gdb/infcmd.c b/gdb/infcmd.c

> > index d7a7e6f933..a12dba23aa 100644

> > --- a/gdb/infcmd.c

> > +++ b/gdb/infcmd.c

> > @@ -2503,20 +2503,6 @@ kill_command (const char *arg, int from_tty)

> >      printf_unfiltered (_("[Inferior %d (%s) killed]\n"),

> >  		       infnum, pid_str.c_str ());

> >

> > -  /* If we still have other inferiors to debug, then don't mess with

> > -     with their threads.  */

> > -  if (!have_inferiors ())

> > -    {

> > -      init_thread_list ();		/* Destroy thread info.  */

> 

> Removing 'init_thread_list' skips re-initialization of the

> 'highest_thread_num' global back to zero.  In turn, this causes the

> following failure:

> 

>   FAIL: gdb.arch/i386-mpx-simple_segv.exp: print nopass stop: display

> 


Please ignore this.  The failure is caused by another patch, not this one.

Regards,
-Baris

> because the output becomes

> 

>   Thread 1 "i386-mpx-simple" received signal SIGSEGV

> 

> instead of

> 

>   Program received signal SIGSEGV

> 

> Regards,

> -Baris

> 

Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Gary Kershaw
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
  

Patch

diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index d7a7e6f933..a12dba23aa 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -2503,20 +2503,6 @@  kill_command (const char *arg, int from_tty)
     printf_unfiltered (_("[Inferior %d (%s) killed]\n"),
 		       infnum, pid_str.c_str ());
 
-  /* If we still have other inferiors to debug, then don't mess with
-     with their threads.  */
-  if (!have_inferiors ())
-    {
-      init_thread_list ();		/* Destroy thread info.  */
-
-      /* Killing off the inferior can leave us with a core file.  If
-	 so, print the state we are left in.  */
-      if (target_has_stack)
-	{
-	  printf_filtered (_("In %s,\n"), target_longname);
-	  print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
-	}
-    }
   bfd_cache_close_all ();
 }