From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 57AFD3953422 for ; Tue, 2 Feb 2021 04:27:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 57AFD3953422 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38754) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l6nHb-0002tE-Ah for gdb@sourceware.org; Mon, 01 Feb 2021 23:27:19 -0500 Received: from pool-96-233-64-159.bstnma.fios.verizon.net ([96.233.64.159]:38328 helo=pdslaptop.home) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1l6nHa-000829-Cg for gdb@sourceware.org; Mon, 01 Feb 2021 23:27:18 -0500 Message-ID: <4ddd03fca69c1b14bf3bb2f591f410e1eddb0ca7.camel@gnu.org> Subject: Re: Repro case! Re: GDB 10.1: Backtrace goes into infinite loop From: Paul Smith Reply-To: psmith@gnu.org To: gdb@sourceware.org Date: Mon, 01 Feb 2021 23:27:17 -0500 In-Reply-To: References: <503bd54a619aa2781d6b1385cbd3db20634addaa.camel@gnu.org> Organization: GNU's Not UNIX! Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.36.4-0ubuntu1 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2021 04:27:22 -0000 On Mon, 2021-02-01 at 22:21 -0500, Paul Smith via Gdb wrote: > I've discovered that there's something wonky with the embedded Python > interpreter and checking threads while pretty-printing stack > variables. More proof: I rebuilt GDB 10.1 with this patch applied: --- a/gdb/python/py-inferior.c +++ b/gdb/python/py-inferior.c @@ -394,7 +394,7 @@ infpy_threads (PyObject *self, PyObject *args) try { - update_thread_list (); + // update_thread_list (); } catch (const gdb_exception &except) { Just to see, and this version of GDB works fine. There's something unpleasant about invoking update_thread_list() while we are attempting to pretty-print stack variables; it must mess with some global state somewhere that doesn't expect to be messed with, at that time.