GNU logs - #23963, boring messages


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#23963: 25.0.95; Feature request: setup-unwind-protect, complementing unwind-protect
Resent-From: Markus Triska <triska@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 13 Jul 2016 06:29:01 +0000
Resent-Message-ID: <handler.23963.B.146839133925633 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 23963
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: 23963 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.146839133925633
          (code B ref -1); Wed, 13 Jul 2016 06:29:01 +0000
Received: (at submit) by debbugs.gnu.org; 13 Jul 2016 06:28:59 +0000
Received: from localhost ([127.0.0.1]:48971 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bNDfG-0006fM-Ps
	for submit <at> debbugs.gnu.org; Wed, 13 Jul 2016 02:28:58 -0400
Received: from eggs.gnu.org ([208.118.235.92]:35371)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <triska@HIDDEN>) id 1bNDfF-0006f9-2Q
 for submit <at> debbugs.gnu.org; Wed, 13 Jul 2016 02:28:57 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <triska@HIDDEN>) id 1bNDf8-00089r-S7
 for submit <at> debbugs.gnu.org; Wed, 13 Jul 2016 02:28:51 -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.8 required=5.0 tests=BAYES_50 autolearn=disabled
 version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:44280)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <triska@HIDDEN>) id 1bNDf8-00089g-P1
 for submit <at> debbugs.gnu.org; Wed, 13 Jul 2016 02:28:50 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:54564)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <triska@HIDDEN>) id 1bNDf6-0001uK-FM
 for bug-gnu-emacs@HIDDEN; Wed, 13 Jul 2016 02:28:49 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <triska@HIDDEN>) id 1bNDf2-00089H-84
 for bug-gnu-emacs@HIDDEN; Wed, 13 Jul 2016 02:28:47 -0400
Received: from metalevel.at ([78.46.218.83]:41316)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <triska@HIDDEN>) id 1bNDf2-00089A-14
 for bug-gnu-emacs@HIDDEN; Wed, 13 Jul 2016 02:28:44 -0400
Received: from dawn.meta (localhost.localdomain [127.0.0.1])
 by metalevel.at (Postfix) with ESMTP id 8FD91A05DE
 for <bug-gnu-emacs@HIDDEN>; Wed, 13 Jul 2016 08:28:42 +0200 (CEST)
Received: by dawn.meta (Postfix, from userid 501)
 id 092571AA32D0; Wed, 13 Jul 2016 08:28:45 +0200 (CEST)
From: Markus Triska <triska@HIDDEN>
Date: Wed, 13 Jul 2016 08:28:45 +0200
Message-ID: <m2d1mif3vm.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -5.0 (-----)
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.0 (-----)


The manual entry of `unwind-protect' shows an example whose essence is:

    (unwind-protect
        (progn
          (setq process (ftp-...))
          ;; use process
      (delete-process process))

It adds the following important explanation:

    This example has a small [sic] bug: if the user types `C-g' to quit,
    and the quit happens immediately after the function `ftp-...'
    returns but before the variable `process' is set, *the process will
    not be killed*. There is no easy way to fix this bug, but at least
    it is very unlikely.

Would it be good to make such resource leak *impossible* instead? This
seems quite desirable and could be done with a complementing primitive.

Please consider a new primitive `setup-unwind-protect' with 3 arguments:

    1. SETUPFORM, called in such a way that it *cannot be interrupted*
    2. BODYFORM, like in unwind-protect, called after SETUPFORM
    3. UNWINDFORMS, like in unwind-protect

With this primitive, we could write the example above as:

    (setup-unwind-protect
        (setq process (ftp-...))
     (progn
       ;; use process ...
     (delete-process process))

Please consider adding such a construct to Emacs.

A precedence for such a construct is setup_call_cleanup/3 which appears
in the Prolog ISO draft standard and is already included in many systems:

    https://www.complang.tuwien.ac.at/ulrich/iso-prolog/N215

Thank you and all the best!
Markus


In GNU Emacs 25.0.95.4 (x86_64-apple-darwin15.5.0, X toolkit, Xaw scroll bars)
 of 2016-07-05 built on mt-imac
Repository revision: e3b039d1a0e611d6619ed3ce67d125160d644ebc
Windowing system distributor 'The X.Org Foundation', version 11.0.11502000
Configured using:
 'configure --without-ns CFLAGS=-I/opt/local/include
 LDFLAGS=-L/opt/local/lib'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK GSETTINGS NOTIFY ACL GNUTLS
LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix





Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Markus Triska <triska@HIDDEN>
Subject: bug#23963: Acknowledgement (25.0.95; Feature request:
 setup-unwind-protect, complementing unwind-protect)
Message-ID: <handler.23963.B.146839133925633.ack <at> debbugs.gnu.org>
References: <m2d1mif3vm.fsf@HIDDEN>
X-Gnu-PR-Message: ack 23963
X-Gnu-PR-Package: emacs
Reply-To: 23963 <at> debbugs.gnu.org
Date: Wed, 13 Jul 2016 06:29:01 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 23963 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
23963: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D23963
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#23963: 25.0.95; Feature request: setup-unwind-protect, complementing unwind-protect
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 27 Jan 2018 21:18:02 +0000
Resent-Message-ID: <handler.23963.B23963.15170878461561 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 23963
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Markus Triska <triska@HIDDEN>
Cc: 23963 <at> debbugs.gnu.org
Received: via spool by 23963-submit <at> debbugs.gnu.org id=B23963.15170878461561
          (code B ref 23963); Sat, 27 Jan 2018 21:18:02 +0000
Received: (at 23963) by debbugs.gnu.org; 27 Jan 2018 21:17:26 +0000
Received: from localhost ([127.0.0.1]:45541 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1efXqn-0000P7-Of
	for submit <at> debbugs.gnu.org; Sat, 27 Jan 2018 16:17:25 -0500
Received: from chene.dit.umontreal.ca ([132.204.246.20]:52753)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1efXqk-0000Oy-O4
 for 23963 <at> debbugs.gnu.org; Sat, 27 Jan 2018 16:17:24 -0500
Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242])
 by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id w0RLHJdo012392;
 Sat, 27 Jan 2018 16:17:20 -0500
Received: by ceviche.home (Postfix, from userid 20848)
 id 95A296629F; Sat, 27 Jan 2018 16:17:19 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvlggjnh6u.fsf-monnier+bug#23963@HIDDEN>
References: <m2d1mif3vm.fsf@HIDDEN>
Date: Sat, 27 Jan 2018 16:17:19 -0500
In-Reply-To: <m2d1mif3vm.fsf@HIDDEN> (Markus Triska's message of "Wed,
 13 Jul 2016 08:28:45 +0200")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-NAI-Spam-Flag: NO
X-NAI-Spam-Threshold: 5
X-NAI-Spam-Score: 0
X-NAI-Spam-Rules: 2 Rules triggered
	EDT_SA_DN_PASS=0, RV6209=0
X-NAI-Spam-Version: 2.3.0.9418 : core <6209> : inlines <6344> : streams
 <1777278> : uri <2580824>
X-Spam-Score: -1.3 (-)
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.3 (-)

Markus Triska <triska@HIDDEN> writes:

> With this primitive, we could write the example above as:
>
>     (setup-unwind-protect
>         (setq process (ftp-...))
>      (progn
>        ;; use process ...
>      (delete-process process))

Given my dislike of `setq` I'd rather use something else.

This said, we also have another problem: if the user hits C-g twice
in a row, the second may interrupt the `delete-process` itself.

So I think what we "really" want is more like

    (let ((oi inhibit-quit)
          (inhibit-quit t))
      (let ((process (ftp-...)))
         (unwind-protect
             (let ((inhibit-quit oi))
               ..use process..)
           (delete-process process))))

At the same time, any function whose name starts with "ftp-" is likely
a bad candidate for running it in a context where it can't be
interrupted (it's likely that in various circumstances it could hang, in
which case the user should be able to hit C-g).


        Stefan





Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.