From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Michael Albinus via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#73046: 29.4; Emacs 100% CPU usage for several seconds when opening dired buffer over TRAMP Date: Sat, 07 Sep 2024 16:36:42 +0200 Message-ID: <87bk0zjzt1.fsf@gmx.de> References: <87o75241qh.fsf@gmail.com> <86plpi2ixa.fsf@gnu.org> <87seudke20.fsf@gmail.com> <8634md2vc2.fsf@gnu.org> <87h6asrk42.fsf@gmx.de> <86a5gk28ht.fsf@gnu.org> <87le0450x8.fsf@gmx.de> <865xr8228d.fsf@gnu.org> <87jzfofzcl.fsf@gmail.com> <8634mc1ty0.fsf@gnu.org> <87h6asl3hl.fsf@gmail.com> <86ttesyo1t.fsf@gnu.org> Reply-To: Michael Albinus Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11274"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Suhail Singh , 73046@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Sep 07 16:37:28 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1smwZ5-0002mW-Fv for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 07 Sep 2024 16:37:27 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1smwYk-0001Rj-4E; Sat, 07 Sep 2024 10:37:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1smwYg-0001RF-FG for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2024 10:37:02 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1smwYf-0002ts-Ou for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2024 10:37:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:References:In-Reply-To:From:To:Subject; bh=rDAJWv9S6SA3h5sRZDN0F0spx9hFFVZcgsZ/VEPD6bA=; b=hjgkMWaZpb/C5Y25nz1mJmGPxNshleFWXfSoNItVw6pLhYchfrWG9Qmjty5RUsGt4QiIHL9xXtwQWsYEZrWSuZhnqJ2Qilf3+hWWAYZtHtugriT6im9SDI584DrHIifOFkNH5FLr/2uwLcy487Xk/BlHXFFZA0OmtDvEceRGsTei/bZ6uHPniUXe9WCuWVJL40Z37+8Zo5pEGq60tcXbeV5o9zAKoCHCwwVXgD/UXvnuK8kDocpWuF6mIVsmv0/Elya5RbZNSJQYZDh13HKMoy+vLHF6VAaIQvaG3R5cpkj+5uSgU1ZrIkaPth1xYHCpaf0zMS360WvEAMkhieju2A==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1smwYg-00008r-59 for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2024 10:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michael Albinus Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Sep 2024 14:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73046 X-GNU-PR-Package: emacs Original-Received: via spool by 73046-submit@debbugs.gnu.org id=B73046.1725719817532 (code B ref 73046); Sat, 07 Sep 2024 14:37:02 +0000 Original-Received: (at 73046) by debbugs.gnu.org; 7 Sep 2024 14:36:57 +0000 Original-Received: from localhost ([127.0.0.1]:57152 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1smwYa-00008W-JS for submit@debbugs.gnu.org; Sat, 07 Sep 2024 10:36:57 -0400 Original-Received: from mout.gmx.net ([212.227.15.15]:60483) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1smwYY-00008J-HD for 73046@debbugs.gnu.org; Sat, 07 Sep 2024 10:36:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1725719807; x=1726324607; i=michael.albinus@gmx.de; bh=rDAJWv9S6SA3h5sRZDN0F0spx9hFFVZcgsZ/VEPD6bA=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=mi1wEnkPEkBIHR7HSRumFZbmq6FP5ty9s7C2xq0ODR7iTx/TsD81cTRJu6u+xsqv MmL7Jl4jtYhyvr8X4pBtArC7YSUuH4w8YR3UgFVQ4Gi2m4G3KM2krPNDSR9EtTRyx A6gHwY4x5KsUb46gjwaiSR96mKS+PdG3/RCiC6re9Lop2b1h9Xo4j38f/hXhvKxZJ s67Jqph6/iZkrP6QcDuiMIMI8kSwfD1hKjIO4dzRFTUA/9fIZHzJiyGoGQqCTPcTm ZSFLk9K48arTH3nsj9wZGTNPdnFKvaXzeclCByW45UOQEy2ApBjhtMMm848Ou7WLJ 89k5ITIznKcDhHQiuQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from gandalf.gmx.de ([185.89.38.155]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MEUzA-1spgd23OWo-001mT6; Sat, 07 Sep 2024 16:36:47 +0200 In-Reply-To: <86ttesyo1t.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 07 Sep 2024 09:29:18 +0300") X-Provags-ID: V03:K1:HvDnuyaxFhE2VE46k3X0zebUmdF95ityuGAfkOtlvQaWhbnxsUf l5hNcl608/G5FhjZ73KBQCdY0zvioOH6tSdDok33ipJ8/8ijAjzYOciGO8aoDWQqjuiSSnJ cB54ShiAsd+MbpFTeUZvw/OZPv9K0CbNHFd3iIfx8mjNpHo5mWTQIgvBGNKFlhx/Ff6bTf5 F0bgkLybceJP2IzL4BxWQ== UI-OutboundReport: notjunk:1;M01:P0:Sxb8tLg+VGw=;DtJp6WgqGMdVK9JKcTysYKm2rwJ 9I7/N/79/Rr0mTzCg3XVit5vlrRIiRfx3bGa8R20B+b0uC4Gru2QuvSVius5jwNl4hSerts4E 1dyTIS0jFsUGejORV7g1jJzVx7TYkkEb2XNAMwW85ymn0UvHT7izfgzT0XqvmBD+UYa9cBcMb hEK+2/mK8TIaXvgldHpd/h4CU/r1M4iKP8A3FN0vd2MKAmX/kWnqy3eb4zXhJJ5jdxx6BV1K5 NkUE/kbAlY/iCg08uhVy4BKtBD3Tsdz+1Avw2EtMbBi8rIXf4dSFL9PSc4foVG7dgKq9XUsmV LI0exoB6aiTBVVGLAVFTkf6pkRkxmN3NyCFUiwBefumcvfrihxEiLpL0ZsfPaF7X3miWPkvQm WLyeb2fgiItODTAPgpE4v/RxJ+sAzmBAhY8O70QGYcdzkcRbaLf2Ck/+Uz24S+tY2SOayqMR0 xP38SqYgf/9ufw8IA+sjfglbEzRm7V7qa7zT3d+UJmUiROd2frk84QfXRaqKNFYRbUi+IxSNM y6PVpWmfr/uqtRTo2JotZBFcJP5mD3qaEvNqlW07iodAwvoY8gSitiuD4aPTkUzysxmYhEMWK mpfO1PKR+rgLC5rYSTVmxr+R/hfQ/cI2u7g8RKbrOPVHa+3+rNhhMAgdQqWGk4oNeRxkVDqDK bQlhDSMz0F8ntZfCyEqeyrwaCeRmzXxXiKqeAABvlaoVCOkOE2mNGoxa000LKJAr6o+mZPUWP BBfrXP1r5YXKZr2AZ6YMjE4BqecvSJygVuPhj2GuKv08/3wlogVvvRq+jHfpm8LfO6/eHReV X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:291388 Archived-At: Eli Zaretskii writes: Hi Eli, > Thanks you. So the problem seems to be symlinks, and specifically > symlinks to directories. Michael, what does Tramp do specially in > these cases that could explain the slowdown? > >> The above observations seem consistent with Michael's comments above >> regd. font-lock checks for "Broken Symbolink link" and "Symbolic link to >> a directory". > > Michael, what do these checks entail, and why are they so > CPU-expensive and take a lot of time with slow connections? I made a test. In a remote directory I have created a cyclic symlink "zzz", in order to see what Tramp does when running dired on the directory. The additional actions are --8<---------------cut here---------------start------------->8--- 16:26:26.596764 tramp-send-command (6) # test -d /home/albinus/tmp/zzz 2>/d= ev/null; echo tramp_exit_status $? 16:26:26.598277 tramp-wait-for-regexp (6) #=20 tramp_exit_status 1 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:26.601447 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:26.620202 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:26.621815 tramp-send-command (6) # tramp_stat_file_attributes_with_se= linux /home/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:26.701825 tramp-wait-for-regexp (6) #=20 (("=E2=80=98/home/albinus/tmp/zzz=E2=80=99 -> =E2=80=98/home/albinus/tmp/zz= z=E2=80=99") 1 ("albinus" . 1000) ("albinus" . 1000) 1725715198 1725627151 = 1725627151 21 "lrwxrwxrwx" t 11020655 -1 "unconfined_u:object_r:user_tmp_t:= s0") tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:26.727631 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:26.744351 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:26.763045 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:26.844666 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:26.870794 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:26.887610 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:26.906448 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:26.983946 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.006076 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.010734 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.030175 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.117633 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.139885 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.151833 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.171011 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.252462 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.275070 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.292574 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.311554 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.396961 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.419460 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.431578 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.451191 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.544333 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.567437 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.574681 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.594068 tramp-send-command (6) # (if test -h "/home/albinus/tmp/zzz= "; then echo t; else echo nil; fi) && \readlink --canonicalize-missing /hom= e/albinus/tmp/zzz 2>/dev/null; echo tramp_exit_status $? 16:26:27.681818 tramp-wait-for-regexp (6) #=20 t /home/albinus/tmp/zzz tramp_exit_status 0 ///dd77c20acbfe3e98bd0661ddf70b1f4a#$ 16:26:27.701140 tramp-sh-handle-file-truename (10) #=20 backtrace() tramp-sh-handle-file-truename("/ssh:gandalf:~/tmp/zzz") tramp-sh-file-name-handler(file-truename "/ssh:gandalf:~/tmp/zzz") apply(tramp-sh-file-name-handler file-truename "/ssh:gandalf:~/tmp/zzz") tramp-file-name-handler(file-truename "/ssh:gandalf:~/tmp/zzz") file-truename("/ssh:gandalf:~/tmp/zzz") #f(compiled-function (end) #)(4481) font-lock-fontify-keywords-region(4398 4482 nil) font-lock-default-fontify-region(4481 4482 nil) font-lock-fontify-region(4481 4482) #f(compiled-function (fun) #)(font-lock-font= ify-region) jit-lock--run-functions(4481 4482) jit-lock-fontify-now(4481 4482) jit-lock-function(4481) end-of-buffer(nil) funcall-interactively(end-of-buffer nil) command-execute(end-of-buffer) 16:26:27.701222 tramp-sh-handle-file-truename (1) # File error: Apparent cy= cle of symbolic links for /ssh:gandalf:~/tmp/zzz t /home/albinus/tmp/zzz --8<---------------cut here---------------end--------------->8--- 15 times the "test -h" command - I guess, Tramp shall do cyclic link detection better. Best regards, Michael.