unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* package.el: what does package "Checking ... " actually do?
@ 2015-07-17 11:11 Yuri D'Elia
  2015-07-17 12:36 ` Artur Malabarba
  2015-07-18 11:22 ` Yuri D'Elia
  0 siblings, 2 replies; 15+ messages in thread
From: Yuri D'Elia @ 2015-07-17 11:11 UTC (permalink / raw)
  To: emacs-devel

When I'm using a high-latency network connection, and I update some
packages, downloading takes a few seconds after the connection is
initiated, but package "Checking" instead takes literally minutes to
complete.




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: package.el: what does package "Checking ... " actually do?
  2015-07-17 11:11 package.el: what does package "Checking ... " actually do? Yuri D'Elia
@ 2015-07-17 12:36 ` Artur Malabarba
  2015-07-17 13:19   ` Artur Malabarba
  2015-07-18 11:22 ` Yuri D'Elia
  1 sibling, 1 reply; 15+ messages in thread
From: Artur Malabarba @ 2015-07-17 12:36 UTC (permalink / raw)
  To: Yuri D'Elia; +Cc: emacs-devel

A quick M-x rgrep shows this is probably the byte-compiler, or
checkdoc, or check-declare.

2015-07-17 12:11 GMT+01:00 Yuri D'Elia <wavexx@thregr.org>:
> When I'm using a high-latency network connection, and I update some
> packages, downloading takes a few seconds after the connection is
> initiated, but package "Checking" instead takes literally minutes to
> complete.
>
>



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: package.el: what does package "Checking ... " actually do?
  2015-07-17 12:36 ` Artur Malabarba
@ 2015-07-17 13:19   ` Artur Malabarba
  0 siblings, 0 replies; 15+ messages in thread
From: Artur Malabarba @ 2015-07-17 13:19 UTC (permalink / raw)
  To: Yuri D'Elia; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 201 bytes --]

Is it possible that these minutes are actually spent downloading a second
package, and it just happens that "Checking" was the last thing to be
messaged when the first downloaded package was compiled?

[-- Attachment #2: Type: text/html, Size: 229 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: package.el: what does package "Checking ... " actually do?
  2015-07-17 11:11 package.el: what does package "Checking ... " actually do? Yuri D'Elia
  2015-07-17 12:36 ` Artur Malabarba
@ 2015-07-18 11:22 ` Yuri D'Elia
  2015-07-18 12:44   ` tramp ControlMaster options (was: Re: package.el: what does package "Checking ... " actually do?) Yuri D'Elia
       [not found]   ` <55AA4AF3.2030901@thregr.org>
  1 sibling, 2 replies; 15+ messages in thread
From: Yuri D'Elia @ 2015-07-18 11:22 UTC (permalink / raw)
  To: emacs-devel

On 17/07/15 13:11, Yuri D'Elia wrote:
> When I'm using a high-latency network connection, and I update some
> packages, downloading takes a few seconds after the connection is
> initiated, but package "Checking" instead takes literally minutes to
> complete.

Turns out, it's another case of:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20015





^ permalink raw reply	[flat|nested] 15+ messages in thread

* tramp ControlMaster options (was: Re: package.el: what does package "Checking ... " actually do?)
  2015-07-18 11:22 ` Yuri D'Elia
@ 2015-07-18 12:44   ` Yuri D'Elia
       [not found]   ` <55AA4AF3.2030901@thregr.org>
  1 sibling, 0 replies; 15+ messages in thread
From: Yuri D'Elia @ 2015-07-18 12:44 UTC (permalink / raw)
  To: emacs-devel; +Cc: 20015

On 18/07/15 13:22, Yuri D'Elia wrote:
> On 17/07/15 13:11, Yuri D'Elia wrote:
>> When I'm using a high-latency network connection, and I update some
>> packages, downloading takes a few seconds after the connection is
>> initiated, but package "Checking" instead takes literally minutes to
>> complete.
> 
> Turns out, it's another case of:
> 
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20015

It's really that bad. Even bringing out the variable description of
tramp-ssh-controlmaster-options hangs.

The issue is caused by a rogue provider's DNS server responding with
NXDOMAIN but valid IN A record, which ssh still tries to connect to. And
since the host is filtered, this takes minutes to time out.

Considering that I have a global setting in my ~/.ssh/config that
enables ControlMaster/ControlPath globally, I consider this as a regression.

I tried the same probes using:

  ssh -o BatchMode=yes [various flags] 0.0.0.0

and I get comparable output, and there's no chance 0.0.0.0 would be a
valid address.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
       [not found]   ` <55AA4AF3.2030901@thregr.org>
@ 2015-07-20  5:38     ` Michael Albinus
  2015-07-20  6:21       ` Thierry Volpiatto
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus @ 2015-07-20  5:38 UTC (permalink / raw)
  To: Yuri D'Elia; +Cc: emacs-devel, Andreas Schwab, Stefan Monnier, Tassilo Horn

Yuri D'Elia <wavexx@thregr.org> writes:

> Considering that I have a global setting in my ~/.ssh/config that
> enables ControlMaster/ControlPath globally, I consider this as a regression.

There is `tramp-use-ssh-controlmaster-options' which you could set to
nil after loading Tramp.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-20  5:38     ` tramp ControlMaster options Michael Albinus
@ 2015-07-20  6:21       ` Thierry Volpiatto
  2015-07-20  8:07         ` Yuri D'Elia
  0 siblings, 1 reply; 15+ messages in thread
From: Thierry Volpiatto @ 2015-07-20  6:21 UTC (permalink / raw)
  To: emacs-devel

Michael Albinus <michael.albinus@gmx.de> writes:

> Yuri D'Elia <wavexx@thregr.org> writes:
>
>> Considering that I have a global setting in my ~/.ssh/config that
>> enables ControlMaster/ControlPath globally, I consider this as a regression.
>
> There is `tramp-use-ssh-controlmaster-options' which you could set to
> nil after loading Tramp.

Some people still have similar problem with helm, and I still don't know
why tramp is involved at startup, very annoying.

https://github.com/emacs-helm/helm/issues/1000

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-20  6:21       ` Thierry Volpiatto
@ 2015-07-20  8:07         ` Yuri D'Elia
  2015-07-20 18:43           ` Michael Albinus
  0 siblings, 1 reply; 15+ messages in thread
From: Yuri D'Elia @ 2015-07-20  8:07 UTC (permalink / raw)
  To: emacs-devel

On 20/07/15 08:21, Thierry Volpiatto wrote:
> Michael Albinus <michael.albinus@gmx.de> writes:
> 
>> Yuri D'Elia <wavexx@thregr.org> writes:
>>
>>> Considering that I have a global setting in my ~/.ssh/config that
>>> enables ControlMaster/ControlPath globally, I consider this as a regression.
>>
>> There is `tramp-use-ssh-controlmaster-options' which you could set to
>> nil after loading Tramp.
> 
> Some people still have similar problem with helm, and I still don't know
> why tramp is involved at startup, very annoying.

This is because the definition of `tramp-use-ssh-controlmaster-options'
itself probes ssh in a bad way.

Any reason why we cannot use `ssh -o BatchMode=yes [various flags]
0.0.0.0' instead of using a domain name? This would greatly reduce the
issue.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-20  8:07         ` Yuri D'Elia
@ 2015-07-20 18:43           ` Michael Albinus
  2015-07-20 20:41             ` Yuri D'Elia
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Albinus @ 2015-07-20 18:43 UTC (permalink / raw)
  To: Yuri D'Elia; +Cc: emacs-devel

Yuri D'Elia <wavexx@thregr.org> writes:

>>> There is `tramp-use-ssh-controlmaster-options' which you could set to
>>> nil after loading Tramp.
>> 
>> Some people still have similar problem with helm, and I still don't know
>> why tramp is involved at startup, very annoying.
>
> This is because the definition of `tramp-use-ssh-controlmaster-options'
> itself probes ssh in a bad way.

I don't know what you mean by this. This user option defaults simply to
t, no further test.

Likely you mean `tramp-ssh-controlmaster-options'. This is a variable,
and it will be computed only when it is needed. No Tramp ssh connection,
no probe of ssh for this.

Which Emacs version are you using?

> Any reason why we cannot use `ssh -o BatchMode=yes [various flags]
> 0.0.0.0' instead of using a domain name? This would greatly reduce the
> issue.

The function (!) `tramp-ssh-controlmaster-options' uses "localhost" for
test. This shall avoid DNS requests.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-20 18:43           ` Michael Albinus
@ 2015-07-20 20:41             ` Yuri D'Elia
  2015-07-21  5:09               ` Thierry Volpiatto
  0 siblings, 1 reply; 15+ messages in thread
From: Yuri D'Elia @ 2015-07-20 20:41 UTC (permalink / raw)
  To: emacs-devel

On 20/07/15 20:43, Michael Albinus wrote:
> Likely you mean `tramp-ssh-controlmaster-options'. This is a variable,
> and it will be computed only when it is needed. No Tramp ssh connection,
> no probe of ssh for this.

I hope I understand how defcustom works(?).
In emacs 24.5.1, I see this at line 310 of tramp.el:

(defcustom tramp-ssh-controlmaster-options
  ...

whose standard value is computed by calling ssh a few times.
I don't know what the ;;;###tramp-autoload cookie does though, but no
miracles I assume?

Just to confirm, this is the output of "strace -f -e trace=process"
after a (require 'tramp):

[pid  2189] vfork(Process 2255 attached
 <unfinished ...>
[pid  2255] execve("/usr/bin/ssh", ["/usr/bin/ssh", "-o",
"ControlMaster"], [/* 73 vars */] <unfinished ...>
[pid  2189] <... vfork resumed> )       = 2255
[pid  2255] <... execve resumed> )      = 0
[pid  2255] arch_prctl(ARCH_SET_FS, 0x7fcdde4cd800) = 0
...

>> Any reason why we cannot use `ssh -o BatchMode=yes [various flags]
>> 0.0.0.0' instead of using a domain name? This would greatly reduce the
>> issue.
> 
> The function (!) `tramp-ssh-controlmaster-options' uses "localhost" for
> test. This shall avoid DNS requests.

Still connects to a valid host, which might have a daemon running (in
fact, I have one on localhost for debugging).

If there's no reason to connect to something, call 0.0.0.0.

I love that tramp detects ControlMaster support in ssh, but calling
external processes on load, if really needed, should /really/ be quick.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-20 20:41             ` Yuri D'Elia
@ 2015-07-21  5:09               ` Thierry Volpiatto
  2015-07-21  5:53                 ` Michael Albinus
  0 siblings, 1 reply; 15+ messages in thread
From: Thierry Volpiatto @ 2015-07-21  5:09 UTC (permalink / raw)
  To: emacs-devel

Yuri D'Elia <wavexx@thregr.org> writes:

> On 20/07/15 20:43, Michael Albinus wrote:
>> Likely you mean `tramp-ssh-controlmaster-options'. This is a variable,
>> and it will be computed only when it is needed. No Tramp ssh connection,
>> no probe of ssh for this.
>
> I hope I understand how defcustom works(?).
> In emacs 24.5.1, I see this at line 310 of tramp.el:
>
> (defcustom tramp-ssh-controlmaster-options
>   ...
>
> whose standard value is computed by calling ssh a few times.
> I don't know what the ;;;###tramp-autoload cookie does though, but no
> miracles I assume?
>
> Just to confirm, this is the output of "strace -f -e trace=process"
> after a (require 'tramp):
>
> [pid  2189] vfork(Process 2255 attached
>  <unfinished ...>
> [pid  2255] execve("/usr/bin/ssh", ["/usr/bin/ssh", "-o",
> "ControlMaster"], [/* 73 vars */] <unfinished ...>
> [pid  2189] <... vfork resumed> )       = 2255
> [pid  2255] <... execve resumed> )      = 0
> [pid  2255] arch_prctl(ARCH_SET_FS, 0x7fcdde4cd800) = 0
> ...

So IIUC tramp is calling ssh at load time when evaling its defcustom ?!!

>>> Any reason why we cannot use `ssh -o BatchMode=yes [various flags]
>>> 0.0.0.0' instead of using a domain name? This would greatly reduce the
>>> issue.
>> 
>> The function (!) `tramp-ssh-controlmaster-options' uses "localhost" for
>> test. This shall avoid DNS requests.
>
> Still connects to a valid host, which might have a daemon running (in
> fact, I have one on localhost for debugging).
>
> If there's no reason to connect to something, call 0.0.0.0.

Isn't it possible to setup the default value of
`tramp-ssh-controlmaster-options' only when tramp is involved (i.e at
first connection) instead of evaling this at load time ?

If tramp hang forever like it is the case actually user will know why
emacs is hanging.

> I love that tramp detects ControlMaster support in ssh, but calling
> external processes on load, if really needed, should /really/ be quick.

IMHO this should not happen at load time.


Thanks.

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-21  5:09               ` Thierry Volpiatto
@ 2015-07-21  5:53                 ` Michael Albinus
  2015-07-21  7:22                   ` Thierry Volpiatto
  2015-07-21 10:59                   ` Yuri D'Elia
  0 siblings, 2 replies; 15+ messages in thread
From: Michael Albinus @ 2015-07-21  5:53 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: emacs-devel

Thierry Volpiatto <thierry.volpiatto@gmail.com> writes:

>> In emacs 24.5.1, I see this at line 310 of tramp.el:

Here we are. What I have written is about Emacs 25, the development
branch in git.

> So IIUC tramp is calling ssh at load time when evaling its defcustom ?!!

Not any longer. This is fixed, as I have explained.

>>>> Any reason why we cannot use `ssh -o BatchMode=yes [various flags]
>>>> 0.0.0.0' instead of using a domain name? This would greatly reduce the
>>>> issue.
>>> 
>>> The function (!) `tramp-ssh-controlmaster-options' uses "localhost" for
>>> test. This shall avoid DNS requests.
>>
>> Still connects to a valid host, which might have a daemon running (in
>> fact, I have one on localhost for debugging).
>>
>> If there's no reason to connect to something, call 0.0.0.0.

I've tested. If there is a daemon running on your local host, it *also*
connects using 0.0.0.0. No difference to localhost.

--8<---------------cut here---------------start------------->8---
# ssh -o ControlPath=%C 0.0.0.0
Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-23-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

0 packages can be updated.
0 updates are security updates.

*** System restart required ***
Last login: Mon Jul 20 20:41:09 2015 from localhost
--8<---------------cut here---------------end--------------->8---

That's why *current* Tramp connects to another port, hoping nobody let
run an sshd on that port.

--8<---------------cut here---------------start------------->8---
# ssh -p 23 -o ControlPath=%C localhost
ssh: connect to host localhost port 23: Connection refused
--8<---------------cut here---------------end--------------->8---

> Isn't it possible to setup the default value of
> `tramp-ssh-controlmaster-options' only when tramp is involved (i.e at
> first connection) instead of evaling this at load time ?

That's the case in recent Tramp.

>> I love that tramp detects ControlMaster support in ssh, but calling
>> external processes on load, if really needed, should /really/ be quick.

It does now.

In order to fix the problem for you, you could upgrade to the
development branch of Emacs (25.0.50). If this is not an option for you,
you might install Tramp 2.2.12, which has been released end of June.

Another Emacs 24.x release is unlikely, as Stefan has said a while ago.

> Thanks.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-21  5:53                 ` Michael Albinus
@ 2015-07-21  7:22                   ` Thierry Volpiatto
  2015-07-21 10:59                   ` Yuri D'Elia
  1 sibling, 0 replies; 15+ messages in thread
From: Thierry Volpiatto @ 2015-07-21  7:22 UTC (permalink / raw)
  To: Michael Albinus; +Cc: emacs-devel


Michael Albinus <michael.albinus@gmx.de> writes:

>> Isn't it possible to setup the default value of
>> `tramp-ssh-controlmaster-options' only when tramp is involved (i.e at
>> first connection) instead of evaling this at load time ?
>
> That's the case in recent Tramp.

Good, thanks.

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-21  5:53                 ` Michael Albinus
  2015-07-21  7:22                   ` Thierry Volpiatto
@ 2015-07-21 10:59                   ` Yuri D'Elia
  2015-07-22  5:58                     ` Michael Albinus
  1 sibling, 1 reply; 15+ messages in thread
From: Yuri D'Elia @ 2015-07-21 10:59 UTC (permalink / raw)
  To: emacs-devel

On 21/07/15 07:53, Michael Albinus wrote:
> Thierry Volpiatto <thierry.volpiatto@gmail.com> writes:
> 
>>> In emacs 24.5.1, I see this at line 310 of tramp.el:
> 
> Here we are. What I have written is about Emacs 25, the development
> branch in git.

A-ha, sorry then.

> I've tested. If there is a daemon running on your local host, it *also*
> connects using 0.0.0.0. No difference to localhost.

Odd, but yes, does the same on my host. I'm wondering why it does that?
What about some other illegal addresses, like 0.0.0.1?

$ ssh 0.0.0.1
ssh: connect to host 0.0.0.1 port 22: Invalid argument
$ ssh -o random 0.0.0.1
command-line: line 0: Bad configuration option: random

so it looks usable and doesn't require an invalid port.

> In order to fix the problem for you, you could upgrade to the
> development branch of Emacs (25.0.50). If this is not an option for you,
> you might install Tramp 2.2.12, which has been released end of June.
> 
> Another Emacs 24.x release is unlikely, as Stefan has said a while ago.

I've set the options manually, so I'm good about this. I was just
preoccupied about the default behavior on load.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: tramp ControlMaster options
  2015-07-21 10:59                   ` Yuri D'Elia
@ 2015-07-22  5:58                     ` Michael Albinus
  0 siblings, 0 replies; 15+ messages in thread
From: Michael Albinus @ 2015-07-22  5:58 UTC (permalink / raw)
  To: Yuri D'Elia; +Cc: emacs-devel

Yuri D'Elia <wavexx@thregr.org> writes:

> What about some other illegal addresses, like 0.0.0.1?
>
> $ ssh 0.0.0.1
> ssh: connect to host 0.0.0.1 port 22: Invalid argument
> $ ssh -o random 0.0.0.1
> command-line: line 0: Bad configuration option: random
>
> so it looks usable and doesn't require an invalid port.

Nice idea, thanks. I've committed a respective patch to Tramp and Emacs
repositories.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2015-07-22  5:58 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-17 11:11 package.el: what does package "Checking ... " actually do? Yuri D'Elia
2015-07-17 12:36 ` Artur Malabarba
2015-07-17 13:19   ` Artur Malabarba
2015-07-18 11:22 ` Yuri D'Elia
2015-07-18 12:44   ` tramp ControlMaster options (was: Re: package.el: what does package "Checking ... " actually do?) Yuri D'Elia
     [not found]   ` <55AA4AF3.2030901@thregr.org>
2015-07-20  5:38     ` tramp ControlMaster options Michael Albinus
2015-07-20  6:21       ` Thierry Volpiatto
2015-07-20  8:07         ` Yuri D'Elia
2015-07-20 18:43           ` Michael Albinus
2015-07-20 20:41             ` Yuri D'Elia
2015-07-21  5:09               ` Thierry Volpiatto
2015-07-21  5:53                 ` Michael Albinus
2015-07-21  7:22                   ` Thierry Volpiatto
2015-07-21 10:59                   ` Yuri D'Elia
2015-07-22  5:58                     ` Michael Albinus

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).