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: igc, macOS avoiding signals Date: Mon, 30 Dec 2024 19:49:26 +0200 Message-ID: <86h66lnjrt.fsf@gnu.org> References: <799DDBC5-2C14-4476-B1E0-7BA2FE9E7901@toadstyle.org> <87h66loc17.fsf@gmail.com> <878qrxoayj.fsf@gmail.com> <8734i5o6wc.fsf@gmail.com> <87cyh9mpn5.fsf@gmail.com> <874j2l1hei.fsf@protonmail.com> <874j2lmd37.fsf@gmail.com> <87msgdkt29.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5893"; mail-complaints-to="usenet@ciao.gmane.io" Cc: gerd.moellmann@gmail.com, pipcet@protonmail.com, spd@toadstyle.org, emacs-devel@gnu.org To: Helmut Eller Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Dec 30 18:50:28 2024 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 1tSJuN-0001Nd-R5 for ged-emacs-devel@m.gmane-mx.org; Mon, 30 Dec 2024 18:50:27 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tSJtj-0002dj-RU; Mon, 30 Dec 2024 12:49:47 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tSJti-0002dZ-9O for emacs-devel@gnu.org; Mon, 30 Dec 2024 12:49:46 -0500 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tSJth-0007vq-Im; Mon, 30 Dec 2024 12:49:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=Bx1/JQgKMl44c34QFwgCrDcUFP8dhFahJeNseHfnwNI=; b=UQqQa+C5l/D25cuVWTPc iUg47CVbOraEDuHYnqWIKWkOYKAeuS5k69xqvDOCeXU5ESNZNdOJJiQSUqXMk4d2gCHtqdZqxKTiQ CXiFt9lg6+YHGWlPxMbjid+iWxunV6aiH+xfu8e70GCJlAc16wFFD3zf92XyWuvw1fFNIdlJ+TClU vkPf13gVhX+4FE0pPEQV1WcfqR/C0Q0uPuK0ycNV87b/BjCYkjBJ9gokETDsL3T3XHNF0fYK7Lc7t NoCIjbUzbd6ek/FlUgp3V/1vO5wL56U/fWlnYZ6ZsAC0+KGNhbLb1SsNyQsaxz0UGhYu1LGvziDXP Egm0j82nDF4u2g==; In-Reply-To: <87msgdkt29.fsf@gmail.com> (message from Helmut Eller on Mon, 30 Dec 2024 17:57:02 +0100) 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:327456 Archived-At: > From: Helmut Eller > Cc: Pip Cet , Eli Zaretskii , > spd@toadstyle.org, emacs-devel@gnu.org > Date: Mon, 30 Dec 2024 17:57:02 +0100 > > On Mon, Dec 30 2024, Gerd Möllmann wrote: > > > Bool (LockIsHeld)(Lock lock) > > { > > AVERT(Lock, lock); > > if (pthread_mutex_trylock(&lock->mut) == 0) { > > Bool claimed = lock->claims > 0; > > int res = pthread_mutex_unlock(&lock->mut); > > AVER(res == 0); > > return claimed; > > } > > return TRUE; > > } > > > > There might be a small window after pthread_mutex_trylock and being back > > in the signal handler. Can anything happen in this window? > > > > If no other Emacs threads are running, and the Emacs thread is in the > > signal handler, we can trust the "false" from the mps_arena_busy. > > Theoretically, a signal handler could interrupt the Emacs thread and > lock the mutex without unlocking it. That would be a very unusual > signal handler. I hope no other surprises happen in signal handlers. We should keep our signal handlers very simple and safe, that's true. It is not very hard, and much of that work was already done, when we stopped running complex stuff in SIGIO handler etc.