From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: sqlite memory allocation and async signal safety Date: Thu, 24 Mar 2022 13:08:50 +0200 Message-ID: <83r16rd2v1.fsf@gnu.org> References: <8735j7btyj.fsf.ref@yahoo.com> <8735j7btyj.fsf@yahoo.com> <83v8w3d6cy.fsf@gnu.org> <87sfr7abx2.fsf@yahoo.com> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40001"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Po Lu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Mar 24 12:17:12 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nXLSp-000AG0-Sd for ged-emacs-devel@m.gmane-mx.org; Thu, 24 Mar 2022 12:17:12 +0100 Original-Received: from localhost ([::1]:42352 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nXLSo-0002Tq-Bd for ged-emacs-devel@m.gmane-mx.org; Thu, 24 Mar 2022 07:17:10 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:45376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nXLKt-0002yS-FL for emacs-devel@gnu.org; Thu, 24 Mar 2022 07:08:59 -0400 Original-Received: from [2001:470:142:3::e] (port=53948 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nXLKt-0004ko-62; Thu, 24 Mar 2022 07:08:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=HfFgctFNKAeqC5h8Twws3y/znGHGJ07rwkw1WFncDeA=; b=p7pJBPUeua4Y vNAURTy89NUJ4bRQ+MsXxSJ63srNSsOYWqGdB5UGTpS3rZ51rOKYowK4XQ+fjmS27Qv5fhZam5SA6 H4GIRMd8IR9KsxnlV3ptuWnLF1Mu4f/Lpfm6XtzCyToy5Te/dpEJmsvswt6EmwURWe+wgazKq6V52 PUIZiXMj/sKukkrl92Mpwm4OAmQR1LCej5jTq/xj8021UUHPOD2yPFDi9mIRw7vK/Lx+XDJ8nZPLD UzKm739T2cd7jX7/Ck3EBZMdXCkjzoFtxbkXm6ApiC5JeZqtJ+KHmIi0u8T/8GUOr8tXefvyeiPBJ FH3BeHGh6ebKdN44SUsjbw==; Original-Received: from [87.69.77.57] (port=4046 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nXLKs-00072N-LJ; Thu, 24 Mar 2022 07:08:58 -0400 In-Reply-To: <87sfr7abx2.fsf@yahoo.com> (message from Po Lu on Thu, 24 Mar 2022 18:21:29 +0800) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:287416 Archived-At: > From: Po Lu > Cc: emacs-devel@gnu.org > Date: Thu, 24 Mar 2022 18:21:29 +0800 > > Eli Zaretskii writes: > > > I think we used to block input around function calls that could > > allocate memory because our signal handlers, and in particular SIGIO > > handler, did non-trivial stuff. Nowadays our signal handlers just set > > a flag and return, so I'm not sure this is needed anymore. Especially > > when system library malloc is called, which AFAIU is mostly async-safe > > nowadays on modern platforms. > > > > Am I missing something? > > Unfortunately, most system malloc implementations are still not > async-signal safe, but if all that happens is a flag being set, then I > don't think calling block_input is required anymore. > > Which flag is that, and where is it tested? It depends on the signal. Look at the signal handlers we install. For SIGIO, this is the handler: void handle_input_available_signal (int sig) { pending_signals = true; if (input_available_clear_time) *input_available_clear_time = make_timespec (0, 0); } and the flag is pending_signals.