This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] Fix Linux attach to signalled/stopped processes
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: Roland McGrath <roland at redhat dot com>, Doug Evans <dje at google dot com>, GDB Patches <gdb-patches at sourceware dot org>, mark dot kettenis at xs4all dot nl
- Date: Fri, 26 Sep 2008 05:51:11 +0200
- Subject: Re: [patch] Fix Linux attach to signalled/stopped processes
- References: <e394668d0803311218x35c802c1g7dba5f3b48b38bc8@mail.gmail.com> <20080401223012.GA14076@host0.dyn.jankratochvil.net> <20080410153735.GD21662@caradoc.them.org> <20080410154839.GA5375@host0.dyn.jankratochvil.net> <20080410231205.2DBFD26F992@magilla.localdomain> <20080411161824.GA4183@host0.dyn.jankratochvil.net> <20080412000155.7F07A26FA5E@magilla.localdomain> <20080414143448.GA32227@caradoc.them.org> <20080414150919.GB32227@caradoc.them.org> <je7i91zp8l.fsf@sykes.suse.de>
On Wed, 24 Sep 2008 14:45:46 +0200, Andreas Schwab wrote:
> > +set testpid2 [expr $testpid + 2]
>
> There is no reason that this is required to work.
Yes, thanks for the notice. OK to commit?
Regards,
Jan
2008-09-26 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.threads/attachstop-mt.exp: Note a real testcase name this
testcase is derived from. Fix racy dependency on an expected PID
number. No longer support the testcase on Linux kernel 2.4.x.
--- gdb/testsuite/gdb.threads/attachstop-mt.exp 1 May 2008 18:50:14 -0000 1.1
+++ gdb/testsuite/gdb.threads/attachstop-mt.exp 26 Sep 2008 03:45:31 -0000
@@ -14,9 +14,8 @@
# 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 test was created by modifying gdb.threads/attachstop.
-# This file was created by Jan Kratochvil <jan.kratochvil@redhat.com>.
-# Regression for: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=197584
+# This test is based on gdb.base/attach.exp with modifications by Jeff Johnston
+# <jjohnstn@redhat.com> and Jan Kratochvil <jan.kratochvil@redhat.com>.
# This test only works on Linux
if { ![isnative] || [is_remote host] || ![istarget *-linux*] } {
@@ -52,17 +51,25 @@ set testpid [eval exec $binfile &]
# No race
sleep 2
-# Do not: set testpid2 [expr $testpid + 1]
-# as it will not exist on Red Hat 2.6.9-34.0.2.ELsmp
-set testpid2 [expr $testpid + 2]
-
-set status2 /proc/${testpid}/task/${testpid2}/status
-if {[expr ! [file exists $status2]]} {
- # kernel-2.4
- set status2 /proc/${testpid2}/status
+# The testcase has three threads, find some other thread TID for $testpid2.
+set tids [exec sh -c "echo /proc/$testpid/task/*"]
+regsub -all /proc/$testpid/task/ $tids {} tids
+if {$tids == "*"} {
+ unresolved "/proc/PID/task is not supported (kernel-2.4?)"
+ remote_exec build "kill -9 ${testpid}"
+ return -1
}
+set tids [lsort -integer [split $tids]]
+if {[llength $tids] != 3 || [lindex $tids 0] != $testpid} {
+ verbose -log "Invalid TIDs <$tids> for PID $testpid"
+ fail "Invalid TIDs found"
+ remote_exec build "kill -9 ${testpid}"
+ return -1
+}
+set testpid2 [lindex $tids 2]
# Initial sanity test it is normally sleeping
+set status2 /proc/${testpid}/task/${testpid2}/status
set fileid0 [open $status2 r];
gets $fileid0 line1;
gets $fileid0 line2;