This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH RFA] lin-lwp.c: Mark main thread as stopped when attaching
- From: Kevin Buettner <kevinb at cygnus dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Mon, 19 Nov 2001 12:57:35 -0700
- Subject: [PATCH RFA] lin-lwp.c: Mark main thread as stopped when attaching
The patch below marks the main pid as stopped when attaching. If it
is not marked as such, then it is not (re)started when continuing if
the user first changes the current thread.
The practical effects of this problem may be demonstrated on a
Linux/x86 sytem as follows:
1) Start the linux-dp program and make note of the process id of the
main thread.
2) Debug the linux-dp program and attach to PID representing the
main thread.
3) Do ``info threads'' and pick out a thread other than the main
one.
4) Use GDB's ``thread'' command to switch to this thread.
5) Continue the program.
6) Attempt to interrupt the program with Ctrl-C. It will be impossible
to do so. (Examining the threads from another shell with the
``ps'' command is also instructive at this stage.)
Jim Blandy deserves credit for arriving at the above procedure for
reproducing this problem.
The patch below fixes this bug. Okay to commit?
* lin-lwp.c (lin_lwp_attach_lwp): Mark main thread as stopped.
Index: lin-lwp.c
===================================================================
RCS file: /cvs/src/src/gdb/lin-lwp.c,v
retrieving revision 1.30
diff -u -p -r1.30 lin-lwp.c
--- lin-lwp.c 2001/10/14 11:30:37 1.30
+++ lin-lwp.c 2001/11/19 19:08:10
@@ -381,6 +389,12 @@ lin_lwp_attach_lwp (ptid_t ptid, int ver
gdb_assert (pid == GET_LWP (ptid)
&& WIFSTOPPED (status) && WSTOPSIG (status));
+ lp->stopped = 1;
+ }
+ else
+ {
+ /* Mark original process (i.e. the one whose LWP id is equal to
+ the overall process id) as stopped too. */
lp->stopped = 1;
}
}