This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Support inferior events in python


On 02/09/2011 11:30 AM, Jan Kratochvil wrote:
On Wed, 09 Feb 2011 17:19:21 +0100, sami wagiaalla wrote:
Hmm... I thought I fixed that by avoiding checking for the prompt.

I also find that one incorrect but I do not have a FAIL reproducer for it.



Yeah, the prompt is unreliable when non-stop is on.


I can't reproduce the problem

Reproducible for me in 90% of runs on Fedora 14 i386 (not x86_64).



I could not reproduce it still, but the problem seems obvious now. The bad pointer which was supposed to cause the SIGSEGV was not initialized. I also added a breakpoint at the end of main to make sure that main waits for the signal to be delivered and not exit. Just in case.


Please try the attached patch.

Sami
Move signal test into its own file. Initialize bad pointer.

2011-02-11  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdb.python/py-evsignal.exp: New file.
	* gdb.python/py-evthreads.cc: Initialize bad pointer
	to NULL.

diff --git a/gdb/testsuite/gdb.python/py-evsignal.exp b/gdb/testsuite/gdb.python/py-evsignal.exp
new file mode 100644
index 0000000..6fbe033
--- /dev/null
+++ b/gdb/testsuite/gdb.python/py-evsignal.exp
@@ -0,0 +1,55 @@
+# Copyright (C) 2010, 2011 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/>.
+
+# This file is part of the GDB testsuite.  It tests Python-based
+# pretty-printing for the CLI.
+
+# Skip all tests if Python scripting is not enabled.
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+load_lib gdb-python.exp
+
+set testfile "py-evthreads"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+set pyfile ${srcdir}/${subdir}/py-events.py
+
+gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings}
+clean_restart $testfile
+
+if { [skip_python_tests] } { continue }
+
+gdb_test_no_output "python execfile ('${pyfile}')" ""
+
+gdb_test "Test_Events" "Event testers registered."
+gdb_test_no_output "set non-stop on"
+gdb_test_no_output "set target-async on"
+
+gdb_breakpoint [gdb_get_line_number "end of main"]
+
+send_gdb "run\n"
+gdb_expect {
+    -re ".*stop reason: signal.*
+.*stop signal: SIGSEGV.*
+.*thread num: 3.*" {
+        pass "thread 3 was signalled"
+    }
+    timeout {
+	    fail "thread 3 was not signalled"
+	}
+}
diff --git a/gdb/testsuite/gdb.python/py-evthreads.c b/gdb/testsuite/gdb.python/py-evthreads.c
index 1464ce6..55414ed 100644
--- a/gdb/testsuite/gdb.python/py-evthreads.c
+++ b/gdb/testsuite/gdb.python/py-evthreads.c
@@ -28,7 +28,7 @@ void* thread3 (void* d)
   int count3 = 0;
   count3++;
 
-  int *bad;
+  int *bad = NULL;
   *bad = 1;
 
   return NULL;
@@ -46,10 +46,10 @@ int main (){
   pthread_create (&thread2_id, NULL, thread2, NULL);
   pthread_create (&thread3_id, NULL, thread3, NULL);
 
-  int count1 = 0; // stop1
+  int count1 = 0;
   count1++;
 
   pthread_join (thread2_id, NULL);
   pthread_join (thread3_id, NULL);
-  return 12;
+  return 12; // end of main
 }
diff --git a/gdb/testsuite/gdb.python/py-evthreads.exp b/gdb/testsuite/gdb.python/py-evthreads.exp
index 6ea7eb4..957d345 100644
--- a/gdb/testsuite/gdb.python/py-evthreads.exp
+++ b/gdb/testsuite/gdb.python/py-evthreads.exp
@@ -106,14 +106,3 @@ gdb_expect {
 	}
 }
 
-send_gdb "continue -a\n"
-gdb_expect {
-    -re ".*stop reason: signal.*
-.*stop signal: SIGSEGV.*
-.*thread num: 3.*" {
-        pass "thread 3 was signalled"
-    }
-    timeout {
-	    fail "thread 3 was not signalled"
-	}
-}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]