From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Michael Albinus Newsgroups: gmane.emacs.bugs Subject: bug#33524: 27.0.50; Suspicious code in flymake-proc around temporary directories Date: Fri, 30 Nov 2018 13:59:57 +0100 Message-ID: <87tvjyg1pu.fsf@gmx.de> References: <874lc18too.fsf@gmx.de> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1543582755 4268 195.159.176.226 (30 Nov 2018 12:59:15 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 30 Nov 2018 12:59:15 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 33524@debbugs.gnu.org, =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= To: Philipp Stephani Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Nov 30 13:59:11 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSiNx-0000ux-Ip for geb-bug-gnu-emacs@m.gmane.org; Fri, 30 Nov 2018 13:59:09 +0100 Original-Received: from localhost ([::1]:59787 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSiQ4-0003i2-1r for geb-bug-gnu-emacs@m.gmane.org; Fri, 30 Nov 2018 08:01:20 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33255) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSiPp-0003gX-LV for bug-gnu-emacs@gnu.org; Fri, 30 Nov 2018 08:01:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSiPm-0004FK-DG for bug-gnu-emacs@gnu.org; Fri, 30 Nov 2018 08:01:05 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:51368) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gSiPm-0004E9-6I for bug-gnu-emacs@gnu.org; Fri, 30 Nov 2018 08:01:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gSiPm-0002Yo-5D for bug-gnu-emacs@gnu.org; Fri, 30 Nov 2018 08:01:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Michael Albinus Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 30 Nov 2018 13:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33524 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 33524-submit@debbugs.gnu.org id=B33524.15435828089722 (code B ref 33524); Fri, 30 Nov 2018 13:01:02 +0000 Original-Received: (at 33524) by debbugs.gnu.org; 30 Nov 2018 13:00:08 +0000 Original-Received: from localhost ([127.0.0.1]:55626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSiOt-0002Wj-C3 for submit@debbugs.gnu.org; Fri, 30 Nov 2018 08:00:08 -0500 Original-Received: from mout.gmx.net ([212.227.15.19]:56941) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gSiOr-0002VP-CQ for 33524@debbugs.gnu.org; Fri, 30 Nov 2018 08:00:05 -0500 Original-Received: from detlef.gmx.de ([178.20.94.255]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M92lh-1geVhz1cZZ-00COkp; Fri, 30 Nov 2018 13:59:58 +0100 In-Reply-To: (Philipp Stephani's message of "Thu, 29 Nov 2018 10:48:42 +0100") X-Provags-ID: V03:K1:YIfiBUINwcn8UKOMWGUmwPVsRPr5TnreM+aq+vZEMp07i1430rO zoF0gfw68+AdPEIWSi4WWLDhPaxE3Yz5t7lWwPqxsbWNy+3NdLaaoXFN9wcEkVV7NBAVwDL /48HJWQsaZD9s+/EesLFzKzNufPSCCArvXC0Z7LSkKDb9MXm/kPfSteKOps+mHq7HxBKH3w 10hJtY+Sej03X8BmN6K8w== X-UI-Out-Filterresults: notjunk:1;V03:K0:788cYF7I0qo=:lup14Ex0JkSqnlHuDiFlC8 KSSF+b8IewM+GAju6Fc8Z/z1dtQPEABXA6JY8nKv2GwYkd+8yLaHc1MZOT7vfoMfTGMgAgH1w S3hgpP+rHGp55apYKIj8A3kLeXHgpZU+g6w7QmraRIi6sy2VYiB8yekJke5MQIcvbAsEMiFaN 8oPubkiJhcx2Eyl5wt5vj8qDWfhFKRY3O/u5PGbDSMYeH0d0KqlsPi+D+wjwesh41jgfZzagX 2bgUySW35/5VYV1CIHg1oG0h78+MRvOe9ds9nZWxwFxECX2Bw+qiwd+9qdti4LemTEbV77/b+ SXfMw4QIfFAwr915HraAKMJr3ND3oTEbvuljvEnqFA9FkMPA9yYCksVAWkQRYU82Rc5t9jL8S P1XxJdSDBcYGmiJPd3yRcKuj/7zRzmYtuuIW5z87NNUTM6cPix4getETKCW0lsOjJ5QSomgfA 0WuwvxUzUphhM4E7qW48iuyaC0DqThCKviZYHfxAUg4rMLNuvBo4J35XNz12xn6PAkw8jbN/4 e0Ekmi2MbwSIAWnGjd6QOXGzVSwf5P6ypZRPTIDXBhrMRyheBAcS1WMhLSRL+PB3Xhzb/+t1r qhPBNeYdlhSHmN16nJObnPF7tjrwQgFi4bxeYeJms6Od3JCgWl63QHCb6d7kvttFnWiZSgEPW m262m4QcvrSL/3XqUp7cZoZfyEb2h43yGYFkDuOarotfqnPowwsI5DaklpnTmy9mZ18NmA0mS PSCS6L0ZDlGHM78/NZLp/Oh9b5GIIapslCpjLL/RKpgAptnzwWBLoxzajNdVZ2HGBA2iQl/C X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:152934 Archived-At: --=-=-= Content-Type: text/plain Philipp Stephani writes: Hi Philipp, > Sorry for being imprecise. Yes, I mean quoted filenames. (It's > possible that the issue also arises for true remote filenames, but I > haven't checked.) "True remote filename" is still a wrong phrase. Quoted file names and remote file names play different games. > You can easily reproduce user-facing problems. Assuming you have some > binary installed that would check Java files using the legacy backend: > > $ touch /tmp/{a,b}.java > $ emacs -Q -eval '(progn (add-hook (quote prog-mode-hook) (quote > flymake-mode)) (ediff "/:/tmp/a.java" "/:/tmp/b.java"))' > > And Emacs immediately hangs because it runs into the endless loop. > Stacktrace in this case is > > Debugger entered--Lisp error: (quit) > display-warning((flymake flymake-proc) "Failed to delete dir /, > error ignored" :error "*Flymake log*") > flymake--log-1(1 flymake-proc "Failed to delete dir %s, error > ignored" "/") > flymake-proc--safe-delete-directory("/") > flymake-proc--delete-temp-directory("/tmp/:/tmp/") > flymake-proc-simple-java-cleanup() > #f(compiled-function () #)() > flymake-proc-legacy-flymake(#f(compiled-function (&rest args) > #)) > flymake--run-backend(flymake-proc-legacy-flymake) > #f(compiled-function (backend) #) > (flymake-proc-legacy-flymake) > run-hook-wrapped(#f(compiled-function (backend) # 0x117b195>) flymake-proc-legacy-flymake) > flymake-start((post-command) nil) > #f(compiled-function () #)() > set-window-buffer(nil #) > switch-to-buffer(#) > ediff-setup-windows-multiframe-compare(# # b.java> nil #) > ediff-setup-windows-multiframe(# # nil > #) > ediff-setup-windows-default(# # nil > #) > ediff-setup-windows(# # nil # *Ediff Control Panel*>) > ediff-setup(# "/:/tmp/a.java" # > "/:/tmp/b.java" nil nil nil ((ediff-job-name . ediff-files)) nil) > ediff-files-internal("/:/tmp/a.java" "/:/tmp/b.java" nil nil > ediff-files) > ediff("/:/tmp/a.java" "/:/tmp/b.java") > (progn (add-hook (quote prog-mode-hook) (quote flymake-mode)) (ediff > "/:/tmp/a.java" "/:/tmp/b.java")) > eval((progn (add-hook (quote prog-mode-hook) (quote flymake-mode)) > (ediff "/:/tmp/a.java" "/:/tmp/b.java"))) > command-line-1(("-f" "toggle-debug-on-quit" "-eval" "(progn > (add-hook (quote prog-mode-hook) (quote flymake-mode)) (ediff > \"/:/tmp/a.java\" \"/:/tmp/b.java\"))")) > command-line() > normal-top-level() The following patch fixes this problem: --=-=-= Content-Type: text/plain Content-Disposition: inline diff --git a/lisp/progmodes/flymake-proc.el b/lisp/progmodes/flymake-proc.el index 8600be9b97..e969c5d992 100644 --- a/lisp/progmodes/flymake-proc.el +++ b/lisp/progmodes/flymake-proc.el @@ -874,7 +874,7 @@ flymake-proc-create-temp-with-folder-structure (unless (stringp file-name) (error "Invalid file-name")) - (let* ((dir (file-name-directory file-name)) + (let* ((dir (file-name-directory (file-name-unquote file-name))) ;; Not sure what this slash-pos is all about, but I guess it's just ;; trying to remove the leading / of absolute file names. (slash-pos (string-match "/" dir)) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable However, I don't know whether this is sufficient, because I don't know why you use quoted file names in your example. Is this something which shall be preserved in the temporary directory, created by flymake? Jo=C3=A3o, do you have further remarks? Best regards, Michael. --=-=-=--