This is the mail archive of the gdb-patches@sources.redhat.com 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]

[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;
     }
 }


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