From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7839 invoked by alias); 13 Dec 2001 16:50:03 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 7418 invoked from network); 13 Dec 2001 16:48:46 -0000 Received: from unknown (HELO nevyn.them.org) (128.2.145.6) by sources.redhat.com with SMTP; 13 Dec 2001 16:48:46 -0000 Received: from drow by nevyn.them.org with local (Exim 3.33 #1 (Debian)) id 16EZ2N-0004ge-00 for ; Thu, 13 Dec 2001 11:48:47 -0500 Date: Thu, 13 Dec 2001 08:50:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Subject: [RFA] Don't use thread_db on corefiles Message-ID: <20011213114847.A17989@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.23i X-SW-Source: 2001-12/txt/msg00345.txt.bz2 This patch fixes a really frustrating internal error when you open the coredump of a multithreaded application. Depending on your kernel, either the core has threads (corefile.c supports this just fine) or it doesn't. Neither way will opening libthread_db work right. This patch isn't quite complete, because strange things happen when you connect to a remote target too. But fixing that requires a little more fiddling. Is this OK? -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer 2001-12-13 Daniel Jacobowitz * thread-db.c (thread_db_new_objfile): Don't use thread_db on corefiles. Index: thread-db.c =================================================================== RCS file: /cvs/src/src/gdb/thread-db.c,v retrieving revision 1.18 diff -u -r1.18 thread-db.c --- thread-db.c 2001/10/13 15:04:02 1.18 +++ thread-db.c 2001/12/13 16:43:08 @@ -482,7 +482,9 @@ { td_err_e err; - if (objfile == NULL) + /* Don't attempt to use thread_db on targets which can not run + (core files). */ + if (objfile == NULL || !target_has_execution) { /* All symbols have been discarded. If the thread_db target is active, deactivate it now. */