Created on 2008-05-14.13:38:11 by zooko, last changed 2012-01-05.23:28:41 by noreply.
msg4680 (view) |
Author: zooko |
Date: 2008-05-14.13:38:09 |
|
Folks:
I just ran into a problem where I did a "darcs push user@host" and it
"hung". After a few minutes (instead of waiting I went to do other
stuff), I realized that the underlying ssh connection must be blocked.
I tried it -- "ssh user@host" -- and sure enough the Windows putty
ssh posted a warning message to stderr and blocked after asking
"Store key in cache? (y/n)".
I've noticed that this is a frequent problem for new users of
darcs. If anyone is having trouble using darcs over ssh, the first
step is always to tell them to invoke the equivalent ssh command on
the command-line so that they can see the stderr.
Brian Warner pointed out to me that if darcs simply passed any stderr
from the call to ssh back to darcs's stderr, then this would happen
automatically and new users (as well as experienced users like me)
would be able to diagnose their problems more quickly.
Regards,
Zooko
|
msg4684 (view) |
Author: kowey |
Date: 2008-05-14.13:50:30 |
|
I'll submit a patch for this (as I have seen the problem myself)... but I have
the feeling it's a bit more subtle than that, or that my patch will break
something else...
|
msg4685 (view) |
Author: kowey |
Date: 2008-05-14.13:55:31 |
|
So, as I mention in my patch, the potential cost of doing this is that we're
going to be dumping a lot of ssh output (scp) to the user's screen. One thought
is that it doesn't matter as much now with darcs transfer-mode. Another is that
we could make this something parameterisable (--no-ssh-stderr)
|
msg4686 (view) |
Author: zooko |
Date: 2008-05-14.13:56:35 |
|
Yes, that's a good point. Another thought is that we can ask ssh to be as quiet
as possible by passing "-q" or equivalent flags.
|
msg4689 (view) |
Author: kowey |
Date: 2008-05-14.14:02:06 |
|
Heh... I had a feeling we've discussed this before...
Fri Jul 7 03:52:45 BST 2006 Eric Kow <eric.kow@gmail.com>
* Run ssh/scp/sftp quietly.
This is useful for silencing Putty, and could also be for OpenSSH should
we decide to stop redirecting to /dev/null.
|
msg4711 (view) |
Author: kowey |
Date: 2008-05-15.12:13:01 |
|
Resolved in unstable by my patch... (seems our auto-resolver is broken)
Wed May 14 14:55:04 BST 2008 Eric Kow <E.Y.Kow@brighton.ac.uk>
* Resolve issue845: Pass ssh's stderr to our stderr.
This may have the side effect that users get *a lot* of scp output dumped
on their screen, but false 'hanging' that Zooko reported seems like the
greater evil. Note that darcs transfer-mode is not affected by this, so
the only users that would see the extra output are those who are interacting
with servers that don't have darcs 2 installed.
|
msg5853 (view) |
Author: zooko |
Date: 2008-08-31.21:16:34 |
|
This change seems have been reverted by
http://allmydata.org/trac/darcs-2/changeset/6017
Maybe a good compromise would be to filter out certain normal ssh stderr
messages that we don't want to see, but pass through all unrecognized ones?
|
msg5856 (view) |
Author: kowey |
Date: 2008-09-01.09:22:45 |
|
So, now if users experience weird hanging over ssh (because putty is asking the
user something) we can at least tell them to try darcs --debug
But I guess Zooko's solution would be ideal (sigh).
Or we pass along PuTTY's stderr, but not that of any other ssh.
Or PuTTY stops putting its prompts on stderr
Or we stop using PuTTY
|
msg5870 (view) |
Author: zooko |
Date: 2008-09-01.11:47:29 |
|
What are the messages that ssh puts on stderr that we don't want to show to the
user?
I just experimented with ssh a bit, both with and without a "known_hosts" entry
for the host, and I didn't get any messages on stderr.
|
msg5871 (view) |
Author: kowey |
Date: 2008-09-01.11:54:42 |
|
On Mon, Sep 01, 2008 at 11:47:36 -0000, Zooko wrote:
> What are the messages that ssh puts on stderr that we don't want to show to the
> user?
scp errors fetching a non-existent _darcs/prefs/format (non-essential
file)
|
msg5872 (view) |
Author: zooko |
Date: 2008-09-01.11:56:23 |
|
I don't think it is a good strategy to let users experience weird hangs (because
the ssh client is blocked asking the user something), and then hope that the
user will come find the darcs developers and ask them for advice, or will try to
use the darcs "--debug" flag.
I'm hoping that droundy made this change because he wasn't aware that it causes
darcs to mysteriously hang in some situations -- making darcs mysteriously hang
doesn't seem like the kind of thing that he likes to do, even in order to make
the stderr friendlier.
By the way, I don't think that this is limited to putty. Although there are no
notes on this ticket showing that it has happened with openssh, I seem to
remember that new users frequently have the problem of darcs hanging because
their underlying ssh isn't configured properly.
See related tickets:, issue334, issue219, issue218, issue325, issue1028,
issue29, issue28
See also: http://wiki.darcs.net/DarcsWiki/SSHNotes
|
msg5880 (view) |
Author: kowey |
Date: 2008-09-02.07:35:10 |
|
On Mon, Sep 01, 2008 at 11:56:30 -0000, Zooko wrote:
> I don't think it is a good strategy to let users experience weird hangs (because
> the ssh client is blocked asking the user something), and then hope that the
> user will come find the darcs developers and ask them for advice, or will try to
> use the darcs "--debug" flag.
Fair enough. I think we need to either go back to passing stderr
through or trying to capture the err output and filtering out what we
are familiar with.
> By the way, I don't think that this is limited to putty. Although
> there are no notes on this ticket showing that it has happened with
> openssh, I seem to remember that new users frequently have the problem
> of darcs hanging because their underlying ssh isn't configured
> properly.
So far I have only seen this particular behaviour with PutTTY.
The OpenSSH hanging was genuine, and was due to a bug in their control
master feature.
Otherwise, OpenSSH has the virtue of writing directly to terminal (I
only say this because I tried ssh example.com 2> foo and still got
output)
> See related tickets:, issue334, issue219, issue218, issue325, issue1028,
> issue29, issue28
>
> See also: http://wiki.darcs.net/DarcsWiki/SSHNotes
Those notes were for diagnosing the ControlMaster problem.
|
msg5901 (view) |
Author: kowey |
Date: 2008-09-04.11:42:54 |
|
On Mon, Sep 01, 2008 at 11:56:30 -0000, Zooko wrote:
> I don't think it is a good strategy to let users experience weird hangs (because
> the ssh client is blocked asking the user something), and then hope that the
> user will come find the darcs developers and ask them for advice, or will try to
> use the darcs "--debug" flag.
Ok, Zooko, I think I know what may be the right way to fix this, and I
think I want you to do it (*)!
In src/Exec.lhs, there is type called Redirect
data Redirect = AsIs | Null | File FilePath | Stdout
deriving Show
I think we could extend it to
data Redirect = AsIs | Null | File FilePath | Stdout
| Filter (String -> String) Redirect
deriving Show
If you don't know what I'm getting at, ask #darcs for help.
(*) You've been one of our most productive issue submitters so far,
for which thanks. But I think what would make you even more useful
is to upgrade you into the kind of issue submitter that sends patches
for some N% of his issues! I realise you may not be a Haskeller, but
I think this falls into ProbablyEasy territory.
|
msg6367 (view) |
Author: zooko |
Date: 2008-10-21.13:02:49 |
|
(Adding Nosy: droundy)
Folks, I just hit this issue again -- upgraded to darcs-2.1.0 on a Windows
computer, tried to "darcs get" from another computer, and it silently hung.
Eventually I realized that it was waiting for something, killed it, constructed
an equivalent ssh commandline (which, note, is normally never done from this
windows computer to that server -- it has to be done only in order to debug
darcs and it has to be done using the ssh executable that darcs invokes, which
is not necessarily the one that "ssh" invokes), learned that the host key or IP
address has changed so I have to approve yes/no to continue, and then I could go
back to using darcs.
Until I implement the nice filtering described in this ticket, which will
exclude the specific noisy lines that we don't want but lets through prompts and
unexpected error messages and so forth, could we err on the side of noisiness
instead of on the side of silently hanging?
|
msg6368 (view) |
Author: kowey |
Date: 2008-10-21.13:06:03 |
|
As a compromise with Zooko's interim measure, we could usually output ssh
warnings, and suppress them when people do darcs --quiet
|
msg6369 (view) |
Author: zooko |
Date: 2008-10-21.13:38:00 |
|
> > What are the messages that ssh puts on stderr that we don't want to show to the
> > user?
> scp errors fetching a non-existent _darcs/prefs/format (non-essential
Does this happen only if the server is running darcs earlier than 2.0? (I
thought if both server and client were darcs-2, then it would use the
darcs-protocol-over-ssh instead of using scp.)
|
msg6370 (view) |
Author: droundy |
Date: 2008-10-21.14:05:18 |
|
Maybe we should make this windows-specific behavior, since ssh prompts
just fine on posix machines?
David
|
msg6371 (view) |
Author: zooko |
Date: 2008-10-21.15:35:21 |
|
On Oct 21, 2008, at 8:05 AM, David Roundy wrote:
> Maybe we should make this windows-specific behavior, since ssh prompts
> just fine on posix machines?
I thought that something similar could happen on unix, but I don't
recall an instance of it actually happening. I'll ask Brian Warner
(who originally reported this issue to me, and who almost never uses
Windows) about it.
It is probably a lot more common Windows, for various reasons,
including the fact that Windows users are less likely to use ssh
directly on a frequent basis, and the fact that some common
installations of darcs on Windows have a separate (putty) ssh for
darcs than the one that the user actually normal uses (e.g. cygwin ssh).
So, in short, +1 on passing stdout/stderr from ssh through on Windows.
By the way, I'm still not clear on what noisy I-didn't-need-to-see-
that messages we will actually see, with modern darcs >= 2.0.0 on the
server...
Regards,
Zooko
|
msg6372 (view) |
Author: droundy |
Date: 2008-10-21.17:03:37 |
|
On Tue, Oct 21, 2008 at 09:34:02AM -0600, zooko wrote:
> By the way, I'm still not clear on what noisy
> I-didn't-need-to-see-that messages we will actually see, with modern
> darcs >= 2.0.0 on the server...
I think it's more common to see ugly messages without darcs-2 on the
server, but it was enough to scare users like SPJ...
David
|
msg7941 (view) |
Author: zooko |
Date: 2009-07-09.22:15:14 |
|
Here's a user report of how darcs's behavior of hiding all ssh output from the
user caused a problem for the user:
http://lists.osuosl.org/pipermail/darcs-users/2009-July/020374.html
|
msg8526 (view) |
Author: kowey |
Date: 2009-08-27.01:50:44 |
|
We need to fix this.
I proposed a rough strategy in msg5901 based on some kind of fine-grained
filtering where we only pass through stuff we don't already recognise as noise.
If that's not going to be feasible, we should at least the last resort option of
being stderr noisy on Windows so people don't get mysterious hangs.
It'd be a good idea to check the Exec, External and SSH modules to figure out
what's going on right now.
|
msg10117 (view) |
Author: kowey |
Date: 2010-03-04.14:21:31 |
|
I think this bit some folks on Haskell Cafe recently.
http://www.haskell.org/pipermail/haskell-cafe/2010-March/074055.html
Now that we've got this program of picking out nice ProbablyEasy bugs
(for new Darcs hackers) to work on during hacking sprints, I nominate
this one for ZuriHac.
|
msg14660 (view) |
Author: JeffFoster |
Date: 2011-08-14.13:06:55 |
|
Removing the probably easy tag.
The problem with filtering the messages is that the only access to the
output of the external program is through a Handle type. This is
opaque, so it's difficult to filter.
We experimented by using createProcess in conjunction with CreatePipe.
The basic idea is simple:
applySomeFilter :: (String -> String) -> IO ()
applySomeFilter f = do
(_,Just hout,_,_) <- createProcess (proc "cat" ["/dev/zero"]){
std_out = CreatePipe }
readWrite hout stdout f
readWrite :: Handle -> Handle -> (String -> String) -> IO ()
readWrite from to f = do
x <- hGetContents from
hPutStr to (f x)
However, it gets very complicated in the general case. For example,
what if putty/scp goes mad and outputs exceedingly long lines or binary
content?
Perhaps the easiest way forward is to pass through binary content, and
assume that text input is less than N characters per line. This should
make it possible to filter out particular lines.
|
msg14939 (view) |
Author: noreply |
Date: 2012-01-01.17:01:50 |
|
The following patch sent by Eric Kow <kowey@darcs.net> updated issue issue845 with
status=has-patch
* Resolve issue845: pass ssh stderr through.
Ignore-this: 95fb98b084b3c09a360fa99e61099c25
There does not seem to be any reason to hide it, as we are using
the -q flag in pscp.
|
msg14964 (view) |
Author: noreply |
Date: 2012-01-05.23:28:40 |
|
The following patch sent by Eric Kow <kowey@darcs.net> updated issue issue845 with
status=resolved;resolvedin=2.8.0 HEAD
* Resolve issue845: pass ssh stderr through.
Ignore-this: 95fb98b084b3c09a360fa99e61099c25
There does not seem to be any reason to hide it, as we are using
the -q flag in pscp.
|
|
Date |
User |
Action |
Args |
2008-05-14 13:38:11 | zooko | create | |
2008-05-14 13:48:33 | kowey | link | issue846 superseder |
2008-05-14 13:50:35 | kowey | set | status: unread -> unknown priority: feature title: pass through stderr from ssh -> pass through stderr from ssh (because ssh prompts can block) nosy:
+ wglozer, eivuokko, rgm, kowey, jaredj messages:
+ msg4684 topic:
+ Windows, SSH, FauxBug assignedto: kowey |
2008-05-14 13:52:32 | kowey | set | status: unknown -> has-patch nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, rgm, jaredj |
2008-05-14 13:55:36 | kowey | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, rgm, jaredj messages:
+ msg4685 |
2008-05-14 13:56:43 | zooko | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, rgm, jaredj messages:
+ msg4686 |
2008-05-14 14:02:12 | kowey | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, rgm, jaredj messages:
+ msg4689 |
2008-05-15 12:13:12 | kowey | set | status: has-patch -> resolved-in-unstable nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, rgm, jaredj messages:
+ msg4711 |
2008-05-15 13:48:23 | rgm | set | nosy:
- rgm |
2008-05-19 15:35:05 | kowey | link | issue866 superseder |
2008-08-31 21:16:42 | zooko | set | status: resolved-in-unstable -> has-patch nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5853 |
2008-09-01 09:22:53 | kowey | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5856 |
2008-09-01 11:47:36 | zooko | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5870 |
2008-09-01 11:54:44 | kowey | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5871 |
2008-09-01 11:56:30 | zooko | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5872 |
2008-09-02 07:35:12 | kowey | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5880 |
2008-09-02 07:36:40 | kowey | set | status: has-patch -> needs-reproduction nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj assignedto: kowey -> title: pass through stderr from ssh (because ssh prompts can block) -> wish: pass through and filter stderr from ssh (because ssh prompts can block) |
2008-09-04 11:42:57 | kowey | set | nosy:
tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, jaredj messages:
+ msg5901 title: wish: pass through and filter stderr from ssh (because ssh prompts can block) -> pass through stderr from ssh (because ssh prompts can block) |
2008-10-21 13:02:58 | zooko | set | nosy:
+ dmitry.kurochkin, droundy, simon, thorkilnaur messages:
+ msg6367 |
2008-10-21 13:06:10 | kowey | set | nosy:
droundy, tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, simon, thorkilnaur, jaredj, dmitry.kurochkin messages:
+ msg6368 |
2008-10-21 13:38:07 | zooko | set | nosy:
droundy, tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, simon, thorkilnaur, jaredj, dmitry.kurochkin messages:
+ msg6369 |
2008-10-21 14:05:20 | droundy | set | nosy:
droundy, tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, simon, thorkilnaur, jaredj, dmitry.kurochkin messages:
+ msg6370 |
2008-10-21 15:35:24 | zooko | set | nosy:
droundy, tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, simon, thorkilnaur, jaredj, dmitry.kurochkin messages:
+ msg6371 |
2008-10-21 17:03:40 | droundy | set | nosy:
droundy, tommy, beschmi, kowey, wglozer, zooko, eivuokko, dagit, simon, thorkilnaur, jaredj, dmitry.kurochkin messages:
+ msg6372 |
2009-07-09 22:15:22 | zooko | set | nosy:
+ kirby messages:
+ msg7941 |
2009-07-10 10:33:28 | droundy | set | nosy:
- droundy |
2009-08-06 21:04:29 | admin | set | nosy:
- beschmi |
2009-08-11 00:13:02 | admin | set | nosy:
- dagit |
2009-08-25 17:31:38 | admin | set | nosy:
+ darcs-devel, - simon |
2009-08-27 01:50:51 | kowey | set | status: needs-reproduction -> needs-implementation nosy:
tommy, kowey, wglozer, darcs-devel, zooko, eivuokko, thorkilnaur, jaredj, dmitry.kurochkin, kirby topic:
+ Target-2.4, - FauxBug messages:
+ msg8526 |
2009-08-27 14:34:00 | admin | set | nosy:
tommy, kowey, wglozer, darcs-devel, zooko, eivuokko, thorkilnaur, jaredj, dmitry.kurochkin, kirby |
2009-09-14 10:52:33 | kowey | set | topic:
+ Target-2.5, - Target-2.4 nosy:
tommy, kowey, wglozer, darcs-devel, zooko, eivuokko, thorkilnaur, jaredj, dmitry.kurochkin, kirby |
2010-03-04 14:21:40 | kowey | set | topic:
+ ProbablyEasy nosy:
+ uzytkownik messages:
+ msg10117 |
2010-06-15 20:51:57 | admin | set | milestone: 2.5.0 |
2010-06-15 20:59:18 | admin | set | topic:
- Target-2.5 |
2010-07-25 14:34:15 | tux_rocker | set | milestone: 2.5.0 -> 2.8.0 |
2010-09-09 18:59:42 | kowey | set | nosy:
- darcs-devel |
2011-08-14 13:06:57 | JeffFoster | set | topic:
- ProbablyEasy messages:
+ msg14660 |
2012-01-01 17:01:50 | noreply | set | status: needs-implementation -> has-patch messages:
+ msg14939 |
2012-01-05 23:28:41 | noreply | set | status: has-patch -> resolved messages:
+ msg14964 resolvedin: 2.8.0 |
|