From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 16 12:16:29 2023 Received: (at submit) by debbugs.gnu.org; 16 Jul 2023 16:16:29 +0000 Received: from localhost ([127.0.0.1]:48435 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qL4Q9-0000K5-D3 for submit@debbugs.gnu.org; Sun, 16 Jul 2023 12:16:29 -0400 Received: from lists.gnu.org ([2001:470:142::17]:57044) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qL4Q7-0000Jr-5D for submit@debbugs.gnu.org; Sun, 16 Jul 2023 12:16:28 -0400 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 1qL4Q0-0001rl-Gd for bug-guile@gnu.org; Sun, 16 Jul 2023 12:16:20 -0400 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 1qL4Q0-0004uM-8o for bug-guile@gnu.org; Sun, 16 Jul 2023 12:16:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to: references; bh=nqqE9/w9gtgFGK7wWwvwCujY+j9f+MiQYMw7HuUA/08=; b=AhnFpxS36l3Xd6 iClG/NX2/GutEQjazP/pvItBGBnyBJtWW3RQhWcspNJ3qnUtgrf8xUV4JqrKPEdsPH7ydnMaTpPwC 3Z07Kav5toaaN4tu0itXQWk/qWErSmrgNwRR1PXA3LQ1maDtUUBNt+b8Snigs88xaPJxOde4wC3nd kMm5A3e/h6amtUiTqtNaR1mwTLaMH1I4IEeKbpKUMUcjBb0EHlkZtJQRBUweLQOaziWH47BpaIFm7 o3s+j162wx0K9ZJAqDslP5yzBX+j5B87+d6BCG0WageE4GutyCQS5W/bhUKbk1OPgSN7qdXfmFsbI p583sp4ynOdcixta5fnQ==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201] helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qL4Pz-0001NY-L2 for bug-guile@gnu.org; Sun, 16 Jul 2023 12:16:19 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: bug-guile@gnu.org Subject: Nested =?utf-8?Q?=E2=80=98scm=5Fsigaction=5Ffor=5Fthread=E2=80=99?= calls lead to deadlock X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: Octidi 28 Messidor an 231 de la =?utf-8?Q?R=C3=A9vol?= =?utf-8?Q?ution=2C?= jour de la Vesce X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Sun, 16 Jul 2023 18:16:17 +0200 Message-ID: <87pm4rsuge.fsf@inria.fr> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, It=E2=80=99s possible for =E2=80=98sigaction=E2=80=99 (aka. =E2=80=98scm_si= gaction_for_thread=E2=80=99) to run asyncs, which in turn call =E2=80=98scm_sigaction_for_thread=E2=80=99 for t= he very same thread, leading to a deadlock: --8<---------------cut here---------------start------------->8--- (gdb) bt #0 0x00007f823bcdf32b in __lll_lock_wait () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6 #1 0x00007f823bce5572 in pthread_mutex_lock@@GLIBC_2.2.5 () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6 #2 0x00007f823c278e45 in scm_pthread_mutex_lock (mutex=3D) at /home/ludo/src/guile-3.0/libguile/threads.c:1616 #3 0x00007f823c27cc79 in scm_dynwind_pthread_mutex_lock ( mutex=3D0x7f823c2fa240 ) at /home/ludo/src/guile-3.0/libguile/threads.c:1629 #4 0x00007f823c25d254 in scm_sigaction_for_thread (signum=3D,=20 handler=3D0x7f8239940258, flags=3D0x904, thread=3D0x7f823ba38320) at /home/ludo/src/guile-3.0/libguile/scmsigs.c:339 #5 0x00007f823990f257 in ?? () #6 0x0000000001918f38 in ?? () #7 0x00007f8239910b50 in ?? () #8 0x00007f823ba1ad80 in ?? () #9 0x00007f823c22556c in scm_jit_enter_mcode (thread=3D0x7f823ba1ad80,=20 mcode=3D0x191f55c "\034\r\002") at /home/ludo/src/guile-3.0/libguile/ji= t.c:6061 #10 0x00007f823c2812c5 in vm_regular_engine (thread=3D0x7f823c330d68) at /home/ludo/src/guile-3.0/libguile/vm-engine.c:360 #11 0x00007f823c28af95 in scm_call_n (proc=3D, argv=3D, nargs=3D0) at /home/ludo/src/guile-3.0/libguile/vm.c:1616 #12 0x00007f823c1f25a0 in scm_async_tick () at /home/ludo/src/guile-3.0/lib= guile/async.c:154 #13 0x00007f823c1f8545 in scm_dynstack_unwind_frame (dynstack=3D0x7f823ba1a= f88) at /home/ludo/src/guile-3.0/libguile/dynstack.c:628 #14 scm_dynwind_end () at /home/ludo/src/guile-3.0/libguile/dynwind.c:71 #15 0x00007f823c25d478 in scm_sigaction_for_thread (signum=3D,=20 handler=3D0x7f8239940258, flags=3D, thread=3D0x7f823ba38= 320) at /home/ludo/src/guile-3.0/libguile/scmsigs.c:447 --8<---------------cut here---------------end--------------->8--- Notice the nested =E2=80=98scm_sigaction_for_thread=E2=80=99 call for 0x7f8= 23ba38320. This happens while letting the code below run for a minute or so: --8<---------------cut here---------------start------------->8--- (use-modules (ice-9 match)) (setvbuf (current-output-port) 'line) (match (primitive-fork) (0 (format #t "child: ~a~%" (getpid)) (letrec ((handler (lambda args (pk 'SIGUSR1! args) (sigaction SIGUSR1 handler)))) (sigaction SIGUSR1 handler)) (let loop () (pk 'slept (sleep 100000)) (loop))) (pid (sleep 1) (let loop () (usleep 10000) (kill pid SIGUSR1) (loop)))) --8<---------------cut here---------------end--------------->8--- Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 16 16:07:05 2023 Received: (at 64666-done) by debbugs.gnu.org; 16 Jul 2023 20:07:05 +0000 Received: from localhost ([127.0.0.1]:48621 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qL81I-0003C9-Qo for submit@debbugs.gnu.org; Sun, 16 Jul 2023 16:07:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50042) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qL81E-0003BJ-Gf for 64666-done@debbugs.gnu.org; Sun, 16 Jul 2023 16:07:01 -0400 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 1qL819-0003E6-7z for 64666-done@debbugs.gnu.org; Sun, 16 Jul 2023 16:06:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=uI4OUTws2pX84RvS/5snDMTD32Ecf9A0f9p82nq44C4=; b=IfVsMxM8GAVgRcReS4Q+ XvaNm+1cFJPkgug8cFu9sXJnCmBgSvQj96BZ82Ph03M8zmic38GMBN5N+8R/wiv8uWDJPw9LqitF6 Rpt4LkQjRzTjOcPKLHlNSfDAbTVRux1nV3bnUxwSmGEeci6Kh7S3bRK3BdCXShpfDj2COwLowi7Z6 ZFA3D5Inlu/6sx8RG4m1WUZ/Ae2Y6XPzLgqTyRlRmRxA5Sj5FaMAIhzgK4brK8NcSeptcUzuoyO1K NiHEwA3aZXshsmWbFLxQy304dxPgBtteu/aQafPD2v2GeTHdHbB++nKVfJUz0fHeM45oTFwZ1PvTM vK5xsPUyGwoCtg==; Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qL817-0000uK-R9 for 64666-done@debbugs.gnu.org; Sun, 16 Jul 2023 16:06:54 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: 64666-done@debbugs.gnu.org Subject: Re: bug#64666: Nested =?utf-8?Q?=E2=80=98scm=5Fsigaction=5Ffor=5F?= =?utf-8?Q?thread=E2=80=99?= calls lead to deadlock References: <87pm4rsuge.fsf@inria.fr> Date: Sun, 16 Jul 2023 22:06:51 +0200 In-Reply-To: <87pm4rsuge.fsf@inria.fr> ("Ludovic =?utf-8?Q?Court=C3=A8s=22?= =?utf-8?Q?'s?= message of "Sun, 16 Jul 2023 18:16:17 +0200") Message-ID: <871qh7sjs4.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 64666-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ludovic Court=C3=A8s skribis: > It=E2=80=99s possible for =E2=80=98sigaction=E2=80=99 (aka. =E2=80=98scm_= sigaction_for_thread=E2=80=99) to run > asyncs, which in turn call =E2=80=98scm_sigaction_for_thread=E2=80=99 for= the very same > thread, leading to a deadlock: Fixed in 85520354a8f5de0366c4ac3eb5403aeb27c9515e. Ludo=E2=80=99. From unknown Thu Aug 14 21:53:52 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 14 Aug 2023 11:24:07 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator