From: Thierry Volpiatto <thievol@posteo.net>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: Eli Zaretskii <eliz@gnu.org>, larsi@gnus.org, 55832@debbugs.gnu.org
Subject: bug#55832: 28.1; Emacs crashes when using tramp from helm in emacs-29
Date: Fri, 10 Jun 2022 10:00:12 +0000 [thread overview]
Message-ID: <87edzwakji.fsf@posteo.net> (raw)
In-Reply-To: <87pmjhgdiv.fsf@gmx.de>
[-- Attachment #1: Type: text/plain, Size: 4166 bytes --]
Hello Michael,
Michael Albinus <michael.albinus@gmx.de> writes:
> Eli Zaretskii <eliz@gnu.org> writes:
>
> Hi,
>
>>> > So tramp-file-name-for-operation errors out, and that somehow gets us
>>> > in trouble.
>>> >
>>> > I see we call signal-hook-function -- what is its value in that
>>> > session, please?
>>>
>>> Seems tramp let-bound it to tramp-signal-hook-function in
>>> tramp-file-name-handler.
>>
>> Michael, can you help us out here? Could the above somehow cause
>> infinite recursion, whereby signaling an error triggers another,
>> nested error?
>
> First, I've tried to reproduce it from emacs -Q. I've upgraded all
> installed ELPA packages, and then I have called
>
> emacs -Q \
> -l ~/.emacs.d/elpa/helm-core-20220503.622/helm-core-autoloads.el \
> -l ~/.emacs.d/elpa/helm-20220504.827/helm-autoloads.el \
> -l ~/.emacs.d/elpa/helm-tramp-20190616.125/helm-tramp-autoloads.el \
What is helm-tramp? this is not part of helm.
> -l ~/.emacs.d/elpa/async-20220318.1342/async-autoloads.el \
> -l seq -f helm-find-files
You have better time cloning emacs-async and run make && sudo make
install and same with helm, then emacs -q, (require 'helm) (require
'helm-config) and C-x c C-x C-f
> Using /sudo:: as file name doesn't raise any error.
Did you follow the recipe I sent?
First shot doesn't crash but second after M-x
tramp-cleanup-all-connections does.
> However, this is from the master branch;
The bug is from master branch not emacs-28, I sent the bug report from
my main emacs which is emacs-28 because 29 crashed.
> Emacs 28 doesn't play fine with the compiled Helm libraries because of
> an error in calling string-match (using the new optional arg
> INHIBIT-MODIFY). And I don't want to recompile all my installed
> packages with Emacs 28. Hmm.
The bug doesn't happen with emacs-28.
> Looking at the error, it comes indeed from
> tramp-file-name-for-operation. In the backtrace shown by Thierry it
> looks like this function is called for tramp-get-remote-uid:
>
> (gdb) xsymbol
> $5 = (struct Lisp_Symbol *) 0x555558080030
> "tramp-file-name-for-operation"
> (gdb) p args[1]
> $6 = XIL(0x22fdb90)
> (gdb) xtype
> Lisp_Symbol
> (gdb) xsymbol
> $7 = (struct Lisp_Symbol *) 0x555557fd47d0
> "tramp-get-remote-uid"
>
> tramp-get-remote-uid *is* a valid argument, and
> tramp-file-name-for-operation shouldn't raise an error. Once we have
> fixed the problem of Emacs crash, it shall be investigated wy this error
> has been raised.
tramp-get-remote-uid is calling tramp-file-name-handler with
tramp-get-remote-uid as arg so I guess the infinite recursion starts
here isn't it?
> It is not clear to me why tramp-file-name-for-operation goes into
> recursion with the error handling, invoking again and again
> tramp-signal-hook-function (that is the function bound to
> signal-hook-function).
What is calling tramp-get-remote-uid in tramp-file-name-for-operation?
> However, a simple protection against this should be this patch:
>
> diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
> index 3ee1169139..3905aeba70 100644
> --- a/lisp/net/tramp.el
> +++ b/lisp/net/tramp.el
> @@ -2476,6 +2476,7 @@ tramp-file-name-for-operation
> It does not always return a Tramp file name, for example if the
> first argument of `expand-file-name' is absolute and not remote.
> Must be handled by the callers."
> + (let (signal-hook-function)
> (cond
> ;; FILE resp DIRECTORY.
> ((member operation
> @@ -2558,7 +2559,7 @@ tramp-file-name-for-operation
> ((member operation '(tramp-get-remote-gid tramp-get-remote-uid))
> (tramp-make-tramp-file-name (nth 0 args)))
> ;; Unknown file primitive.
> - (t (error "Unknown file I/O primitive: %s" operation))))
> + (t (error "Unknown file I/O primitive: %s" operation)))))
>
> (defun tramp-find-foreign-file-name-handler (filename &optional _operation)
> "Return foreign file name handler if exists."
>
>
> Similar protections have been applied already elsewhere in Tramp. Does
> this solve the problem?
No still crashing.
--
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]
next prev parent reply other threads:[~2022-06-10 10:00 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-07 15:16 bug#55832: 28.1; Emacs crashes when using tramp from helm in emacs-29 Thierry Volpiatto
2022-06-07 16:08 ` Eli Zaretskii
2022-06-07 17:02 ` Thierry Volpiatto
2022-06-07 17:18 ` Eli Zaretskii
2022-06-07 18:33 ` Thierry Volpiatto
2022-06-07 18:53 ` Eli Zaretskii
2022-06-07 19:20 ` Thierry Volpiatto
2022-06-08 13:01 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-06-08 16:30 ` Eli Zaretskii
2022-06-08 18:17 ` Lars Ingebrigtsen
2022-06-08 18:25 ` Eli Zaretskii
2022-06-09 10:34 ` Lars Ingebrigtsen
2022-06-09 10:42 ` Thierry Volpiatto
2022-06-09 13:05 ` Eli Zaretskii
2022-06-09 15:18 ` Thierry Volpiatto
2022-06-09 15:29 ` Lars Ingebrigtsen
2022-06-09 16:36 ` Eli Zaretskii
2022-06-09 16:51 ` Thierry Volpiatto
2022-06-09 17:48 ` Eli Zaretskii
2022-06-09 18:28 ` Thierry Volpiatto
2022-06-09 18:55 ` Eli Zaretskii
2022-06-10 7:53 ` Michael Albinus
2022-06-10 10:00 ` Thierry Volpiatto [this message]
2022-06-10 12:20 ` Michael Albinus
2022-06-11 6:14 ` Thierry Volpiatto
2022-06-11 19:27 ` Michael Albinus
2022-06-11 19:46 ` Thierry Volpiatto
2022-06-11 20:07 ` Michael Albinus
2022-06-11 20:12 ` Thierry Volpiatto
2022-06-12 18:16 ` Thierry Volpiatto
2022-06-14 11:39 ` Michael Albinus
2022-06-14 11:49 ` Thierry Volpiatto
2022-06-09 15:37 ` Thierry Volpiatto
2022-06-14 11:05 ` Michael Albinus
2022-06-14 11:36 ` Thierry Volpiatto
2022-06-14 11:44 ` Michael Albinus
2022-06-14 17:42 ` Michael Albinus
2022-06-16 17:27 ` Michael Albinus
2022-06-16 18:11 ` Thierry Volpiatto
2022-06-17 16:54 ` Michael Albinus
2022-06-17 17:10 ` Thierry Volpiatto
2022-06-19 14:25 ` Michael Albinus
2022-06-19 16:21 ` Thierry Volpiatto
2022-06-19 17:51 ` Michael Albinus
2022-06-21 8:24 ` Michael Albinus
2022-06-21 9:35 ` Thierry Volpiatto
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87edzwakji.fsf@posteo.net \
--to=thievol@posteo.net \
--cc=55832@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=larsi@gnus.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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).