Fix =thread-exited not showing up when detaching (PR 15564)

Message ID 1430417119-12617-1-git-send-email-simon.marchi@ericsson.com
State New, archived
Headers

Commit Message

Simon Marchi April 30, 2015, 6:05 p.m. UTC
  I sent a patch in 2013 for this (incorrectly named =thread-created):

  https://cygwin.com/ml/gdb-patches/2013-06/msg00129.html

Tom Tromey was ok with the change, but suggested to add a test as well.
Then I forgot about this patch until today. So here it is again, with the
corresponding test.

The problem is that the =thread-exited event does not appear when detaching
from a local process. It does appear with remote though. It's not a really
big deal, but I'd like it to be consistent.

Tested with local and remote Linux on my Ubuntu 14.04.

gdb/ChangeLog:

	PR gdb/15564
	* inferior.c (detach_inferior): Call exit_inferior_1 with silent = 0.

gdb/testsuite/ChangeLog:

	PR gdb/15564
	* gdb.mi/mi-detach.exp: New file.
---
 gdb/inferior.c                     |  2 +-
 gdb/testsuite/gdb.mi/mi-detach.exp | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)
 create mode 100644 gdb/testsuite/gdb.mi/mi-detach.exp
  

Comments

Pedro Alves May 19, 2015, 1:05 p.m. UTC | #1
On 04/30/2015 07:05 PM, Simon Marchi wrote:
> I sent a patch in 2013 for this (incorrectly named =thread-created):
> 
>   https://cygwin.com/ml/gdb-patches/2013-06/msg00129.html
> 
> Tom Tromey was ok with the change, but suggested to add a test as well.
> Then I forgot about this patch until today. So here it is again, with the
> corresponding test.
> 
> The problem is that the =thread-exited event does not appear when detaching
> from a local process. It does appear with remote though. It's not a really
> big deal, but I'd like it to be consistent.
> 
> Tested with local and remote Linux on my Ubuntu 14.04.
> 
> gdb/ChangeLog:
> 
> 	PR gdb/15564
> 	* inferior.c (detach_inferior): Call exit_inferior_1 with silent = 0.
> 
> gdb/testsuite/ChangeLog:
> 
> 	PR gdb/15564
> 	* gdb.mi/mi-detach.exp: New file.

OK.

Thanks,
Pedro Alves
  
Simon Marchi June 2, 2015, 7:34 p.m. UTC | #2
On 15-05-19 09:05 AM, Pedro Alves wrote:
> On 04/30/2015 07:05 PM, Simon Marchi wrote:
>> I sent a patch in 2013 for this (incorrectly named =thread-created):
>>
>>   https://cygwin.com/ml/gdb-patches/2013-06/msg00129.html
>>
>> Tom Tromey was ok with the change, but suggested to add a test as well.
>> Then I forgot about this patch until today. So here it is again, with the
>> corresponding test.
>>
>> The problem is that the =thread-exited event does not appear when detaching
>> from a local process. It does appear with remote though. It's not a really
>> big deal, but I'd like it to be consistent.
>>
>> Tested with local and remote Linux on my Ubuntu 14.04.
>>
>> gdb/ChangeLog:
>>
>> 	PR gdb/15564
>> 	* inferior.c (detach_inferior): Call exit_inferior_1 with silent = 0.
>>
>> gdb/testsuite/ChangeLog:
>>
>> 	PR gdb/15564
>> 	* gdb.mi/mi-detach.exp: New file.
> 
> OK.
> 
> Thanks,
> Pedro Alves

Pushed, thanks!
  
Pedro Alves July 6, 2015, 3:33 p.m. UTC | #3
Hi Simon,

On 06/02/2015 08:34 PM, Simon Marchi wrote:

>>> gdb/ChangeLog:
>>>
>>> 	PR gdb/15564
>>> 	* inferior.c (detach_inferior): Call exit_inferior_1 with silent = 0.
>>>
>>> gdb/testsuite/ChangeLog:
>>>
>>> 	PR gdb/15564
>>> 	* gdb.mi/mi-detach.exp: New file.

Just noticed that this test fails with gdbserver:

$ make check RUNTESTFLAGS="--target_board=native-gdbserver mi-detach.exp"
...
Running /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.mi/mi-detach.exp ...
FAIL: gdb.mi/mi-detach.exp: detach

(I bisected this, and it turns out to failed already when it was
first added.)

Thanks,
Pedro Alves
  
Yao Qi Sept. 1, 2015, 10:11 a.m. UTC | #4
Pedro Alves <palves@redhat.com> writes:

> $ make check RUNTESTFLAGS="--target_board=native-gdbserver mi-detach.exp"
> ...
> Running
> /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.mi/mi-detach.exp
> ...
> FAIL: gdb.mi/mi-detach.exp: detach
>
> (I bisected this, and it turns out to failed already when it was
> first added.)

Hi Simon,
Could you take a look at this fail?  As Pedro said, it fails when it was added.
  
Simon Marchi Sept. 2, 2015, 6:43 p.m. UTC | #5
On 15-09-01 06:11 AM, Yao Qi wrote:
> Hi Simon,
> Could you take a look at this fail?  As Pedro said, it fails when it was added.

Ok, I'll take a look.
  

Patch

diff --git a/gdb/inferior.c b/gdb/inferior.c
index ba320b5..d0783d3 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -310,7 +310,7 @@  detach_inferior (int pid)
 {
   struct inferior *inf = find_inferior_pid (pid);
 
-  exit_inferior_1 (inf, 1);
+  exit_inferior_1 (inf, 0);
 
   if (print_inferior_events)
     printf_unfiltered (_("[Inferior %d detached]\n"), pid);
diff --git a/gdb/testsuite/gdb.mi/mi-detach.exp b/gdb/testsuite/gdb.mi/mi-detach.exp
new file mode 100644
index 0000000..88759a9
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi-detach.exp
@@ -0,0 +1,35 @@ 
+# Copyright 2015 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that detaching from the inferior produces the right MI records.
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+gdb_exit
+if [mi_gdb_start] {
+    continue
+}
+
+standard_testfile basics.c
+
+if {[build_executable $testfile.exp $testfile $srcfile {debug}] == -1} {
+     untested mi-detach.exp
+     return -1
+}
+
+mi_run_to_main
+
+mi_gdb_test "-target-detach" "=thread-exited,id=\"1\".*=thread-group-exited,id=\"i1\".*" "detach"