From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fd1f1-0004yZ-BL for guix-patches@gnu.org; Tue, 10 Jul 2018 19:03:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fd1ey-0002Y2-D5 for guix-patches@gnu.org; Tue, 10 Jul 2018 19:03:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:46557) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fd1ey-0002Xf-9b for guix-patches@gnu.org; Tue, 10 Jul 2018 19:03:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fd1ex-0006In-Ve for guix-patches@gnu.org; Tue, 10 Jul 2018 19:03:03 -0400 Subject: [bug#32121] [PATCH 2/5] utils: Reset the Fiber dynamic environment in %NON-BLOCKING. Resent-Message-ID: From: =?UTF-8?Q?Cl=C3=A9ment?= Lassieur Date: Wed, 11 Jul 2018 01:02:44 +0200 Message-Id: <20180710230247.16639-2-clement@lassieur.org> In-Reply-To: <20180710230247.16639-1-clement@lassieur.org> References: <20180710230247.16639-1-clement@lassieur.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 32121@debbugs.gnu.org * src/cuirass/utils.scm (%non-blocking): Wrap body in PARAMETERIZE form that clears CURRENT-FIBER. So that PUT-MESSAGE doesn't try to suspend itself within CALL-WITH-NEW-THREAD. See https://lists.gnu.org/archive/html/guile-devel/2018-07/msg00009.html. --- src/cuirass/utils.scm | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/cuirass/utils.scm b/src/cuirass/utils.scm index bbecfb6..d219a3e 100644 --- a/src/cuirass/utils.scm +++ b/src/cuirass/utils.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012, 2013, 2016, 2018 Ludovic Courtès ;;; Copyright © 2015 David Thompson ;;; Copyright © 2016 Mathieu Lirzin +;;; Copyright © 2018 Clément Lassieur ;;; ;;; This file is part of Cuirass. ;;; @@ -122,22 +123,23 @@ VARS... are bound to the arguments of the critical section." (lambda (vars ...) exp ...))) (define (%non-blocking thunk) - (let ((channel (make-channel))) - (call-with-new-thread - (lambda () - (catch #t - (lambda () - (call-with-values thunk - (lambda values - (put-message channel `(values ,@values))))) - (lambda args - (put-message channel `(exception ,@args)))))) - - (match (get-message channel) - (('values . results) - (apply values results)) - (('exception . args) - (apply throw args))))) + (parameterize (((@@ (fibers internal) current-fiber) #f)) + (let ((channel (make-channel))) + (call-with-new-thread + (lambda () + (catch #t + (lambda () + (call-with-values thunk + (lambda values + (put-message channel `(values ,@values))))) + (lambda args + (put-message channel `(exception ,@args)))))) + + (match (get-message channel) + (('values . results) + (apply values results)) + (('exception . args) + (apply throw args)))))) (define-syntax-rule (non-blocking exp ...) "Evalaute EXP... in a separate thread so that it doesn't block the execution -- 2.18.0