Garbarge collector eats gdb.selected_thread().inferior

Максим Дзабраев dzabraew@gmail.com
Sat Aug 5 05:58:00 GMT 2017


If multiple time call gdb.selected_thread ().inferior, gdb throw exception:

(gdb) pi gdb.selected_thread().inferior
<gdb.Inferior object at 0x7f1952bea698>
(gdb) pi gdb.selected_thread().inferior
<gdb.Inferior object at 0x7f1952bea698>
(gdb) pi gdb.selected_thread().inferior
Python Exception <type 'exceptions.AttributeError'> 'NoneType' object
has no attribute 'inferior':
Error while executing Python code.
(gdb) info threads
  Id   Target Id         Frame
* 1    Thread 0x7f54f0474740 (LWP 584) "mc" 0x00007f54ef055c33 in
select () from /lib/x86_64-linux-gnu/libc.so.6

I report about this bug here:
https://sourceware.org/bugzilla/show_bug.cgi?id=21213

Following patch fixes this bug and add test of this bug. In attachment
I add gdb.log and gdb.sum before and after apply patch to
thpy_get_inferior.


ChangeLog
2017.08.05 Maksim Dzabraev <dzabraew@gmail.com>

        * gdb/python/py-infthread.c (hpy_get_inferior)
        * gdb/testsuite/gdb.python/py-infthread.exp: Fix bug 21213 and add test

---

diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c
index 626c15c..31d576f 100644
--- a/gdb/python/py-infthread.c
+++ b/gdb/python/py-infthread.c
@@ -162,6 +162,7 @@ thpy_get_inferior (PyObject *self, void *ignore)
   thread_object *thread_obj = (thread_object *) self;

   THPY_REQUIRE_VALID (thread_obj);
+  Py_INCREF (thread_obj->inf_obj);

   return thread_obj->inf_obj;
 }
diff --git a/gdb/testsuite/gdb.python/py-infthread.exp
b/gdb/testsuite/gdb.python/py-infthread.exp
index a5fed8d..dcb7e26 100644
--- a/gdb/testsuite/gdb.python/py-infthread.exp
+++ b/gdb/testsuite/gdb.python/py-infthread.exp
@@ -39,6 +39,14 @@ if ![runto_main] then {

 # Test basic gdb.Inferior attributes and methods.

+#testing https://sourceware.org/bugzilla/show_bug.cgi?id=21213
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+gdb_test_no_output "python import gc; gc.collect()" "test
InferiorThread.inferior" "test InferiorThread.inferior"
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+
+
 gdb_py_test_silent_cmd "python t0 = gdb.selected_thread ()" "test
gdb.selected_thread" 1
 gdb_test "python print (t0)" "\\<gdb.InferiorThread object at
0x\[\[:xdigit:\]\]+>" "verify InferiorThread object"
 gdb_test "python print ('result = %s' % t0.num)" " = 1" "test
InferiorThread.num"If multiple time call gdb.selected_thread
().inferior, gdb throw exception:

(gdb) pi gdb.selected_thread().inferior
<gdb.Inferior object at 0x7f1952bea698>
(gdb) pi gdb.selected_thread().inferior
<gdb.Inferior object at 0x7f1952bea698>
(gdb) pi gdb.selected_thread().inferior
Python Exception <type 'exceptions.AttributeError'> 'NoneType' object
has no attribute 'inferior':
Error while executing Python code.
(gdb) info threads
  Id   Target Id         Frame
* 1    Thread 0x7f54f0474740 (LWP 584) "mc" 0x00007f54ef055c33 in
select () from /lib/x86_64-linux-gnu/libc.so.6

I report about this bug here:
https://sourceware.org/bugzilla/show_bug.cgi?id=21213

Following path fixes this bug and add test of this bug.


ChangeLog
2017.08.05 Maksim Dzabraev <dzabraew@gmail.com>

        * gdb/python/py-infthread.c (hpy_get_inferior)
        * gdb/testsuite/gdb.python/py-infthread.exp: Fix bug 21213 and add test

---

diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c
index 626c15c..31d576f 100644
--- a/gdb/python/py-infthread.c
+++ b/gdb/python/py-infthread.c
@@ -162,6 +162,7 @@ thpy_get_inferior (PyObject *self, void *ignore)
   thread_object *thread_obj = (thread_object *) self;

   THPY_REQUIRE_VALID (thread_obj);
+  Py_INCREF (thread_obj->inf_obj);

   return thread_obj->inf_obj;
 }
diff --git a/gdb/testsuite/gdb.python/py-infthread.exp
b/gdb/testsuite/gdb.python/py-infthread.exp
index a5fed8d..dcb7e26 100644
--- a/gdb/testsuite/gdb.python/py-infthread.exp
+++ b/gdb/testsuite/gdb.python/py-infthread.exp
@@ -39,6 +39,14 @@ if ![runto_main] then {

 # Test basic gdb.Inferior attributes and methods.

+#testing https://sourceware.org/bugzilla/show_bug.cgi?id=21213
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+gdb_test_no_output "python import gc; gc.collect()" "test
InferiorThread.inferior" "test InferiorThread.inferior"
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+gdb_py_test_silent_cmd "python gdb.selected_thread ().inferior" "test
gdb.selected_thread" 1
+
+
 gdb_py_test_silent_cmd "python t0 = gdb.selected_thread ()" "test
gdb.selected_thread" 1
 gdb_test "python print (t0)" "\\<gdb.InferiorThread object at
0x\[\[:xdigit:\]\]+>" "verify InferiorThread object"
 gdb_test "python print ('result = %s' % t0.num)" " = 1" "test
InferiorThread.num"
-------------- next part --------------
Test Run By maksim on Sat Aug  5 10:48:22 2017
Native configuration is x86_64-pc-linux-gnu

		=== gdb tests ===

Schedule of variations:
    unix

Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.exp ...
get_compiler_info: gcc-4-8-4
Executing on host: gcc   -c -g  -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c    (timeout = 300)
spawn gcc -c -g -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c
Executing on host: gcc  /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o  -g  -lm   -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread    (timeout = 300)
spawn gcc /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o -g -lm -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread
spawn /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory
GNU gdb (GDB) 8.0.50.20170804-git
Copyright (C) 2017 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python
Source directories searched: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread
Reading symbols from /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread...done.
(gdb) spawn /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory
GNU gdb (GDB) 8.0.50.20170804-git
Copyright (C) 2017 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python
Source directories searched: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread
Reading symbols from /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread...done.
(gdb) python print ('test')
test
(gdb) python print (sys.version_info[0])
2
(gdb) python print (sys.version_info[1])
7
(gdb) delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 1 at 0x40052b: file /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c, line 13.
(gdb) run 
Starting program: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread 
warning: the debug information found in "/lib64/ld-2.19.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).


Breakpoint 1, main (argc=1, argv=0x7fffffffe108) at /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c:13
13	  return f1 (1, 2);
(gdb) python gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python import gc; gc.collect()
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
python gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python i0 = gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
python t0 = gdb.selected_thread ()
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python print (t0)
<gdb.InferiorThread object at 0x7f3437783130>
(gdb) PASS: gdb.python/py-infthread.exp: verify InferiorThread object
python print ('result = %s' % t0.num)
result = 1
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.num
python print ('result = %s' % t0.global_num)
result = 1
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.global_num
python print ('result = %s' % str (t0.ptid))
result = (7890, 7890, 0)
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.ptid
python print ('result = %s' % i0.num)
result = 1
(gdb) PASS: gdb.python/py-infthread.exp: test Inferior.num
python name = gdb.selected_thread().name
(gdb) PASS: gdb.python/py-infthread.exp: get supplied name of current thread
python gdb.selected_thread().name = 'hibob'
(gdb) PASS: gdb.python/py-infthread.exp: set name of current thread
python print (gdb.selected_thread().name)
hibob
(gdb) PASS: gdb.python/py-infthread.exp: check name of current thread
python gdb.selected_thread().name = None
(gdb) PASS: gdb.python/py-infthread.exp: reset name of current thread
python print (gdb.selected_thread().name == name)
True
(gdb) PASS: gdb.python/py-infthread.exp: check name of current thread again
python print ('result = %s' % t0.is_stopped ())
result = True
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.is_stopped
python print ('result = %s' % t0.is_running ())
result = False
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.is_running
python print ('result = %s' % t0.is_exited ())
result = False
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.is_exited
python print ('result = %s' % t0.is_valid ())
result = True
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.is_valid
kill inferior 1
(gdb) PASS: gdb.python/py-infthread.exp: kill inferior 1
python print ('result = %s' % t0.is_valid ())
result = False
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.is_valid
testcase /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.exp completed in 2 seconds

		=== gdb Summary ===

# of expected passes		23
Executing on host: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory --version    (timeout = 300)
spawn /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory --version
GNU gdb (GDB) 8.0.50.20170804-git
Copyright (C) 2017 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
/home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb version  8.0.50.20170804-git -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory 

runtest completed at Sat Aug  5 10:48:24 2017
-------------- next part --------------
Test Run By maksim on Sat Aug  5 10:41:15 2017
Native configuration is x86_64-pc-linux-gnu

		=== gdb tests ===

Schedule of variations:
    unix

Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.exp ...
get_compiler_info: gcc-4-8-4
Executing on host: gcc   -c -g  -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c    (timeout = 300)
spawn gcc -c -g -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c
Executing on host: gcc  /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o  -g  -lm   -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread    (timeout = 300)
spawn gcc /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread0.o -g -lm -o /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread
spawn /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory
GNU gdb (GDB) 8.0.50.20170804-git
Copyright (C) 2017 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python
Source directories searched: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread
Reading symbols from /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread...done.
(gdb) spawn /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory
GNU gdb (GDB) 8.0.50.20170804-git
Copyright (C) 2017 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python
Source directories searched: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread
Reading symbols from /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread...done.
(gdb) python print ('test')
test
(gdb) python print (sys.version_info[0])
2
(gdb) python print (sys.version_info[1])
7
(gdb) delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 1 at 0x40052b: file /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c, line 13.
(gdb) run 
Starting program: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/outputs/gdb.python/py-infthread/py-infthread 
warning: the debug information found in "/lib64/ld-2.19.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).


Breakpoint 1, main (argc=1, argv=0x7fffffffe108) at /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.c:13
13	  return f1 (1, 2);
(gdb) python import gc; gc.collect()
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
python gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python gdb.selected_thread ().inferior
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python import gc; gc.collect()
(gdb) PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
python gdb.selected_thread ().inferior
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'inferior'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test gdb.selected_thread
python gdb.selected_thread ().inferior
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'inferior'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test gdb.selected_thread
python i0 = gdb.selected_thread ().inferior
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'inferior'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.inferior
python t0 = gdb.selected_thread ()
(gdb) PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
python print (t0)
None
(gdb) FAIL: gdb.python/py-infthread.exp: verify InferiorThread object
python print ('result = %s' % t0.num)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'num'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.num
python print ('result = %s' % t0.global_num)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'global_num'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.global_num
python print ('result = %s' % str (t0.ptid))
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'ptid'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.ptid
python print ('result = %s' % i0.num)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'i0' is not defined
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test Inferior.num
python name = gdb.selected_thread().name
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: get supplied name of current thread
python gdb.selected_thread().name = 'hibob'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: set name of current thread
python print (gdb.selected_thread().name)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: check name of current thread
python gdb.selected_thread().name = None
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: reset name of current thread
python print (gdb.selected_thread().name == name)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: check name of current thread again
python print ('result = %s' % t0.is_stopped ())
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'is_stopped'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_stopped
python print ('result = %s' % t0.is_running ())
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'is_running'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_running
python print ('result = %s' % t0.is_exited ())
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'is_exited'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_exited
python print ('result = %s' % t0.is_valid ())
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'is_valid'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_valid
kill inferior 1
(gdb) PASS: gdb.python/py-infthread.exp: kill inferior 1
python print ('result = %s' % t0.is_valid ())
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'is_valid'
Error while executing Python code.
(gdb) FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_valid
testcase /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.exp completed in 0 seconds

		=== gdb Summary ===

# of expected passes		6
# of unexpected failures	18
Executing on host: /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory --version    (timeout = 300)
spawn /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory --version
GNU gdb (GDB) 8.0.50.20170804-git
Copyright (C) 2017 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
/home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb version  8.0.50.20170804-git -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory 

runtest completed at Sat Aug  5 10:41:15 2017
-------------- next part --------------
Test Run By maksim on Sat Aug  5 10:48:22 2017
Native configuration is x86_64-pc-linux-gnu

		=== gdb tests ===

Schedule of variations:
    unix

Running target unix
Running /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.exp ...
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: verify InferiorThread object
PASS: gdb.python/py-infthread.exp: test InferiorThread.num
PASS: gdb.python/py-infthread.exp: test InferiorThread.global_num
PASS: gdb.python/py-infthread.exp: test InferiorThread.ptid
PASS: gdb.python/py-infthread.exp: test Inferior.num
PASS: gdb.python/py-infthread.exp: get supplied name of current thread
PASS: gdb.python/py-infthread.exp: set name of current thread
PASS: gdb.python/py-infthread.exp: check name of current thread
PASS: gdb.python/py-infthread.exp: reset name of current thread
PASS: gdb.python/py-infthread.exp: check name of current thread again
PASS: gdb.python/py-infthread.exp: test InferiorThread.is_stopped
PASS: gdb.python/py-infthread.exp: test InferiorThread.is_running
PASS: gdb.python/py-infthread.exp: test InferiorThread.is_exited
PASS: gdb.python/py-infthread.exp: test InferiorThread.is_valid
PASS: gdb.python/py-infthread.exp: kill inferior 1
PASS: gdb.python/py-infthread.exp: test InferiorThread.is_valid

		=== gdb Summary ===

# of expected passes		23
/home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb version  8.0.50.20170804-git -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory 

-------------- next part --------------
Test Run By maksim on Sat Aug  5 10:41:15 2017
Native configuration is x86_64-pc-linux-gnu

		=== gdb tests ===

Schedule of variations:
    unix

Running target unix
Running /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.python/py-infthread.exp ...
PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
PASS: gdb.python/py-infthread.exp: test InferiorThread.inferior
FAIL: gdb.python/py-infthread.exp: test gdb.selected_thread
FAIL: gdb.python/py-infthread.exp: test gdb.selected_thread
FAIL: gdb.python/py-infthread.exp: test InferiorThread.inferior
PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
FAIL: gdb.python/py-infthread.exp: verify InferiorThread object
FAIL: gdb.python/py-infthread.exp: test InferiorThread.num
FAIL: gdb.python/py-infthread.exp: test InferiorThread.global_num
FAIL: gdb.python/py-infthread.exp: test InferiorThread.ptid
FAIL: gdb.python/py-infthread.exp: test Inferior.num
FAIL: gdb.python/py-infthread.exp: get supplied name of current thread
FAIL: gdb.python/py-infthread.exp: set name of current thread
FAIL: gdb.python/py-infthread.exp: check name of current thread
FAIL: gdb.python/py-infthread.exp: reset name of current thread
FAIL: gdb.python/py-infthread.exp: check name of current thread again
FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_stopped
FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_running
FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_exited
FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_valid
PASS: gdb.python/py-infthread.exp: kill inferior 1
FAIL: gdb.python/py-infthread.exp: test InferiorThread.is_valid

		=== gdb Summary ===

# of expected passes		6
# of unexpected failures	18
/home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../../gdb/gdb version  8.0.50.20170804-git -nw -nx -data-directory /home/maksim/sources/obj-binutils-gdb/gdb/testsuite/../data-directory 



More information about the Gdb-patches mailing list