From: Philipp Stephani <p.stephani2@gmail.com>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: 33524@debbugs.gnu.org
Subject: bug#33524: 27.0.50; Suspicious code in flymake-proc around temporary directories
Date: Thu, 29 Nov 2018 10:48:42 +0100 [thread overview]
Message-ID: <CAArVCkRc9b8x2ZUmtZy2hEJssgY+FjCqf9C=D3NRcV52jNRQfA@mail.gmail.com> (raw)
In-Reply-To: <874lc18too.fsf@gmx.de>
[-- Attachment #1: Type: text/plain, Size: 3300 bytes --]
Am Mi., 28. Nov. 2018 um 09:58 Uhr schrieb Michael Albinus <
michael.albinus@gmx.de>:
> Philipp Stephani <p.stephani2@gmail.com> writes:
>
> Hi Phillipp,
>
> > I've noticed that the temporary directory code in flymake-proc has
> > issues with remote filenames. For example:
> >
> > $ emacs -Q -batch -l flymake-proc --eval='(print
> (flymake-proc-create-temp-with-folder-structure "/:/dir" nil))'
> >
> > "/tmp/:/dir"
> >
> > Clearly that's not what was intended. Rather, this should create the
> > directory structure on the remote machine.
>
> I don't understand. "/:/dir" is not a remote file name, it is a quoted
> file name. See (info "(emacs) Quoted File Names") for a description.
>
> Could you pls explain what you want to achieve? This would help to
> understand your problem.
>
>
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.)
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 () #<bytecode 0x11a4ea9>)()
flymake-proc-legacy-flymake(#f(compiled-function (&rest args) #<bytecode
0x11a4e51>))
flymake--run-backend(flymake-proc-legacy-flymake)
#f(compiled-function (backend) #<bytecode
0x117b195>)(flymake-proc-legacy-flymake)
run-hook-wrapped(#f(compiled-function (backend) #<bytecode 0x117b195>)
flymake-proc-legacy-flymake)
flymake-start((post-command) nil)
#f(compiled-function () #<bytecode 0x1180771>)()
set-window-buffer(nil #<buffer a.java>)
switch-to-buffer(#<buffer a.java>)
ediff-setup-windows-multiframe-compare(#<buffer a.java> #<buffer b.java>
nil #<buffer *Ediff Control Panel*>)
ediff-setup-windows-multiframe(#<buffer a.java> #<buffer b.java> nil
#<buffer *Ediff Control Panel*>)
ediff-setup-windows-default(#<buffer a.java> #<buffer b.java> nil
#<buffer *Ediff Control Panel*>)
ediff-setup-windows(#<buffer a.java> #<buffer b.java> nil #<buffer *Ediff
Control Panel*>)
ediff-setup(#<buffer a.java> "/:/tmp/a.java" #<buffer b.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()
[-- Attachment #2: Type: text/html, Size: 4665 bytes --]
next prev parent reply other threads:[~2018-11-29 9:48 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-27 16:37 bug#33524: 27.0.50; Suspicious code in flymake-proc around temporary directories Philipp Stephani
2018-11-28 8:58 ` Michael Albinus
2018-11-29 9:48 ` Philipp Stephani [this message]
2018-11-30 12:59 ` Michael Albinus
2018-11-30 14:00 ` João Távora
2018-11-30 14:12 ` Michael Albinus
2018-12-17 10:58 ` Michael Albinus
2018-12-17 20:57 ` Philipp Stephani
2018-12-17 21:08 ` Michael Albinus
2018-12-18 15:00 ` Eli Zaretskii
2018-12-18 16:45 ` Michael Albinus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAArVCkRc9b8x2ZUmtZy2hEJssgY+FjCqf9C=D3NRcV52jNRQfA@mail.gmail.com' \
--to=p.stephani2@gmail.com \
--cc=33524@debbugs.gnu.org \
--cc=michael.albinus@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.