From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16999 invoked by alias); 23 Jul 2009 01:58:29 -0000 Received: (qmail 16863 invoked by uid 22791); 23 Jul 2009 01:58:26 -0000 X-SWARE-Spam-Status: No, hits=-1.4 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 23 Jul 2009 01:58:13 +0000 Received: from wpaz24.hot.corp.google.com (wpaz24.hot.corp.google.com [172.24.198.88]) by smtp-out.google.com with ESMTP id n6N1w8LT029450 for ; Thu, 23 Jul 2009 02:58:09 +0100 Received: from localhost (ppluzhnikov.mtv.corp.google.com [172.18.118.92]) by wpaz24.hot.corp.google.com with ESMTP id n6N1w5qA018021; Wed, 22 Jul 2009 18:58:06 -0700 Received: by localhost (Postfix, from userid 74925) id BD0F076BC0; Wed, 22 Jul 2009 18:58:05 -0700 (PDT) To: gdb-patches@sourceware.org Cc: ppluzhnikov@google.com Subject: [patch] Make 'info func' interruptible. Message-Id: <20090723015805.BD0F076BC0@localhost> Date: Thu, 23 Jul 2009 12:09:00 -0000 From: ppluzhnikov@google.com (Paul Pluzhnikov) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-07/txt/msg00575.txt.bz2 Greetings, This is rather on the obvious side. For a large (300MB) debug binary, doing 'info func' (without regex) puts GDB into 10 minute uniterruptible 100% CPU spin. While improving the 10 minute wait will hopefully be a subject of another patch, attached patch makes the wait interruptible. Thanks, -- Paul Pluzhnikov 2009-07-22 Paul Pluzhnikov * symtab.c (search_symbols): Add QUIT. Index: symtab.c =================================================================== RCS file: /cvs/src/src/gdb/symtab.c,v retrieving revision 1.213 diff -u -p -u -r1.213 symtab.c --- symtab.c 2 Jul 2009 17:21:07 -0000 1.213 +++ symtab.c 23 Jul 2009 01:47:08 -0000 @@ -3243,6 +3243,8 @@ search_symbols (char *regexp, domain_enu { ALL_MSYMBOLS (objfile, msymbol) { + QUIT; + if (MSYMBOL_TYPE (msymbol) == ourtype || MSYMBOL_TYPE (msymbol) == ourtype2 || MSYMBOL_TYPE (msymbol) == ourtype3 ||