Received: (at 32367) by debbugs.gnu.org; 15 Dec 2018 17:51:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 15 12:51:46 2018 Received: from localhost ([127.0.0.1]:49581 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gYE6L-0003bh-PY for submit <at> debbugs.gnu.org; Sat, 15 Dec 2018 12:51:45 -0500 Received: from world.peace.net ([64.112.178.59]:57100) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mhw@HIDDEN>) id 1gYE6J-0003bR-DG for 32367 <at> debbugs.gnu.org; Sat, 15 Dec 2018 12:51:43 -0500 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <mhw@HIDDEN>) id 1gYE6C-0000m5-US; Sat, 15 Dec 2018 12:51:37 -0500 From: Mark H Weaver <mhw@HIDDEN> To: Matt Wette <matt.wette@HIDDEN> Subject: Re: bug#32367: sigaction hangs References: <8f96e55a-db92-c150-8336-f751ce3c6b7d@HIDDEN> <e6855271-904a-9f75-87f6-a4448796df32@HIDDEN> Date: Sat, 15 Dec 2018 12:50:37 -0500 In-Reply-To: <e6855271-904a-9f75-87f6-a4448796df32@HIDDEN> (Matt Wette's message of "Sat, 15 Dec 2018 08:58:51 -0800") Message-ID: <87pnu2adbr.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (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: 32367 Cc: 32367 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Hi Matt, Matt Wette <matt.wette@HIDDEN> writes: > On 12/15/18 8:46 AM, Matt Wette wrote: >> -s seems to end up using load-in-vicinity: I can re-create this way: >> >> mwette$ guile -L `pwd` -c '(load-in-vicinity (getcwd) "foo.scm")' >> ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=3D0 >> ;;;=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 or pass the --no-auto-compile ar= gument to disable. >> ;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm >> setting SIGCHILD to SIG_DFL... >> ^C >> > > And using `-l' to load scsh.scm fixes the problem: > > mwette$ guile -L `pwd` -l scsh.scm -c '(load-in-vicinity (getcwd) > "foo.scm")'setting SIGCHILD to SIG_DFL... > setting SIGCHILD to SIG_DFL...done > ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=3D0 > ;;;=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 or pass the --no-auto-compile arg= ument to disable. > ;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm > ;;; compiled > /home/mwette/.cache/guile/ccache/2.2-LE-8-3.A/home/mwette/proj/guile/bugs= -guile/32367/foo.scm.go > mwette $ > > An update from 2.2.3 to 2.2.4 adds call-with-module-autoload-lock > which places a > mutex around autoload.=C2=A0 This looks like one place to start > digging. See ice-9/threads.scm: > > (set! (@ (guile) call-with-module-autoload-lock) > =C2=A0 (let ((mutex (make-mutex 'recursive))) > =C2=A0=C2=A0=C2=A0 (lambda (thunk) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (with-mutex mutex > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (thunk))))) It looks like you might have missed some of the messages in this bug report. See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D32367#11> and later comments. Regards, Mark
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 15 Dec 2018 16:59:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 15 11:59:01 2018 Received: from localhost ([127.0.0.1]:49559 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gYDHI-00022R-UH for submit <at> debbugs.gnu.org; Sat, 15 Dec 2018 11:59:01 -0500 Received: from mail-pg1-f177.google.com ([209.85.215.177]:38091) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <matt.wette@HIDDEN>) id 1gYDHH-00022D-Hd for 32367 <at> debbugs.gnu.org; Sat, 15 Dec 2018 11:58:59 -0500 Received: by mail-pg1-f177.google.com with SMTP id g189so4129888pgc.5 for <32367 <at> debbugs.gnu.org>; Sat, 15 Dec 2018 08:58:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=6aYYEShbjt+kme311ZE1TbPS8zwdoKNSc5hS6viqP/w=; b=SYoAMGL99EBKmWltsK4CvjlOisoDfnnqZqvULeDXh1drbqK6dsHiZWSUMRPK2yuVcG hM+uNapgyfRV0H9sZWBBL+CMVfWuX9wCHSnBW+YmJSdDpu2eXbvfPKZaKqgvP/WS7wqf 8N7N6LAP0PnDpRUR+/d7exePa/A1mH60iFqo/VnhID1N5Qmu0o0KhWWYRELHBe9aaM4S cAZ9p4aLzDcf4fw2mC4ud+0n+BhYmXRRccLXjeTz86Dwx5V2nOKGkyWoFY/elLoz1xgZ hVqWJBnYYQ9LHkMt+AxngyXlrnzKHEO0crEyZ22l+jaUviiF/BUf/KJhNomeKLlLds9t M3yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=6aYYEShbjt+kme311ZE1TbPS8zwdoKNSc5hS6viqP/w=; b=Rumlcc/CRslca93SAuh79mWzAJaAvzyJbn8oaYNGf6oL2S0URnzutCUeGWOg3/8SNU NZPcgNSlUyd8JsMheQW2Sn5cpAF95zN9eVWLLImi9AWIk7J/Jyoo0Z3Fk31D010f95Gy EdWLrAI+ox8XKJJQuy8pBWkqgVp+GsXUJ41wdHRQscBvqNy1JLqkuPKE7W9XmZvZqRJO Ab7WSU17RaSRr5hPJswSRfTCliKMgH9Wl8VJHoziqfqJ5iaMOdYU71aBXEiPWaBMiFiV Nwiqw0/KpHw7AQ2w12JBS/n5glIb9xa/7hYQav7VuMj61c2EZ/I9LG70HsPXnyZEqlS1 CQlg== X-Gm-Message-State: AA+aEWapidD3xSsnSNO11M/Kxp734IkkLCeviDHF28PV6mzOAQPZ6SNm KijeYv19JsBVG56C49n9/X/ymNMU X-Google-Smtp-Source: AFSGD/UKHkjuDLYNDAyaBITZKwiih+8v1O04aFJcx0jVMUdQVu5qoJYXmIIKkDlRriOGbkmxxz66OA== X-Received: by 2002:a63:ac1a:: with SMTP id v26mr6714585pge.293.1544893133191; Sat, 15 Dec 2018 08:58:53 -0800 (PST) Received: from [192.168.2.183] (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id w128sm10990110pfw.79.2018.12.15.08.58.52 for <32367 <at> debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 15 Dec 2018 08:58:52 -0800 (PST) Subject: Re: sigaction hangs From: Matt Wette <matt.wette@HIDDEN> To: 32367 <at> debbugs.gnu.org References: <8f96e55a-db92-c150-8336-f751ce3c6b7d@HIDDEN> Message-ID: <e6855271-904a-9f75-87f6-a4448796df32@HIDDEN> Date: Sat, 15 Dec 2018 08:58:51 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <8f96e55a-db92-c150-8336-f751ce3c6b7d@HIDDEN> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32367 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 12/15/18 8:46 AM, Matt Wette wrote: > -s seems to end up using load-in-vicinity: I can re-create this way: > > mwette$ guile -L `pwd` -c '(load-in-vicinity (getcwd) "foo.scm")' > ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 > ;;; or pass the --no-auto-compile argument to disable. > ;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm > setting SIGCHILD to SIG_DFL... > ^C > And using `-l' to load scsh.scm fixes the problem: mwette$ guile -L `pwd` -l scsh.scm -c '(load-in-vicinity (getcwd) "foo.scm")'setting SIGCHILD to SIG_DFL... setting SIGCHILD to SIG_DFL...done ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm ;;; compiled /home/mwette/.cache/guile/ccache/2.2-LE-8-3.A/home/mwette/proj/guile/bugs-guile/32367/foo.scm.go mwette $ An update from 2.2.3 to 2.2.4 adds call-with-module-autoload-lock which places a mutex around autoload. This looks like one place to start digging. See ice-9/threads.scm: (set! (@ (guile) call-with-module-autoload-lock) (let ((mutex (make-mutex 'recursive))) (lambda (thunk) (with-mutex mutex (thunk)))))
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 15 Dec 2018 16:46:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 15 11:46:28 2018 Received: from localhost ([127.0.0.1]:49551 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gYD5A-0001kg-Dc for submit <at> debbugs.gnu.org; Sat, 15 Dec 2018 11:46:28 -0500 Received: from mail-pg1-f174.google.com ([209.85.215.174]:34136) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <matt.wette@HIDDEN>) id 1gYD58-0001kR-5h for 32367 <at> debbugs.gnu.org; Sat, 15 Dec 2018 11:46:27 -0500 Received: by mail-pg1-f174.google.com with SMTP id j10so2912841pga.1 for <32367 <at> debbugs.gnu.org>; Sat, 15 Dec 2018 08:46:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding:content-language; bh=Z+p6RoHl8IWORCv9WNm8BTf4nmY8QYfMJyHpetqRv3Y=; b=uqgQSzwSDpSIXRdkDSOBrQDP9BmVYnIBSlV+EHw28YSNfb1i47qDPPcJQsqH2ZkLco DCAJYu1+ksf4IoLvFgV4RCa+6XTg6C75ZKxrsP75cnynbf1bZ93bz8NxeL+4gfFphH6y kZh6peKvcdp4sEYKBZ2Ia6GJRH7Uamx42zOTo8ylrX/tg217Sdpn+LcZepMVIzuMTA+d 8G+ar45Ie+nW65GT96Xy7Ok0nkJwHk7wmMRoor4tfmbLXDwdn4GBFeLEZaXTOXGIHUFm AooHPJ4KKKdj/FH+nlyIy5n70VCA9VKqgJ8/qhqMpTkaBpDMjIRGmHl4bjYl0bhe5R7N +a4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding:content-language; bh=Z+p6RoHl8IWORCv9WNm8BTf4nmY8QYfMJyHpetqRv3Y=; b=pgz5KCOW3CmZ3kMopBcwgav+aPMJyrr9xn4vlvGhqPdIDKfnWg9gD+Quyir+UCidI2 IWhHWILUPfsbY2vC/0IoeeWWHwmYPMuDPmCl2ek8cN7aMsN9GvDvL6fYc0SJMtDqN1a3 NbwvazmYRE0kT/XEXPYxXOH07jz2WxIaoPnfZvvatieK/irHR17ZjM7+ihmnKNvIBXjq QqSgYfghE90jEsIaEi9yAcval+/X4f8FqzGZTqeebJdZplerzM43iqRCpKXfqHBG+OPT EwZFdhJt+VF6wiG4ISnwWfyzwKEd6e/idKBfOnST8JQkEQnpm6k5ZhxN22mS+QSY+8lO jmDw== X-Gm-Message-State: AA+aEWb3+msz1HDfLutk3bTdSj4NjXB1no5SDW0K3vIQ4YRVUjwLiISd 4KclRcMzCfdVt2Omkr/IJynY/4On X-Google-Smtp-Source: AFSGD/UtIqsyB7FPNAkIkPJ1WzycMaIt1Egbhek9px3gpRNLXwBULodxFNp41ESBwxcw+gEdRrIgeg== X-Received: by 2002:a63:f412:: with SMTP id g18mr3400300pgi.262.1544892379726; Sat, 15 Dec 2018 08:46:19 -0800 (PST) Received: from [192.168.2.183] (216-165-229-229.championbroadband.com. [216.165.229.229]) by smtp.gmail.com with ESMTPSA id k38sm13014788pgb.33.2018.12.15.08.46.18 for <32367 <at> debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 15 Dec 2018 08:46:19 -0800 (PST) To: 32367 <at> debbugs.gnu.org From: Matt Wette <matt.wette@HIDDEN> Subject: sigaction hangs Message-ID: <8f96e55a-db92-c150-8336-f751ce3c6b7d@HIDDEN> Date: Sat, 15 Dec 2018 08:46:18 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32367 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) -s seems to end up using load-in-vicinity: I can re-create this way: mwette$ guile -L `pwd` -c '(load-in-vicinity (getcwd) "foo.scm")' ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/mwette/proj/guile/bugs-guile/32367/foo.scm setting SIGCHILD to SIG_DFL... ^C
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 27 Oct 2018 14:16:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 27 10:16:49 2018 Received: from localhost ([127.0.0.1]:45552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gGPOS-0001yr-Rb for submit <at> debbugs.gnu.org; Sat, 27 Oct 2018 10:16:49 -0400 Received: from mx-ob1.avvanta.com ([206.124.134.83]:49774) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <sand@HIDDEN>) id 1gGPOQ-0001yh-Rn for 32367 <at> debbugs.gnu.org; Sat, 27 Oct 2018 10:16:47 -0400 Received: from mail.avvanta.com (smtp61.avvanta.com [206.124.128.61]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx-ob1.avvanta.com (Postfix) with ESMTPS id E3A97C0ACC19; Sat, 27 Oct 2018 07:12:17 -0700 (PDT) Received: from mail.avvanta.com (localhost.drteeth.p.blarg.net [127.0.0.1]) by mail.avvanta.com (Postfix) with ESMTP id 1B904F3936; Sat, 27 Oct 2018 07:16:44 -0700 (PDT) Received: from priss.frightenedpiglet.com (c-73-83-45-232.hsd1.wa.comcast.net [73.83.45.232]) by mail.avvanta.com (Postfix) with ESMTP id 048DDF3935; Sat, 27 Oct 2018 07:16:44 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=priss.frightenedpiglet.com) by priss.frightenedpiglet.com with esmtp (Exim 4.91) (envelope-from <sand@HIDDEN>) id 1gGPOO-0004Ws-Qq; Sat, 27 Oct 2018 07:16:44 -0700 References: <87pnyx4p2q.fsf@HIDDEN> <877el36crs.fsf@HIDDEN> <87woqbyw5a.fsf@HIDDEN> User-agent: mu4e 0.9.17; emacs 27.0.50 From: Derek Upham <sand@HIDDEN> To: Mark H Weaver <mhw@HIDDEN> Subject: Re: bug#32367: 2.2.4 hangs when a script uses a module that calls sigaction In-reply-to: <87woqbyw5a.fsf@HIDDEN> Date: Sat, 27 Oct 2018 07:16:44 -0700 Message-ID: <878t2jpj8z.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BlargAV-Status: No viruses detected, BlargAV v1.1 on localhost.drteeth.p.blarg.net X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 32367 Cc: 32367 <at> debbugs.gnu.org, =?utf-8?Q?G=C3=B6ran?= Weinholt <goran@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) I=E2=80=99m not having luck with the patch. Current commit is bbe6daa76 (s= table-2.2). Running ./autogen.sh && ./configure --prefix=3D$HOME/guile-2.2 PKG_CONFIG_PATH=3D= /usr/local/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share= /pkgconfig && make clean all install builds clean and I can repro the problem with $HOME/guile-2.2/bin/guile -s ../signal-test The patch applies cleanly, but then the same build commands fail: GUILEC sxml/apply-templates.go Backtrace: In ice-9/boot-9.scm: 222:17 19 (map1 (((sxml ssax)) ((sxml xpath) #:hide (filter)))) 2958:17 18 (resolve-interface (sxml ssax) #:select _ #:hide _ #:prefix = _ #:renamer _ #:version _) In ice-9/threads.scm: 390:8 17 (_ _) In ice-9/boot-9.scm: 2881:28 16 (_ #<mutex 559a33ee4f80>) In ice-9/threads.scm: 390:8 15 (_ _) In ice-9/boot-9.scm: 3171:20 14 (_ #<mutex 559a33ee4f80>) 2312:4 13 (save-module-excursion #<procedure 559a3417a360 at ice-9/boo= t-9.scm:3172:21 ()>) 3191:26 12 (_) In unknown file: 11 (primitive-load-path "sxml/ssax" #<procedure 559a33dc3c60 at= ice-9/boot-9.scm:3178:37 ()>) In ice-9/eval.scm: 721:20 10 (primitive-eval (define-module (sxml ssax) #:use-module (sxm= l ssax input-parse) #:use-module (srfi srfi-1) #:use-module (srfi srfi-13) = #:export (# # # # # # ?))) In ice-9/psyntax.scm: 1235:36 9 (expand-top-sequence ((define-module (sxml ssax) #:use-modul= e (sxml ssax input-parse) #:use-module (srfi srfi-1) #:use-module (srfi srf= i-13) #:export (# # ?))) _ ?) 1182:24 8 (parse _ (("placeholder" placeholder)) ((top) #(ribcage () (= ) ())) _ e (eval) (hygiene #{ g95}#)) 285:10 7 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) (hy= giene #{ g95}#)) In ice-9/eval.scm: 293:34 6 (_ #<module (#{ g95}#) 559a34125000>) In ice-9/boot-9.scm: 3032:4 5 (define-module* _ #:filename _ #:pure _ #:version _ #:import= s _ #:exports _ #:replacements _ #:re-exports _ #:autoloads _ #:duplicates = _ #:transformer _) 3045:24 4 (_) 222:17 3 (map1 (((sxml ssax input-parse)) ((srfi srfi-1)) ((srfi srfi= -13)))) 2961:6 2 (resolve-interface _ #:select _ #:hide _ #:prefix _ #:rename= r _ #:version _) In unknown file: 1 (scm-error misc-error #f "~A ~S" ("no code for module" (sxml= ssax input-parse)) #f) In ice-9/boot-9.scm: 752:25 0 (dispatch-exception _ _ _) ice-9/boot-9.scm:752:25: In procedure dispatch-exception: no code for module (sxml ssax input-parse) Mark H Weaver <mhw@HIDDEN> writes: > I've attached a preliminary patch to fix this bug. > > Mark --=20 Derek Upham sand@HIDDEN
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 21 Oct 2018 18:48:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 21 14:48:08 2018 Received: from localhost ([127.0.0.1]:34569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gEIli-0003X5-R2 for submit <at> debbugs.gnu.org; Sun, 21 Oct 2018 14:48:07 -0400 Received: from world.peace.net ([64.112.178.59]:56940) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mhw@HIDDEN>) id 1gEIlh-0003WX-2C for 32367 <at> debbugs.gnu.org; Sun, 21 Oct 2018 14:48:05 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <mhw@HIDDEN>) id 1gEIlU-0000bv-Dw; Sun, 21 Oct 2018 14:47:58 -0400 From: Mark H Weaver <mhw@HIDDEN> To: =?utf-8?Q?G=C3=B6ran?= Weinholt <goran@HIDDEN> Subject: Re: bug#32367: 2.2.4 hangs when a script uses a module that calls sigaction References: <87pnyx4p2q.fsf@HIDDEN> <877el36crs.fsf@HIDDEN> Date: Sun, 21 Oct 2018 14:47:29 -0400 In-Reply-To: <877el36crs.fsf@HIDDEN> (=?utf-8?Q?=22G=C3=B6ran?= Weinholt"'s message of "Mon, 06 Aug 2018 11:54:31 +0200") Message-ID: <87woqbyw5a.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32367 Cc: 32367 <at> debbugs.gnu.org, Derek Upham <sand@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain I've attached a preliminary patch to fix this bug. Mark --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-DRAFT-Fix-thread-safe-module-loading.patch Content-Description: [PATCH] DRAFT: Fix thread-safe module loading From 897a6f76280612e83f48d63430bf962520c0e7b3 Mon Sep 17 00:00:00 2001 From: Mark H Weaver <mhw@HIDDEN> Date: Sun, 21 Oct 2018 09:56:16 -0400 Subject: [PATCH] DRAFT: Fix thread-safe module loading. * module/ice-9/boot-9.scm (%modules-being-loaded) (%local-modules-being-loaded, %modules-waiting-for): New variables. (%force-lazy-module-cell!, %module-waiting-for?) (%module-waiting-for!): New procedures. (resolve-module): If the requested module is not in the regular global module table, look in '%local-modules-being-loaded' and '%modules-being-loaded', and handle these cases appropriately. Support looping without recursively locking the autoload lock. When autoloading, unlock the mutex before calling 'try-load-module'. (try-module-autoload): Add entries to '%modules-being-loaded' and '%local-modules-being-loaded' before loading the module. Also, load the module with the autoload mutex unlocked. When the load attempt finishes (or fails), add the module to the regular global module table if it was ever created, signal the threads waiting for this module, and remove it from the '*-begin-loaded' and '%modules-waiting-for' tables. (call-with-module-autoload-lock): Accept a unary procedure instead of a thunk. (module-name): Adapt to the new 'call-with-module-autoload-lock'. (nested-define-module!): If we're asked to define a submodule of a module that's currently being loaded, install the parent module being loaded into the global module table. * module/ice-9/threads.scm (call-with-module-autoload-lock): Pass the mutex as an argument to the procedure. * test-suite/tests/threads.test: Add tests. * test-suite/tests/delayed-test.scm, test-suite/tests/mutual-delayed-a.scm, test-suite/tests/mutual-delayed-b.scm, test-suite/tests/mutual-delayed-c.scm: New files. * test-suite/Makefile.am (EXTRA_DIST): Add them. --- module/ice-9/boot-9.scm | 292 ++++++++++++++++++++++---- module/ice-9/threads.scm | 4 +- test-suite/Makefile.am | 7 +- test-suite/tests/delayed-test.scm | 28 +++ test-suite/tests/mutual-delayed-a.scm | 29 +++ test-suite/tests/mutual-delayed-b.scm | 29 +++ test-suite/tests/mutual-delayed-c.scm | 29 +++ test-suite/tests/threads.test | 66 +++++- 8 files changed, 435 insertions(+), 49 deletions(-) create mode 100644 test-suite/tests/delayed-test.scm create mode 100644 test-suite/tests/mutual-delayed-a.scm create mode 100644 test-suite/tests/mutual-delayed-b.scm create mode 100644 test-suite/tests/mutual-delayed-c.scm diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index d8801dada..404a19d49 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -2502,13 +2502,32 @@ interfaces are added to the inports list." (tail (cdr names))) (if (null? tail) (module-define-submodule! cur head module) - (let ((cur (or (module-ref-submodule cur head) - (let ((m (make-module 31))) - (set-module-kind! m 'directory) - (set-module-name! m (append (module-name cur) - (list head))) - (module-define-submodule! cur head m) - m)))) + (let ((cur + (or (module-ref-submodule cur head) + (let ((dir-name (append (module-name cur) + (list head)))) + (cond ((assoc dir-name %modules-being-loaded) + => (lambda (entry) + ;; The module we're being asked to define + ;; is a submodule of a module that's + ;; currently being loaded. In this case, + ;; we must install the parent module + ;; being loaded into the global module + ;; table. This is unfortunate, but it's + ;; not clear how to avoid this without + ;; changing the structure of the global + ;; module table. + (let ((m (%force-lazy-module-cell! + (cddr entry) + dir-name))) + (module-define-submodule! cur head m) + m))) + (else + (let ((m (make-module 31))) + (set-module-kind! m 'directory) + (set-module-name! m dir-name) + (module-define-submodule! cur head m) + m))))))) (loop cur (car tail) (cdr tail))))))) @@ -2607,13 +2626,13 @@ interfaces are added to the inports list." -(define (call-with-module-autoload-lock thunk) - ;; This binding is overridden when (ice-9 threads) is available to - ;; implement a critical section around the call to THUNK. It must be - ;; used anytime 'autoloads-done' and related variables are accessed - ;; and whenever submodules are accessed (via the 'nested-' - ;; procedures.) - (thunk)) +(define (call-with-module-autoload-lock proc) + ;; Apply PROC to the autoload lock or #f, while holding the lock. + ;; This must be used anytime 'autoloads-done' and related variables + ;; are accessed and whenever submodules are accessed (e.g. via the + ;; 'nested-' procedures.) This is initially a stub, but it will be + ;; overwritten when (ice-9 threads) is loaded. + (proc #f)) ;; Now that modules are booted, give module-name its final definition. ;; @@ -2627,7 +2646,7 @@ interfaces are added to the inports list." ;; names and relies on being able to `resolve-module' them. (set-module-name! mod name) (call-with-module-autoload-lock - (lambda () + (lambda (mutex) (nested-define-module! (resolve-module '() #f) name mod))) (accessor mod)))))) @@ -2701,36 +2720,175 @@ deterministic." (beautify-user-module! m) m)) +;; '%modules-being-loaded' is a global table of modules currently +;; being loaded. Its entries are of the form: +;; +;; (NAME COND-VAR . LAZY-MODULE-CELL) +;; +;; where COND-VAR is a condition variable that will signaled when the +;; current module load attempt succeeds (or fails), and LAZY-MODULE-CELL +;; is a singleton list whose element is either a module or #f. It +;; should only be accessed from within 'call-with-module-autoload-lock'. +;; +;; The modules in '%modules-being-loaded' are normally not added to the +;; regular global module table until they have finished loading. The +;; idea is that other threads should not be able to see the partially +;; loaded module. If another thread tries to load the partially loaded +;; module, it will normally wait on COND-VAR until the module has +;; finished loading (or the load attempt fails). However, there are two +;; cases when a thread is given access to a partially loaded module: (1) +;; when the partially loaded module is in its +;; '%local-modules-being-loaded' list, and (2) when a non-trivial cycle +;; would be introduced in the reflexive and transitive closure of the +;; global %modules-waiting-for relation. +(define %modules-being-loaded + '()) + +;; The entries in (fluid-ref %local-modules-being-loaded) are of +;; the form: +;; +;; (NAME . LAZY-MODULE-CELL) +;; +;; where LAZY-MODULE-CELL is a singleton list whose element is +;; either a module or #f. It should only be accessed from within +;; 'call-with-module-autoload-lock'. +;; +;; Modules listed in (fluid-ref %local-modules-being-loaded) are visible +;; to the local thread, even if they are not present in the regular +;; global module table. +(define %local-modules-being-loaded + (make-fluid '())) + +(define (%force-lazy-module-cell! cell name) + (or (car cell) ; the module already exists; return it + ;; otherwise, create a fresh new module, store it in the + ;; lazy-module-cell, and return it. + (let ((m (make-module 31))) + (set-module-name! m name) + (set-car! cell m) + m))) + +;; The '%modules-waiting-for' relation is a partial order on +;; the modules present in the '%modules-being-loaded' table. +;; Its entries are of the form: +;; +;; (NAME-1 . NAME-2) +;; +;; '%modules-waiting-for' is used to prevent deadlocks that would +;; otherwise occur when mutually dependent modules are loaded +;; concurrently. It should only be accessed from within +;; 'call-with-module-autoload-lock'. +(define %modules-waiting-for + '()) + +;; Return #t if (NAME-1 NAME-2) is in the reflexive and transitive +;; closure of '%modules-waiting-for'. This procedure should only be +;; called from within 'call-with-module-autoload-lock'. +(define (%module-waiting-for? name-1 name-2) + (or (equal? name-1 name-2) + (cond ((assoc name-1 %modules-waiting-for) + => (lambda (entry) + (%module-waiting-for? (cdr entry) name-2))) + (else #f)))) + +;; Add (NAME-1 NAME-2) to the '%modules-waiting-for' relation if it's +;; not already in the reflexive and transitive closure. Raise an error +;; if adding it would introduce a cycle. This procedure should only be +;; called from within 'call-with-module-autoload-lock'. +(define (%module-waiting-for! name-1 name-2) + (unless (%module-waiting-for? name-1 name-2) + (when (%module-waiting-for? name-2 name-1) + (error "%module-waiting-for!: would introduce a cycle" + (list name-1 name-2 %modules-waiting-for))) + (set! %modules-waiting-for + (cons (cons name-1 name-2) + %modules-waiting-for)))) + ;; NOTE: This binding is used in libguile/modules.c. ;; (define resolve-module - (let ((root (make-module))) + (let ((root (make-module)) + (ice-9-threads + (lambda (sym) + (module-ref (resolve-module '(ice-9 threads)) sym)))) + (set-module-name! root '()) ;; Define the-root-module as '(guile). (module-define-submodule! root 'guile the-root-module) (lambda* (name #:optional (autoload #t) (version #f) #:key (ensure #t)) (call-with-module-autoload-lock - (lambda () - (let ((already (nested-ref-module root name))) - (cond - ((and already - (or (not autoload) (module-public-interface already))) - ;; A hit, a palpable hit. - (if (and version - (not (version-matches? version (module-version already)))) + (lambda (mutex) + (let loop ((autoload autoload)) + ;; First check the global module table. + (let ((already (nested-ref-module root name))) + (cond + ((and already + (or (not autoload) (module-public-interface already))) + ;; A hit, a palpable hit. + (when (and version + (not (version-matches? version (module-version already)))) (error "incompatible module version already loaded" name)) - already) - (autoload - ;; Try to autoload the module, and recurse. - (try-load-module name version) - (resolve-module name #f #:ensure ensure)) - (else - ;; No module found (or if one was, it had no public interface), and - ;; we're not autoloading. Make an empty module if #:ensure is true. - (or already - (and ensure - (make-modules-in root name))))))))))) + already) + + ;; The module is not in the global module table. + ;; Check %local-modules-being-loaded. If there's a + ;; matching entry, return the associated module, + ;; forcing the lazy module cell if needed. + ((assoc name (fluid-ref %local-modules-being-loaded)) + => (lambda (entry) + (%force-lazy-module-cell! (cdr entry) name))) + + ;; Check the global '%modules-being-loaded' table. If + ;; there's a matching entry, add an entry to the + ;; '%modules-waiting-for' relation (checking to + ;; make sure we don't introduce a cycle), wait on the + ;; associated condition variable for the module to be + ;; loaded, and try again. + ((assoc name %modules-being-loaded) + => (lambda (entry) + (let ((cond-var (cadr entry)) + (lazy-module-cell (cddr entry)) + (local-modules (fluid-ref %local-modules-being-loaded))) + (if (or (not mutex) + (and (pair? local-modules) + ;; check for circular dependency below + (%module-waiting-for? name (caar local-modules)))) + ;; If (ice-9 threads) is not yet loaded, or + ;; if adding the new entry to + ;; '%module-waiting-for' would add a + ;; circular dependency, then punt and + ;; immediately return the partially-loaded + ;; module. + (%force-lazy-module-cell! lazy-module-cell name) + ;; Otherwise, add an entry to the + ;; '%modules-waiting-for' relation, wait on + ;; the associated condition variable for the + ;; module to be loaded, and try again. + (begin + (when (pair? local-modules) + (%module-waiting-for! (caar local-modules) name)) + ;; wait for the pending module load to finish. + ((ice-9-threads 'wait-condition-variable) cond-var mutex) + (loop #f)))))) ; and try again + + (autoload + ;; Here we try to autoload the module. Unlock the mutex + ;; while we call 'try-load-module'. + (dynamic-wind + (lambda () (when mutex + ((ice-9-threads 'unlock-mutex) mutex))) + (lambda () (try-load-module name version)) + (lambda () (when mutex + ((ice-9-threads 'lock-mutex) mutex)))) + ;; Now try again with autoload set to #f. + (loop #f)) + (else + ;; No module found (or if one was, it had no public interface), and + ;; we're not autoloading. Make an empty module if #:ensure is true. + (or already + (and ensure + (make-modules-in root name)))))))))))) (define (try-load-module name version) @@ -2973,6 +3131,8 @@ module '(ice-9 q) '(make-q q-length))}." "Try to load a module of the given name. If it is not found, return #f. Otherwise return #t. May raise an exception if a file is found, but it fails to load." + (define (ice-9-threads sym) + (module-ref (resolve-module '(ice-9 threads)) sym)) (let* ((reverse-name (reverse module-name)) (name (symbol->string (car reverse-name))) (dir-hint-module-name (reverse (cdr reverse-name))) @@ -2980,17 +3140,34 @@ but it fails to load." (map (lambda (elt) (string-append (symbol->string elt) file-name-separator-string)) - dir-hint-module-name)))) - (resolve-module dir-hint-module-name #f) + dir-hint-module-name))) + (parent-module (resolve-module dir-hint-module-name #f))) (call-with-module-autoload-lock - (lambda () + (lambda (mutex) (and (not (autoload-done-or-in-progress? dir-hint name)) - (let ((didit #f)) + (let ((lazy-module-cell (list #f)) + (cond-var (and mutex + ((ice-9-threads 'make-condition-variable)))) + (didit #f)) + + ;; Add an entry to the '%modules-being-loaded' table, + ;; with an associated condition variable to be signaled + ;; when the module is finished loading. + (set! %modules-being-loaded + (cons (cons* module-name cond-var lazy-module-cell) + %modules-being-loaded)) + (dynamic-wind - (lambda () (autoload-in-progress! dir-hint name)) (lambda () - (with-fluids ((current-reader #f)) + (autoload-in-progress! dir-hint name) + (when mutex + ((ice-9-threads 'unlock-mutex) mutex))) + (lambda () + (with-fluids ((%local-modules-being-loaded + (cons (cons module-name lazy-module-cell) + (fluid-ref %local-modules-being-loaded))) + (current-reader #f)) (save-module-excursion (lambda () (define (call/ec proc) @@ -3014,7 +3191,38 @@ but it fails to load." (primitive-load-path (in-vicinity dir-hint name) abort) (set! didit #t))))))) - (lambda () (set-autoloaded! dir-hint name didit))) + (lambda () + (when mutex + ((ice-9-threads 'lock-mutex) mutex)) + (set-autoloaded! dir-hint name didit))) + + ;; If the local module was actually created, then we + ;; now add it to the global module table. + (let ((module (car lazy-module-cell))) + (when module + (module-define-submodule! parent-module + (car reverse-name) + module))) + + ;; Signal all threads waiting on the condition variable + ;; for this module to be loaded. + (when cond-var + ((ice-9-threads 'broadcast-condition-variable) cond-var)) + + ;; Remove the module from '%modules-being-loaded'. + (set! %modules-being-loaded + (assoc-remove! %modules-being-loaded + module-name)) + + ;; Remove all '%modules-waiting-for' entries that are + ;; directly related to the module that we just loaded + ;; (or attempted to load). + (set! %modules-waiting-for + (filter! (lambda (entry) + (not (or (equal? module-name (car entry)) + (equal? module-name (cdr entry))))) + %modules-waiting-for)) + didit)))))) diff --git a/module/ice-9/threads.scm b/module/ice-9/threads.scm index c42bd266f..81fa22063 100644 --- a/module/ice-9/threads.scm +++ b/module/ice-9/threads.scm @@ -385,8 +385,8 @@ of applying P-PROC on ARGLISTS." ;; thread-safe. (set! (@ (guile) call-with-module-autoload-lock) (let ((mutex (make-mutex 'recursive))) - (lambda (thunk) + (lambda (proc) (with-mutex mutex - (thunk))))) + (proc mutex))))) ;;; threads.scm ends here diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am index 0934dbb34..354c33152 100644 --- a/test-suite/Makefile.am +++ b/test-suite/Makefile.am @@ -1,7 +1,6 @@ ## Process this file with automake to produce Makefile.in. ## -## Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -## 2010, 2011, 2012, 2013, 2014 Software Foundation, Inc. +## Copyright 2001-2018 Software Foundation, Inc. ## ## This file is part of GUILE. ## @@ -204,6 +203,10 @@ EXTRA_DIST = \ $(SCM_TESTS) \ tests/rnrs-test-a.scm \ tests/srfi-64-test.scm \ + tests/mutual-delayed-a.scm \ + tests/mutual-delayed-b.scm \ + tests/mutual-delayed-c.scm \ + tests/delayed-test.scm \ ChangeLog-2008 diff --git a/test-suite/tests/delayed-test.scm b/test-suite/tests/delayed-test.scm new file mode 100644 index 000000000..cc584d61d --- /dev/null +++ b/test-suite/tests/delayed-test.scm @@ -0,0 +1,28 @@ +;;;; delayed-test.scm --- A test helper. -*- scheme -*- +;;;; +;;;; Copyright 2018 Free Software Foundation, Inc. +;;;; +;;;; This library is free software; you can redistribute it and/or +;;;; modify it under the terms of the GNU Lesser General Public +;;;; License as published by the Free Software Foundation; either +;;;; version 3 of the License, or (at your option) any later version. +;;;; +;;;; This library is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with this library; if not, write to the Free Software +;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +(define-module (tests delayed-test) + #:use-module (tests threads) + #:export (delayed-proc)) + +(increment-delayed-test-count!) +(define delayed-proc #f) +(thread-safe-format "delayed-test: starting sleep\n") +(sleep 2) +(define (delayed-proc) 'done) +(thread-safe-format "delayed-test: done\n") diff --git a/test-suite/tests/mutual-delayed-a.scm b/test-suite/tests/mutual-delayed-a.scm new file mode 100644 index 000000000..6a8c4f116 --- /dev/null +++ b/test-suite/tests/mutual-delayed-a.scm @@ -0,0 +1,29 @@ +;;;; mutual-delayed-a.scm --- A test helper. -*- scheme -*- +;;;; +;;;; Copyright 2018 Free Software Foundation, Inc. +;;;; +;;;; This library is free software; you can redistribute it and/or +;;;; modify it under the terms of the GNU Lesser General Public +;;;; License as published by the Free Software Foundation; either +;;;; version 3 of the License, or (at your option) any later version. +;;;; +;;;; This library is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with this library; if not, write to the Free Software +;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +(define-module (tests mutual-delayed-a) + #:use-module (tests threads) + #:export (delayed-a)) + +(define delayed-a #f) +(thread-safe-format "mutual-delayed-a: starting sleep\n") +(sleep 2) +(thread-safe-format "mutual-delayed-a: loading mutual-delayed-b\n") +(resolve-module '(tests mutual-delayed-b)) +(define (delayed-a) 'a) +(thread-safe-format "mutual-delayed-a: done\n") diff --git a/test-suite/tests/mutual-delayed-b.scm b/test-suite/tests/mutual-delayed-b.scm new file mode 100644 index 000000000..81aad5b52 --- /dev/null +++ b/test-suite/tests/mutual-delayed-b.scm @@ -0,0 +1,29 @@ +;;;; mutual-delayed-b.scm --- A test helper. -*- scheme -*- +;;;; +;;;; Copyright 2018 Free Software Foundation, Inc. +;;;; +;;;; This library is free software; you can redistribute it and/or +;;;; modify it under the terms of the GNU Lesser General Public +;;;; License as published by the Free Software Foundation; either +;;;; version 3 of the License, or (at your option) any later version. +;;;; +;;;; This library is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with this library; if not, write to the Free Software +;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +(define-module (tests mutual-delayed-b) + #:use-module (tests threads) + #:export (delayed-b)) + +(define delayed-b #f) +(thread-safe-format "mutual-delayed-b: starting sleep\n") +(sleep 2) +(thread-safe-format "mutual-delayed-b: loading mutual-delayed-c\n") +(resolve-module '(tests mutual-delayed-c)) +(define (delayed-b) 'b) +(thread-safe-format "mutual-delayed-b: done\n") diff --git a/test-suite/tests/mutual-delayed-c.scm b/test-suite/tests/mutual-delayed-c.scm new file mode 100644 index 000000000..90e84a52f --- /dev/null +++ b/test-suite/tests/mutual-delayed-c.scm @@ -0,0 +1,29 @@ +;;;; mutual-delayed-c.scm --- A test helper. -*- scheme -*- +;;;; +;;;; Copyright 2018 Free Software Foundation, Inc. +;;;; +;;;; This library is free software; you can redistribute it and/or +;;;; modify it under the terms of the GNU Lesser General Public +;;;; License as published by the Free Software Foundation; either +;;;; version 3 of the License, or (at your option) any later version. +;;;; +;;;; This library is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with this library; if not, write to the Free Software +;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +(define-module (tests mutual-delayed-c) + #:use-module (tests threads) + #:export (delayed-c)) + +(define delayed-c #f) +(thread-safe-format "mutual-delayed-c: starting sleep\n") +(sleep 2) +(thread-safe-format "mutual-delayed-c: loading mutual-delayed-a\n") +(resolve-module '(tests mutual-delayed-a)) +(define (delayed-c) 'c) +(thread-safe-format "mutual-delayed-c: done\n") diff --git a/test-suite/tests/threads.test b/test-suite/tests/threads.test index efdf36db2..434a1f4e8 100644 --- a/test-suite/tests/threads.test +++ b/test-suite/tests/threads.test @@ -1,7 +1,7 @@ ;;;; threads.test --- Tests for Guile threading. -*- scheme -*- ;;;; ;;;; Copyright 2003, 2006, 2007, 2009, 2010, 2011, 2012, 2013, -;;;; 2014 Free Software Foundation, Inc. +;;;; 2014, 2018 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -17,10 +17,12 @@ ;;;; License along with this library; if not, write to the Free Software ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -(define-module (test-threads) +(define-module (tests threads) #:use-module (ice-9 threads) #:use-module (system base compile) - #:use-module (test-suite lib)) + #:use-module (test-suite lib) + #:export (increment-delayed-test-count! + thread-safe-format)) (define (asyncs-still-working?) (let ((a #f)) @@ -448,3 +450,61 @@ (pass-if "current-processor-count" (and (>= (current-processor-count) 1) (>= (total-processor-count) (current-processor-count))))) + +;; +;; thread safe module loading +;; + +(define thread-safe-format + (let ((mutex (make-mutex))) + (lambda args + (with-mutex mutex + (apply format (current-error-port) args))))) +(define delayed-test-count-mutex (make-mutex)) +(define delayed-test-count 0) +(define (increment-delayed-test-count!) + (with-mutex delayed-test-count-mutex + (set! delayed-test-count + (+ delayed-test-count 1)))) + +(with-test-prefix "thread safe module loading" + ;; We deliberately avoid using 'par-map' below, because the + ;; effectiveness of these tests depend on them running roughly in + ;; parallel. When 'par-map' is used on a machine with only 1 or 2 + ;; cores, the tests below are unable to reliably detect the problems + ;; that exist before guile-2.2.5. + (define (spawn-test-thread module-name sym) + (call-with-new-thread + (lambda () + (cond ((module-variable (resolve-module module-name) sym) + => (lambda (v) + (and (variable? v) + (procedure? (variable-ref v)) + ((variable-ref v))))) + (else + #f))))) + (define (join-thread-with-timeout deadline) + (lambda (thread) + (join-thread thread deadline 'timeout))) + (pass-if-equal "concurrent loading of the same module by multiple threads" + '(1 done done done done done done) + (let ((results + (map (join-thread-with-timeout (+ (current-time) 20)) + (map (lambda (i) + (spawn-test-thread '(tests delayed-test) + 'delayed-proc)) + (iota 6))))) + (cons delayed-test-count results))) + (pass-if-equal "mutually dependent modules loaded concurrently" + '(a b c a b c a b c) + (map (join-thread-with-timeout (+ (current-time) 20)) + (map (lambda (i) + (case (modulo i 3) + ((0) (spawn-test-thread '(tests mutual-delayed-a) + 'delayed-a)) + ((1) (spawn-test-thread '(tests mutual-delayed-b) + 'delayed-b)) + ((2) (spawn-test-thread '(tests mutual-delayed-c) + 'delayed-c)) + (else #f))) + (iota 9))))) -- 2.19.1 --=-=-=--
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 23 Aug 2018 02:22:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 22 22:22:03 2018 Received: from localhost ([127.0.0.1]:58208 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1fsfG6-0000mR-Td for submit <at> debbugs.gnu.org; Wed, 22 Aug 2018 22:22:03 -0400 Received: from world.peace.net ([64.112.178.59]:39480) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mhw@HIDDEN>) id 1fsfG5-0000ly-J1 for 32367 <at> debbugs.gnu.org; Wed, 22 Aug 2018 22:22:01 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <mhw@HIDDEN>) id 1fsfFz-0002GR-ST; Wed, 22 Aug 2018 22:21:55 -0400 From: Mark H Weaver <mhw@HIDDEN> To: Derek Upham <sand@HIDDEN> Subject: Re: bug#32367: 2.2.4 hangs when a script uses a module that calls sigaction References: <87pnyx4p2q.fsf@HIDDEN> <877el36crs.fsf@HIDDEN> <8760032yri.fsf@HIDDEN> <87pnya5x8a.fsf@HIDDEN> Date: Wed, 22 Aug 2018 22:20:21 -0400 In-Reply-To: <87pnya5x8a.fsf@HIDDEN> (Derek Upham's message of "Wed, 22 Aug 2018 06:47:49 -0700") Message-ID: <87va81bz8a.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32367 Cc: 32367 <at> debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, =?utf-8?Q?G=C3=B6ran?= Weinholt <goran@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Hi Derek, Derek Upham <sand@HIDDEN> writes: > Thanks. I built from 4c91de3e4 and was able to reproduce the problem. > Then I reverted 761cf0fb8c364e885e4c6fced34563f8157c3b84 and I was not > able to reproduce it. Thanks for checking. I've reopened <https://bugs.gnu.org/31878> which led to the faulty commit, and sent some messages there proposing a rough outline for a more proper fix. Mark
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 22 Aug 2018 13:47:56 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 22 09:47:56 2018 Received: from localhost ([127.0.0.1]:57346 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1fsTUI-0002BM-SC for submit <at> debbugs.gnu.org; Wed, 22 Aug 2018 09:47:56 -0400 Received: from smtp61.avvanta.com ([206.124.128.61]:36000 helo=mail.avvanta.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <sand@HIDDEN>) id 1fsTUG-0002BD-BA for 32367 <at> debbugs.gnu.org; Wed, 22 Aug 2018 09:47:52 -0400 Received: from mail.avvanta.com (localhost.scooter.p.blarg.net [127.0.0.1]) by mail.avvanta.com (Postfix) with ESMTP id 7E443276D65; Wed, 22 Aug 2018 06:46:51 -0700 (PDT) Received: from priss.frightenedpiglet.com (c-73-83-45-232.hsd1.wa.comcast.net [73.83.45.232]) by mail.avvanta.com (Postfix) with ESMTP id 463D4276D62; Wed, 22 Aug 2018 06:46:51 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=priss.frightenedpiglet.com) by priss.frightenedpiglet.com with esmtp (Exim 4.91) (envelope-from <sand@HIDDEN>) id 1fsTUE-0003Zo-13; Wed, 22 Aug 2018 06:47:50 -0700 References: <87pnyx4p2q.fsf@HIDDEN> <877el36crs.fsf@HIDDEN> <8760032yri.fsf@HIDDEN> User-agent: mu4e 0.9.17; emacs 25.2.2 From: Derek Upham <sand@HIDDEN> To: Mark H Weaver <mhw@HIDDEN> Subject: Re: bug#32367: 2.2.4 hangs when a script uses a module that calls sigaction In-reply-to: <8760032yri.fsf@HIDDEN> Date: Wed, 22 Aug 2018 06:47:49 -0700 Message-ID: <87pnya5x8a.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-BlargAV-Status: No viruses detected, BlargAV v1.1 on localhost.scooter.p.blarg.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 32367 Cc: 32367 <at> debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, =?utf-8?Q?G=C3=B6ran?= Weinholt <goran@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Thanks. I built from 4c91de3e4 and was able to reproduce the problem. Then I reverted 761cf0fb8c364e885e4c6fced34563f8157c3b84 and I was not able to reproduce it. So it’s probably the signal delivery thread starting in that module, and trying to load another module immediately. This isn’t the first time the signal delivery thread has exposed an issue: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26858 Derek Mark H Weaver <mhw@HIDDEN> writes: > I don't have time now for a proper investigation, but this might be > related to commit 761cf0fb8c364e885e4c6fced34563f8157c3b84 (Make module > autoloading thread-safe). > > Mark
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 21 Aug 2018 21:32:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 21 17:32:23 2018 Received: from localhost ([127.0.0.1]:57101 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1fsEGE-0005bC-Ul for submit <at> debbugs.gnu.org; Tue, 21 Aug 2018 17:32:23 -0400 Received: from world.peace.net ([64.112.178.59]:37826) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mhw@HIDDEN>) id 1fsEGD-0005WO-GJ for 32367 <at> debbugs.gnu.org; Tue, 21 Aug 2018 17:32:21 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <mhw@HIDDEN>) id 1fsEG7-0001iE-It; Tue, 21 Aug 2018 17:32:15 -0400 From: Mark H Weaver <mhw@HIDDEN> To: =?utf-8?Q?G=C3=B6ran?= Weinholt <goran@HIDDEN> Subject: Re: bug#32367: 2.2.4 hangs when a script uses a module that calls sigaction References: <87pnyx4p2q.fsf@HIDDEN> <877el36crs.fsf@HIDDEN> Date: Tue, 21 Aug 2018 17:30:41 -0400 In-Reply-To: <877el36crs.fsf@HIDDEN> (=?utf-8?Q?=22G=C3=B6ran?= Weinholt"'s message of "Mon, 06 Aug 2018 11:54:31 +0200") Message-ID: <8760032yri.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32367 Cc: 32367 <at> debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Derek Upham <sand@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) I don't have time now for a proper investigation, but this might be related to commit 761cf0fb8c364e885e4c6fced34563f8157c3b84 (Make module autoloading thread-safe). Mark
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at 32367) by debbugs.gnu.org; 6 Aug 2018 10:14:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 06 06:14:11 2018 Received: from localhost ([127.0.0.1]:42309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1fmcWg-0007NQ-PF for submit <at> debbugs.gnu.org; Mon, 06 Aug 2018 06:14:11 -0400 Received: from iustitia.weinholt.se ([46.16.232.230]:47470) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <goran@HIDDEN>) id 1fmcWe-0007NH-Nw for 32367 <at> debbugs.gnu.org; Mon, 06 Aug 2018 06:14:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=weinholt.se ; s=iustitia2012; h=Content-Transfer-Encoding:Content-Type:MIME-Version: Message-ID:In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=uzix6k3v29TwaaT9fbqVXISSHAQZrsdhc07RqEeiJbI=; b=rIpeFdtkd92xYRpDTqrHivZRex BH4Mn1A1C120OszGs66xEZW75kqgiafmvlk83D6pMrWh2+o8tn9baFIsCe7qyhXQFD+m5pHfcovdR h/e6Epa8XiJOZzFA/J3hG8FUNLYJAIWk9mFi1DsYZzzNNPhLwE+WwAduLswvHrADN0TZPGhx0n1OZ w0R77NRYWAkL1Fr4v9QtDxNV9ECz4aVF1OqAa58O/ZvVMxkC7xWVRSutmY8p3pj8sbKZR4KzDokPM v74S7V4lfYJX7xwnKX0MaNFjyCMjfrKSN1ZBj2CfU10xIjiFq/JF7lPGfRYlI7OmxqDPWX9FLIDNS 2SVVRDwQ==; Received: from uucp by iustitia.weinholt.se with local-bsmtp (Exim 4.89) (envelope-from <goran@HIDDEN>) id 1fmcWc-0006UA-Fy; Mon, 06 Aug 2018 12:14:06 +0200 Received: from weinholt by teapot.weinholt.se with local (Exim 4.91) (envelope-from <goran@HIDDEN>) id 1fmcDf-000815-Ux; Mon, 06 Aug 2018 11:54:31 +0200 From: =?utf-8?Q?G=C3=B6ran?= Weinholt <goran@HIDDEN> To: Derek Upham <sand@HIDDEN> Subject: Re: bug#32367: 2.2.4 hangs when a script uses a module that calls sigaction References: <87pnyx4p2q.fsf@HIDDEN> X-Hashcash: 1:20:180806:sand@HIDDEN::Mrfj3SIYRlKBZAEH:0002aAw X-Hashcash: 1:20:180806:32367 <at> debbugs.gnu.org::J+hCdMfuNMGzATK8:00000000000000000000000000000000000000007K5l Date: Mon, 06 Aug 2018 11:54:31 +0200 In-Reply-To: <87pnyx4p2q.fsf@HIDDEN> (Derek Upham's message of "Sat, 04 Aug 2018 17:47:09 -0700") Message-ID: <877el36crs.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.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: 32367 Cc: 32367 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Derek Upham <sand@HIDDEN> writes: > This is with guile-2.2 (2.2.4+1-1) and guile-2.2-libs (2.2.4+1-1) on > Debian unstable, for the amd64 architecture. ... > > % /usr/bin/guile -s foo=20 > setting SIGCHILD to SIG_DFL... > setting SIGCHILD to SIG_DFL...done Here's a backtrace: GNU gdb (Debian 8.1-4) 8.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.htm= l> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/bin/guile...Reading symbols from /usr/lib/debug/.= build-id/e3/f08708458c69f9adf32d6cafd6d9ca7a8410ea.debug...done. done. Attaching to program: /usr/bin/guile, process 29610 [New LWP 29611] [New LWP 29612] [New LWP 29613] [New LWP 29614] [New LWP 29615] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". s0x00007fb48c8f0e6c in futex_wait_cancelable (private=3D<optimized out>, ex= pected=3D0, futex_word=3D0x559a855ebe60) at ../sysdeps/unix/sysv/linux/fute= x-internal.h:88 88 int err =3D lll_futex_timed_wait (futex_word, expected, NULL, private); (gdb) set pagination off (gdb) thread apply all bt Thread 6 (Thread 0x7fb48891c700 (LWP 29615)): #0 0x00007fb48c8f0e6c in futex_wait_cancelable (private=3D<optimized out>,= expected=3D0, futex_word=3D0x559a855ebae0) at ../sysdeps/unix/sysv/linux/f= utex-internal.h:88 #1 __pthread_cond_wait_common (abstime=3D0x0, mutex=3D0x559a8571ff80, cond= =3D0x559a855ebab8) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=3Dcond@entry=3D0x559a855ebab8, mutex=3Dmutex@= entry=3D0x559a8571ff80) at pthread_cond_wait.c:655 #3 0x00007fb48cb86bf5 in scm_pthread_cond_wait (cond=3Dcond@entry=3D0x559a= 855ebab8, mutex=3Dmutex@entry=3D0x559a8571ff80) at threads.c:1621 #4 0x00007fb48cb86dbb in block_self (queue=3D0x559a8571c2c0, mutex=3Dmutex= @entry=3D0x559a8571ff80, waittime=3Dwaittime@entry=3D0x0) at threads.c:316 #5 0x00007fb48cb86f6f in lock_mutex (current_thread=3D0x559a855eba80, wait= time=3D0x0, m=3D0x559a8571ff80, kind=3DSCM_MUTEX_RECURSIVE) at threads.c:10= 37 #6 scm_timed_lock_mutex (mutex=3D0x559a8571c2b0, timeout=3D<optimized out>= ) at threads.c:1101 #7 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #8 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #9 0x00007fb48cb1ab0f in scm_call_3 (proc=3D<optimized out>, arg1=3Darg1@e= ntry=3D0x7fb489ee9050, arg2=3Darg2@entry=3D0x559a856abf40, arg3=3Darg3@entr= y=3D0x4) at eval.c:501 #10 0x00007fb48cb3d950 in scm_private_variable (module_name=3D0x7fb489ee905= 0, name=3D0x559a8565eb20) at modules.c:674 #11 0x00007fb48cb3da51 in scm_private_lookup (module_name=3D0x7fb489ee9050,= name=3D0x559a8565eb20) at modules.c:717 #12 0x00007fb48cb97fd1 in vm_regular_engine () at vm-engine.c:2066 #13 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #14 0x00007fb48cb86076 in really_launch (d=3D0x559a8592c6e0) at threads.c:7= 94 #15 0x00007fb48cb14dfa in c_body (d=3D0x7fb48891be40) at continuations.c:422 #16 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #17 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #18 0x00007fb48cb87784 in catch (tag=3Dtag@entry=3D0x404, thunk=3D0x559a859= 37720, handler=3D0x559a859376e0, pre_unwind_handler=3D0x559a859376a0) at th= row.c:137 #19 0x00007fb48cb87aa5 in scm_catch_with_pre_unwind_handler (key=3Dkey@entr= y=3D0x404, thunk=3D<optimized out>, handler=3D<optimized out>, pre_unwind_h= andler=3D<optimized out>) at throw.c:254 #20 0x00007fb48cb87c6f in scm_c_catch (tag=3Dtag@entry=3D0x404, body=3Dbody= @entry=3D0x7fb48cb14df0 <c_body>, body_data=3Dbody_data@entry=3D0x7fb48891b= e40, handler=3Dhandler@entry=3D0x7fb48cb15080 <c_handler>, handler_data=3Dh= andler_data@entry=3D0x7fb48891be40, pre_unwind_handler=3Dpre_unwind_handler= @entry=3D0x7fb48cb14ed0 <pre_unwind_handler>, pre_unwind_handler_data=3D0x5= 59a85689a20) at throw.c:377 #21 0x00007fb48cb153e0 in scm_i_with_continuation_barrier (body=3Dbody@entr= y=3D0x7fb48cb14df0 <c_body>, body_data=3Dbody_data@entry=3D0x7fb48891be40, = handler=3Dhandler@entry=3D0x7fb48cb15080 <c_handler>, handler_data=3Dhandle= r_data@entry=3D0x7fb48891be40, pre_unwind_handler=3Dpre_unwind_handler@entr= y=3D0x7fb48cb14ed0 <pre_unwind_handler>, pre_unwind_handler_data=3D0x559a85= 689a20) at continuations.c:360 #22 0x00007fb48cb15475 in scm_c_with_continuation_barrier (func=3D<optimize= d out>, data=3D<optimized out>) at continuations.c:456 #23 0x00007fb48cb86396 in with_guile (base=3D0x7fb48891bea8, data=3D0x7fb48= 891bed0) at threads.c:661 #24 0x00007fb48c4d04e8 in GC_call_with_stack_base () from /usr/lib/x86_64-l= inux-gnu/libgc.so.1 #25 0x00007fb48cb8589d in scm_i_with_guile (dynamic_state=3D<optimized out>= , data=3D0x559a8592c6e0, func=3D0x7fb48cb86000 <really_launch>) at threads.= c:704 #26 launch_thread (d=3D0x559a8592c6e0) at threads.c:803 #27 0x00007fb48c8eaf2a in start_thread (arg=3D0x7fb48891c700) at pthread_cr= eate.c:463 #28 0x00007fb48c81dedf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clo= ne.S:95 Thread 5 (Thread 0x7fb48999b700 (LWP 29614)): #0 0x00007fb48c8f4394 in __libc_read (fd=3D5, buf=3Dbuf@entry=3D0x7fb48999= aa40, nbytes=3Dnbytes@entry=3D1) at ../sysdeps/unix/sysv/linux/read.c:27 #1 0x00007fb48cb240d7 in read (__nbytes=3D1, __buf=3D0x7fb48999aa40, __fd= =3D<optimized out>) at /usr/include/x86_64-linux-gnu/bits/unistd.h:44 #2 read_finalization_pipe_data (data=3D0x7fb48999aa40) at finalizers.c:199 #3 0x00007fb48c4d60c3 in GC_do_blocking_inner () from /usr/lib/x86_64-linu= x-gnu/libgc.so.1 #4 0x00007fb48c4ca9ce in GC_with_callee_saves_pushed () from /usr/lib/x86_= 64-linux-gnu/libgc.so.1 #5 0x00007fb48c4d051c in GC_do_blocking () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #6 0x00007fb48cb8677a in scm_without_guile (func=3D0x7fb48cb240c0 <read_fi= nalization_pipe_data>, data=3D0x7fb48999aa40) at threads.c:722 #7 0x00007fb48cb2448b in finalization_thread_proc (unused=3D<optimized out= >) at finalizers.c:212 #8 0x00007fb48cb14dfa in c_body (d=3D0x7fb48999ae40) at continuations.c:422 #9 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #10 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #11 0x00007fb48cb87784 in catch (tag=3Dtag@entry=3D0x404, thunk=3D0x559a856= 19860, handler=3D0x559a85619840, pre_unwind_handler=3D0x559a856197c0) at th= row.c:137 #12 0x00007fb48cb87aa5 in scm_catch_with_pre_unwind_handler (key=3Dkey@entr= y=3D0x404, thunk=3D<optimized out>, handler=3D<optimized out>, pre_unwind_h= andler=3D<optimized out>) at throw.c:254 #13 0x00007fb48cb87c6f in scm_c_catch (tag=3Dtag@entry=3D0x404, body=3Dbody= @entry=3D0x7fb48cb14df0 <c_body>, body_data=3Dbody_data@entry=3D0x7fb48999a= e40, handler=3Dhandler@entry=3D0x7fb48cb15080 <c_handler>, handler_data=3Dh= andler_data@entry=3D0x7fb48999ae40, pre_unwind_handler=3Dpre_unwind_handler= @entry=3D0x7fb48cb14ed0 <pre_unwind_handler>, pre_unwind_handler_data=3D0x5= 59a85689a20) at throw.c:377 #14 0x00007fb48cb153e0 in scm_i_with_continuation_barrier (body=3Dbody@entr= y=3D0x7fb48cb14df0 <c_body>, body_data=3Dbody_data@entry=3D0x7fb48999ae40, = handler=3Dhandler@entry=3D0x7fb48cb15080 <c_handler>, handler_data=3Dhandle= r_data@entry=3D0x7fb48999ae40, pre_unwind_handler=3Dpre_unwind_handler@entr= y=3D0x7fb48cb14ed0 <pre_unwind_handler>, pre_unwind_handler_data=3D0x559a85= 689a20) at continuations.c:360 #15 0x00007fb48cb15475 in scm_c_with_continuation_barrier (func=3D<optimize= d out>, data=3D<optimized out>) at continuations.c:456 #16 0x00007fb48cb86396 in with_guile (base=3D0x7fb48999aea8, data=3D0x7fb48= 999aed0) at threads.c:661 #17 0x00007fb48c4d04e8 in GC_call_with_stack_base () from /usr/lib/x86_64-l= inux-gnu/libgc.so.1 #18 0x00007fb48cb86728 in scm_i_with_guile (dynamic_state=3D<optimized out>= , data=3D<optimized out>, func=3D<optimized out>) at threads.c:704 #19 scm_with_guile (func=3D<optimized out>, data=3D<optimized out>) at thre= ads.c:710 #20 0x00007fb48c8eaf2a in start_thread (arg=3D0x7fb48999b700) at pthread_cr= eate.c:463 #21 0x00007fb48c81dedf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clo= ne.S:95 Thread 4 (Thread 0x7fb48a83d700 (LWP 29613)): #0 0x00007fb48c8f0e6c in futex_wait_cancelable (private=3D<optimized out>,= expected=3D0, futex_word=3D0x7fb48c6f4208) at ../sysdeps/unix/sysv/linux/f= utex-internal.h:88 #1 __pthread_cond_wait_common (abstime=3D0x0, mutex=3D0x7fb48c6f4260, cond= =3D0x7fb48c6f41e0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=3D0x7fb48c6f41e0, mutex=3D0x7fb48c6f4260) at = pthread_cond_wait.c:655 #3 0x00007fb48c4d6de7 in GC_wait_marker () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #4 0x00007fb48c4cd6da in GC_help_marker () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #5 0x00007fb48c4d54bc in GC_mark_thread () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #6 0x00007fb48c8eaf2a in start_thread (arg=3D0x7fb48a83d700) at pthread_cr= eate.c:463 #7 0x00007fb48c81dedf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clo= ne.S:95 Thread 3 (Thread 0x7fb48b03e700 (LWP 29612)): #0 0x00007fb48c8f0e6c in futex_wait_cancelable (private=3D<optimized out>,= expected=3D0, futex_word=3D0x7fb48c6f4208) at ../sysdeps/unix/sysv/linux/f= utex-internal.h:88 #1 __pthread_cond_wait_common (abstime=3D0x0, mutex=3D0x7fb48c6f4260, cond= =3D0x7fb48c6f41e0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=3D0x7fb48c6f41e0, mutex=3D0x7fb48c6f4260) at = pthread_cond_wait.c:655 #3 0x00007fb48c4d6de7 in GC_wait_marker () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #4 0x00007fb48c4cd6da in GC_help_marker () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #5 0x00007fb48c4d54bc in GC_mark_thread () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #6 0x00007fb48c8eaf2a in start_thread (arg=3D0x7fb48b03e700) at pthread_cr= eate.c:463 #7 0x00007fb48c81dedf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clo= ne.S:95 Thread 2 (Thread 0x7fb48b83f700 (LWP 29611)): #0 0x00007fb48c8f0e6c in futex_wait_cancelable (private=3D<optimized out>,= expected=3D0, futex_word=3D0x7fb48c6f4208) at ../sysdeps/unix/sysv/linux/f= utex-internal.h:88 #1 __pthread_cond_wait_common (abstime=3D0x0, mutex=3D0x7fb48c6f4260, cond= =3D0x7fb48c6f41e0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=3D0x7fb48c6f41e0, mutex=3D0x7fb48c6f4260) at = pthread_cond_wait.c:655 #3 0x00007fb48c4d6de7 in GC_wait_marker () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #4 0x00007fb48c4cd6da in GC_help_marker () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #5 0x00007fb48c4d54bc in GC_mark_thread () from /usr/lib/x86_64-linux-gnu/= libgc.so.1 #6 0x00007fb48c8eaf2a in start_thread (arg=3D0x7fb48b83f700) at pthread_cr= eate.c:463 #7 0x00007fb48c81dedf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clo= ne.S:95 Thread 1 (Thread 0x7fb48bc8e740 (LWP 29610)): #0 0x00007fb48c8f0e6c in futex_wait_cancelable (private=3D<optimized out>,= expected=3D0, futex_word=3D0x559a855ebe60) at ../sysdeps/unix/sysv/linux/f= utex-internal.h:88 #1 __pthread_cond_wait_common (abstime=3D0x0, mutex=3D0x559a856e7f00, cond= =3D0x559a855ebe38) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=3Dcond@entry=3D0x559a855ebe38, mutex=3Dmutex@= entry=3D0x559a856e7f00) at pthread_cond_wait.c:655 #3 0x00007fb48cb86bf5 in scm_pthread_cond_wait (cond=3Dcond@entry=3D0x559a= 855ebe38, mutex=3Dmutex@entry=3D0x559a856e7f00) at threads.c:1621 #4 0x00007fb48cb86dbb in block_self (queue=3D0x559a8578f980, mutex=3Dmutex= @entry=3D0x559a856e7f00, waittime=3Dwaittime@entry=3D0x0) at threads.c:316 #5 0x00007fb48cb872cd in timed_wait (c=3D0x559a85757630, current_thread=3D= 0x559a855ebe00, current_thread=3D0x559a855ebe00, waittime=3D0x0, m=3D0x559a= 856e7f00, kind=3DSCM_MUTEX_STANDARD) at threads.c:1347 #6 scm_timed_wait_condition_variable (cond=3D0x559a8578f990, mutex=3D0x559= a8578f960, timeout=3D0x904) at threads.c:1440 #7 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #8 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #9 0x00007fb48cb1aaea in scm_call_2 (proc=3D<optimized out>, arg1=3D<optim= ized out>, arg2=3D<optimized out>) at eval.c:494 #10 0x00007fb48cb867c5 in scm_call_with_new_thread (thunk=3D<optimized out>= , handler=3D<optimized out>) at threads.c:746 #11 0x00007fb48cb86816 in scm_spawn_thread (body=3Dbody@entry=3D0x7fb48cb66= 380 <signal_delivery_thread>, body_data=3Dbody_data@entry=3D0x0, handler=3D= <optimized out>, handler_data=3Dhandler_data@entry=3D0x7fb48cbb63c5) at thr= eads.c:844 #12 0x00007fb48cb66351 in start_signal_delivery_thread () at scmsigs.c:207 #13 0x00007fb48c8f2827 in __pthread_once_slow (once_control=3D0x7fb48cbf5ac= 8 <once>, init_routine=3D0x7fb48cb66310 <start_signal_delivery_thread>) at = pthread_once.c:116 #14 0x00007fb48c8f28e5 in __GI___pthread_once (once_control=3Donce_control@= entry=3D0x7fb48cbf5ac8 <once>, init_routine=3Dinit_routine@entry=3D0x7fb48c= b66310 <start_signal_delivery_thread>) at pthread_once.c:143 #15 0x00007fb48cb6668f in scm_i_ensure_signal_delivery_thread () at scmsigs= .c:332 #16 scm_sigaction_for_thread (signum=3D<optimized out>, handler=3D0x2, flag= s=3D<optimized out>, thread=3D0x559a85622e90) at scmsigs.c:332 #17 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #18 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #19 0x00007fb48cb38968 in scm_primitive_load_path (args=3D<optimized out>) = at load.c:1248 #20 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #21 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #22 0x00007fb48cb1bc07 in scm_primitive_eval (exp=3D<optimized out>, exp@en= try=3D0x559a85735280) at eval.c:662 #23 0x00007fb48cb1bc63 in scm_eval (exp=3D0x559a85735280, module_or_state= =3Dmodule_or_state@entry=3D0x559a8571b140) at eval.c:696 #24 0x00007fb48cb67750 in scm_shell (argc=3D3, argv=3D0x7fff44ec9708) at sc= ript.c:454 #25 0x00007fb48cb3250d in invoke_main_func (body_data=3D0x7fff44ec95b0) at = init.c:340 #26 0x00007fb48cb14dfa in c_body (d=3D0x7fff44ec94f0) at continuations.c:422 #27 0x00007fb48cb9353f in vm_regular_engine () at vm-engine.c:786 #28 0x00007fb48cb98d8f in scm_call_n () at vm.c:1257 #29 0x00007fb48cb87784 in catch (tag=3Dtag@entry=3D0x404, thunk=3D0x559a856= 87140, handler=3D0x559a856870e0, pre_unwind_handler=3D0x559a856870c0) at th= row.c:137 #30 0x00007fb48cb87aa5 in scm_catch_with_pre_unwind_handler (key=3Dkey@entr= y=3D0x404, thunk=3D<optimized out>, handler=3D<optimized out>, pre_unwind_h= andler=3D<optimized out>) at throw.c:254 #31 0x00007fb48cb87c6f in scm_c_catch (tag=3Dtag@entry=3D0x404, body=3Dbody= @entry=3D0x7fb48cb14df0 <c_body>, body_data=3Dbody_data@entry=3D0x7fff44ec9= 4f0, handler=3Dhandler@entry=3D0x7fb48cb15080 <c_handler>, handler_data=3Dh= andler_data@entry=3D0x7fff44ec94f0, pre_unwind_handler=3Dpre_unwind_handler= @entry=3D0x7fb48cb14ed0 <pre_unwind_handler>, pre_unwind_handler_data=3D0x5= 59a85689a20) at throw.c:377 #32 0x00007fb48cb153e0 in scm_i_with_continuation_barrier (body=3Dbody@entr= y=3D0x7fb48cb14df0 <c_body>, body_data=3Dbody_data@entry=3D0x7fff44ec94f0, = handler=3Dhandler@entry=3D0x7fb48cb15080 <c_handler>, handler_data=3Dhandle= r_data@entry=3D0x7fff44ec94f0, pre_unwind_handler=3Dpre_unwind_handler@entr= y=3D0x7fb48cb14ed0 <pre_unwind_handler>, pre_unwind_handler_data=3D0x559a85= 689a20) at continuations.c:360 #33 0x00007fb48cb15475 in scm_c_with_continuation_barrier (func=3D<optimize= d out>, data=3D<optimized out>) at continuations.c:456 #34 0x00007fb48cb86396 in with_guile (base=3D0x7fff44ec9558, data=3D0x7fff4= 4ec9580) at threads.c:661 #35 0x00007fb48c4d04e8 in GC_call_with_stack_base () from /usr/lib/x86_64-l= inux-gnu/libgc.so.1 #36 0x00007fb48cb86728 in scm_i_with_guile (dynamic_state=3D<optimized out>= , data=3Ddata@entry=3D0x7fff44ec9580, func=3Dfunc@entry=3D0x7fb48cb324f0 <i= nvoke_main_func>) at threads.c:704 #37 scm_with_guile (func=3Dfunc@entry=3D0x7fb48cb324f0 <invoke_main_func>, = data=3Ddata@entry=3D0x7fff44ec95b0) at threads.c:710 #38 0x00007fb48cb326a2 in scm_boot_guile (argc=3D3, argv=3D0x7fff44ec9708, = main_func=3D0x559a83f6e270 <inner_main>, closure=3D0x0) at init.c:323 #39 0x0000559a83f6e114 in main (argc=3D3, argv=3D0x7fff44ec9708) at guile.c= :101 --=20 G=C3=B6ran Weinholt Debian developer 73 de SA6CJK
bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.Received: (at submit) by debbugs.gnu.org; 5 Aug 2018 00:47:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Aug 04 20:47:25 2018 Received: from localhost ([127.0.0.1]:41203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1fm7Cf-0003Xa-JN for submit <at> debbugs.gnu.org; Sat, 04 Aug 2018 20:47:25 -0400 Received: from eggs.gnu.org ([208.118.235.92]:52038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <sand@HIDDEN>) id 1fm7Ce-0003XP-9r for submit <at> debbugs.gnu.org; Sat, 04 Aug 2018 20:47:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <sand@HIDDEN>) id 1fm7CY-0001lN-5w for submit <at> debbugs.gnu.org; Sat, 04 Aug 2018 20:47:19 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:52950) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <sand@HIDDEN>) id 1fm7CY-0001lE-1p for submit <at> debbugs.gnu.org; Sat, 04 Aug 2018 20:47:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43008) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <sand@HIDDEN>) id 1fm7CW-0004I9-SY for bug-guile@HIDDEN; Sat, 04 Aug 2018 20:47:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <sand@HIDDEN>) id 1fm7CT-0001hC-Qw for bug-guile@HIDDEN; Sat, 04 Aug 2018 20:47:16 -0400 Received: from smtp61.avvanta.com ([206.124.128.61]:32895 helo=mail.avvanta.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <sand@HIDDEN>) id 1fm7CT-0001fq-IO for bug-guile@HIDDEN; Sat, 04 Aug 2018 20:47:13 -0400 Received: from mail.avvanta.com (localhost.drteeth.p.blarg.net [127.0.0.1]) by mail.avvanta.com (Postfix) with ESMTP id 44F9FF3937; Sat, 4 Aug 2018 17:46:17 -0700 (PDT) Received: from priss.frightenedpiglet.com (c-73-83-45-232.hsd1.wa.comcast.net [73.83.45.232]) by mail.avvanta.com (Postfix) with ESMTP id 2ECC0F3935; Sat, 4 Aug 2018 17:46:17 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=priss.frightenedpiglet.com) by priss.frightenedpiglet.com with esmtp (Exim 4.91) (envelope-from <sand@HIDDEN>) id 1fm7CP-0005u3-K3; Sat, 04 Aug 2018 17:47:09 -0700 User-agent: mu4e 0.9.17; emacs 25.2.2 From: Derek Upham <sand@HIDDEN> To: bug-guile@HIDDEN Subject: 2.2.4 hangs when a script uses a module that calls sigaction Date: Sat, 04 Aug 2018 17:47:09 -0700 Message-ID: <87pnyx4p2q.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 X-BlargAV-Status: No viruses detected, BlargAV v1.1 on localhost.drteeth.p.blarg.net Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.4 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -5.4 (-----) This is with guile-2.2 (2.2.4+1-1) and guile-2.2-libs (2.2.4+1-1) on Debi= an unstable, for the amd64 architecture. Create the following one-line script file: (use-modules (scsh)) Call it (for example) =E2=80=9Cfoo=E2=80=9D. Create a file named =E2=80=9Cscsh.scm=E2=80=9D in a location where the ab= ove =E2=80=9Cuse-modules=E2=80=9D form will find it. I use =E2=80=9C/usr= /share/guile/site/scsh.scm=E2=80=9D. In =E2=80=9Cscsh.scm=E2=80=9D, put: (define-module (scsh)) (display "setting SIGCHILD to SIG_DFL...") (newline) (sigaction SIGCHLD SIG_DFL) (display "setting SIGCHILD to SIG_DFL...done") (newline) Invoke guile as follows: /usr/bin/guile < foo This is reading commands from stdin. You should see the expected output: GNU Guile 2.2.4 Copyright (C) 1995-2017 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. setting SIGCHILD to SIG_DFL... setting SIGCHILD to SIG_DFL...done and a command-line prompt. Invoke guile as a script: /usr/bin/guile -s foo I see just the following: setting SIGCHILD to SIG_DFL... Guile hangs at this point. Reverting Guile to 2.2.3 from the Debian testing distribution (guile-2.2-= dev_2.2.3+1-3+b1_amd64.deb, guile-2.2-doc_2.2.3+1-3_all.deb, guile-2.2-li= bs_2.2.3+1-3+b1_amd64.deb, guile-2.2_2.2.3+1-3+b1_amd64.deb) fixes the pr= oblem: % /usr/bin/guile -s foo=20 setting SIGCHILD to SIG_DFL... setting SIGCHILD to SIG_DFL...done Note that moving the sigaction call from =E2=80=9Cscsh.scm=E2=80=9D to =E2= =80=9Cfoo=E2=80=9D does not trigger the problem. It only happens when a = script uses a module that calls sigaction.
Derek Upham <sand@HIDDEN>
:bug-guile@HIDDEN
.
Full text available.bug-guile@HIDDEN
:bug#32367
; Package guile
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.