From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id 583843858D1E for ; Sun, 1 Oct 2023 13:57:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 583843858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: by gnu.wildebeest.org (Postfix, from userid 1000) id 2D61A30067AD; Sun, 1 Oct 2023 15:57:56 +0200 (CEST) Date: Sun, 1 Oct 2023 15:57:56 +0200 From: Mark Wielaard To: "Frank Ch. Eigler" Cc: elfutils-devel@sourceware.org Subject: Re: [PATCH] PR30879: debuginfod intermittent terminate() Message-ID: <20231001135756.GC32765@gnu.wildebeest.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-3028.7 required=5.0 tests=BAYES_00,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi Frank, On Fri, Sep 22, 2023 at 04:36:07PM -0400, Frank Ch. Eigler via Elfutils-devel wrote: > > Author: Frank Ch. Eigler > Date: Fri Sep 22 15:30:51 2023 -0400 > > PR30879: intermittent debuginfod crash with unhandled exception > > Code inspection identified two places where sqlite_ps objects were > being created/used outside try/catch protection. This patch wraps or > replaces them. > > * configure.ac: Look for glibc backtrace headers. > * debuginfod.cxx (scan): New function wrapped by a try/catch loop. > (sqlite_checkpoint_pb): Use non-exception-producing sqlite functions. > (main, my_terminate_handler): New terminate() handler. The new terminate_handler seems really useful, I wonder why something like this isn't the default behaviour. I think I understand the idea behind wrapping scan () to catch the reportable_exception. The sqlite_checkpoint_pb looks simpler now. But I must admit I don't fully understand if the lifetime of the object. The sqlite_ps had a destructor that called finalize, which I assume isn't necessary? The code looks good to me. Did you already catch (haha, pun intended) where/what caused that odd sparc uncaught exception? Cheers, Mark