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]

Re: RFA: Patch for corefile support



Michael Snyder wrote:
"J. Johnston" wrote:

The attached patch fixes a problem in gdb when a corefile is read in
after a multithreaded application has been debugged.  What happens is that
the thread-db and lin-lwp layers are still around and run into internal
errors.

The solution is simply to unpush the thread-db ops in its mourn_inferior
routine.  If a corefile gets loaded, there is no thread-db to interfere.
If another multi-threaded app gets loaded, the thread_db_new_objfile is
designed to bring back the thread-db layer as needed.

This fix solves another failure in the killed.exp testsuite as well.

Ok to commit?

-- Jeff J.


Hi Jeff,

After reviewing the discussion, why don't you add a test for
"keep_thread_db" as suggested by Mark, and check this in?
Perhaps with a comment explaining that the debugging of
statically-linked threaded programs is currently broken, but
this will preserve sanity in case it is ever fixed.

Michael



Thanks Michael. The attached patch has been checked in with the following ChangeLog.

2003-06-03 Jeff Johnston <jjohnstn@redhat.com>

        * thread-db.c (thread_db_mourn_inferior): Unpush thread target
        layer if not dealing with a statically-linked threaded program.

-- Jeff J.

Index: thread-db.c
===================================================================
RCS file: /cvs/src/src/gdb/thread-db.c,v
retrieving revision 1.31
diff -u -r1.31 thread-db.c
--- thread-db.c	8 May 2003 22:33:14 -0000	1.31
+++ thread-db.c	3 Jun 2003 20:00:37 -0000
@@ -1011,6 +1011,18 @@
   proc_handle.pid = 0;
 
   target_beneath->to_mourn_inferior ();
+
+  /* Detach thread_db target ops if not dealing with a statically
+     linked threaded program.  This allows a corefile to be debugged
+     after finishing debugging of a threaded program.  At present,
+     debugging a statically-linked threaded program is broken, but
+     the check is added below in the event that it is fixed in the
+     future.  */
+  if (!keep_thread_db)
+    {
+      unpush_target (&thread_db_ops);
+      using_thread_db = 0;
+    }
 }
 
 static int

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