You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Janus Weil <ja...@gcc.gnu.org> on 2010/03/03 15:06:08 UTC

missing error messages

Dear subversion team,

I noticed that recent svn releases fail to display many error messages.

Example: Doing "svn co svn+ssh://someone@gcc.gnu.org/svn/gcc/trunk
trunk" without having the proper ssh keys for user 'someone'. The svn
versions I tried were 1.6.3, 1.6.5 and 1.6.9. With 1.6.3 I get:

Permission denied (publickey,gssapi-with-mic).
svn: Network connection closed unexpectedly

But if I do the same with 1.6.5 or 1.6.9, the first line is missing
and I only get the rather nebulous message about the unexpected
closing of the network connection, without seeing the reason for that.

It's even worse if e.g. my private key has the wrong permissions for
some reason. In this case svn 1.6.3 displays a very bold warning:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '~/.ssh/id_dsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: ~/.ssh/id_dsa
Permission denied (publickey,gssapi-with-mic).
svn: Network connection closed unexpectedly

Again, with newer releases one only gets the last line, without any
chance of finding out what the problem is.

Is this a known bug?

Cheers,
Janus

Re: missing error messages

Posted by Stefan Sperling <st...@elego.de>.
On Sat, Mar 13, 2010 at 11:05:26AM +0100, Janus Weil wrote:
> Hi,
> 
> > Ping.
> 
> sorry about my long turnaround time.
> 
> 
> > Janus, would this make you happy?
> > Do you think this fix should go in?
> 
> Yes, this would make me happy :)

Great :)

> Actually I would prefer not to use "-q" by default in the first place.

Me too! But that would mean having ssh printing the message
"Terminated by signal 15." after every svn+ssh:// operation.
And that would confuse people even more :(

> But if this is absolutely necessary, then the next best thing is to
> warn the user about the gobbled error messages and tell him how to get
> back to the old behavior.

Right.

I'll commit the patch and propose it for backport to 1.6.x.

Thanks,
Stefan

Re: missing error messages

Posted by Janus Weil <ja...@gcc.gnu.org>.
Hi,

> Ping.

sorry about my long turnaround time.


> Janus, would this make you happy?
> Do you think this fix should go in?

Yes, this would make me happy :)

Actually I would prefer not to use "-q" by default in the first place.
But if this is absolutely necessary, then the next best thing is to
warn the user about the gobbled error messages and tell him how to get
back to the old behavior.

Thanks for your efforts,
Janus



> On Wed, Mar 03, 2010 at 05:08:41PM +0100, Stefan Sperling wrote:
>> On Wed, Mar 03, 2010 at 04:06:08PM +0100, Janus Weil wrote:
>> > Dear subversion team,
>> >
>> > I noticed that recent svn releases fail to display many error messages.
>> >
>> > Example: Doing "svn co svn+ssh://someone@gcc.gnu.org/svn/gcc/trunk
>> > trunk" without having the proper ssh keys for user 'someone'. The svn
>> > versions I tried were 1.6.3, 1.6.5 and 1.6.9. With 1.6.3 I get:
>> >
>> > Permission denied (publickey,gssapi-with-mic).
>> > svn: Network connection closed unexpectedly
>> >
>> > But if I do the same with 1.6.5 or 1.6.9, the first line is missing
>> > and I only get the rather nebulous message about the unexpected
>> > closing of the network connection, without seeing the reason for that.
>> >
>> > It's even worse if e.g. my private key has the wrong permissions for
>> > some reason. In this case svn 1.6.3 displays a very bold warning:
>> >
>> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>> > @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
>> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>> > Permissions 0755 for '~/.ssh/id_dsa' are too open.
>> > It is recommended that your private key files are NOT accessible by others.
>> > This private key will be ignored.
>> > bad permissions: ignore key: ~/.ssh/id_dsa
>> > Permission denied (publickey,gssapi-with-mic).
>> > svn: Network connection closed unexpectedly
>> >
>> > Again, with newer releases one only gets the last line, without any
>> > chance of finding out what the problem is.
>> >
>> > Is this a known bug?
>>
>> This is probably a side-effect of the fix for issue #2580 done in
>> Subversion 1.6.5. Since then, Subversion passes '-q' to ssh to avoid
>> the message 'Terminated by signal 15' being printed whenever ssh exists
>> upon being terminated by Subversion in a friendly manner.
>> This particular output from ssh would confuse users assuming the output
>> came from svn, and make them believe svn had crashed. Of course, '-q'
>> might also suppress some other messages printed by ssh, such as the
>> "unprotected key file" warning.
>>
>> I guess we should make the error message for svn+ssh connection failures
>> advise people to remove the '-q' flag from the ssh invocation in
>> ~/.subversion/config to debug SSH connection problems.
>> The patch below does this:
>>
>>   $ svn ls svn+ssh://svntest/
>>   svn: Unable to connect to a repository at URL 'svn+ssh://svntest'
>>   svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
>>   svn: Network connection closed unexpectedly
>>
>> (Above, 'svntest' is an SSH host alias to localhost with a port where nothing
>> is listening.)
>>
>> Do you think this would help?
>>
>> Stefan
>>
>>
>> Index: subversion/libsvn_ra_svn/client.c
>> ===================================================================
>> --- subversion/libsvn_ra_svn/client.c (revision 918491)
>> +++ subversion/libsvn_ra_svn/client.c (working copy)
>> @@ -463,6 +463,7 @@ static svn_error_t *make_tunnel(const char **args,
>>    apr_status_t status;
>>    apr_proc_t *proc;
>>    apr_procattr_t *attr;
>> +  svn_error_t *err;
>>
>>    status = apr_procattr_create(&attr, pool);
>>    if (status == APR_SUCCESS)
>> @@ -516,7 +517,15 @@ static svn_error_t *make_tunnel(const char **args,
>>
>>    /* Guard against dotfile output to stdout on the server. */
>>    *conn = svn_ra_svn_create_conn(NULL, proc->out, proc->in, pool);
>> -  SVN_ERR(svn_ra_svn_skip_leading_garbage(*conn, pool));
>> +  err = svn_ra_svn_skip_leading_garbage(*conn, pool);
>> +
>> +  if (err)
>> +    return svn_error_quick_wrap(
>> +             err,
>> +             _("To better debug SSH connection problems, remove the -q "
>> +               "option from 'ssh' in the [tunnels] section of your "
>> +               "Subversion configuration file."));
>> +
>>    return SVN_NO_ERROR;
>>  }
>>
>

Re: missing error messages

Posted by Stefan Sperling <st...@elego.de>.
Ping.

Janus, would this make you happy?
Do you think this fix should go in?

Stefan

On Wed, Mar 03, 2010 at 05:08:41PM +0100, Stefan Sperling wrote:
> On Wed, Mar 03, 2010 at 04:06:08PM +0100, Janus Weil wrote:
> > Dear subversion team,
> > 
> > I noticed that recent svn releases fail to display many error messages.
> > 
> > Example: Doing "svn co svn+ssh://someone@gcc.gnu.org/svn/gcc/trunk
> > trunk" without having the proper ssh keys for user 'someone'. The svn
> > versions I tried were 1.6.3, 1.6.5 and 1.6.9. With 1.6.3 I get:
> > 
> > Permission denied (publickey,gssapi-with-mic).
> > svn: Network connection closed unexpectedly
> > 
> > But if I do the same with 1.6.5 or 1.6.9, the first line is missing
> > and I only get the rather nebulous message about the unexpected
> > closing of the network connection, without seeing the reason for that.
> > 
> > It's even worse if e.g. my private key has the wrong permissions for
> > some reason. In this case svn 1.6.3 displays a very bold warning:
> > 
> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> > @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> > Permissions 0755 for '~/.ssh/id_dsa' are too open.
> > It is recommended that your private key files are NOT accessible by others.
> > This private key will be ignored.
> > bad permissions: ignore key: ~/.ssh/id_dsa
> > Permission denied (publickey,gssapi-with-mic).
> > svn: Network connection closed unexpectedly
> > 
> > Again, with newer releases one only gets the last line, without any
> > chance of finding out what the problem is.
> > 
> > Is this a known bug?
> 
> This is probably a side-effect of the fix for issue #2580 done in
> Subversion 1.6.5. Since then, Subversion passes '-q' to ssh to avoid
> the message 'Terminated by signal 15' being printed whenever ssh exists
> upon being terminated by Subversion in a friendly manner.
> This particular output from ssh would confuse users assuming the output
> came from svn, and make them believe svn had crashed. Of course, '-q'
> might also suppress some other messages printed by ssh, such as the
> "unprotected key file" warning.
> 
> I guess we should make the error message for svn+ssh connection failures
> advise people to remove the '-q' flag from the ssh invocation in
> ~/.subversion/config to debug SSH connection problems.
> The patch below does this:
> 
>   $ svn ls svn+ssh://svntest/ 
>   svn: Unable to connect to a repository at URL 'svn+ssh://svntest'
>   svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
>   svn: Network connection closed unexpectedly
> 
> (Above, 'svntest' is an SSH host alias to localhost with a port where nothing
> is listening.)
> 
> Do you think this would help?
> 
> Stefan
> 
> 
> Index: subversion/libsvn_ra_svn/client.c
> ===================================================================
> --- subversion/libsvn_ra_svn/client.c	(revision 918491)
> +++ subversion/libsvn_ra_svn/client.c	(working copy)
> @@ -463,6 +463,7 @@ static svn_error_t *make_tunnel(const char **args,
>    apr_status_t status;
>    apr_proc_t *proc;
>    apr_procattr_t *attr;
> +  svn_error_t *err;
>  
>    status = apr_procattr_create(&attr, pool);
>    if (status == APR_SUCCESS)
> @@ -516,7 +517,15 @@ static svn_error_t *make_tunnel(const char **args,
>  
>    /* Guard against dotfile output to stdout on the server. */
>    *conn = svn_ra_svn_create_conn(NULL, proc->out, proc->in, pool);
> -  SVN_ERR(svn_ra_svn_skip_leading_garbage(*conn, pool));
> +  err = svn_ra_svn_skip_leading_garbage(*conn, pool);
> +
> +  if (err)
> +    return svn_error_quick_wrap(
> +             err,
> +             _("To better debug SSH connection problems, remove the -q "
> +               "option from 'ssh' in the [tunnels] section of your "
> +               "Subversion configuration file."));
> +
>    return SVN_NO_ERROR;
>  }
>  

Re: missing error messages

Posted by Stefan Sperling <st...@elego.de>.
On Wed, Mar 03, 2010 at 04:06:08PM +0100, Janus Weil wrote:
> Dear subversion team,
> 
> I noticed that recent svn releases fail to display many error messages.
> 
> Example: Doing "svn co svn+ssh://someone@gcc.gnu.org/svn/gcc/trunk
> trunk" without having the proper ssh keys for user 'someone'. The svn
> versions I tried were 1.6.3, 1.6.5 and 1.6.9. With 1.6.3 I get:
> 
> Permission denied (publickey,gssapi-with-mic).
> svn: Network connection closed unexpectedly
> 
> But if I do the same with 1.6.5 or 1.6.9, the first line is missing
> and I only get the rather nebulous message about the unexpected
> closing of the network connection, without seeing the reason for that.
> 
> It's even worse if e.g. my private key has the wrong permissions for
> some reason. In this case svn 1.6.3 displays a very bold warning:
> 
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0755 for '~/.ssh/id_dsa' are too open.
> It is recommended that your private key files are NOT accessible by others.
> This private key will be ignored.
> bad permissions: ignore key: ~/.ssh/id_dsa
> Permission denied (publickey,gssapi-with-mic).
> svn: Network connection closed unexpectedly
> 
> Again, with newer releases one only gets the last line, without any
> chance of finding out what the problem is.
> 
> Is this a known bug?

This is probably a side-effect of the fix for issue #2580 done in
Subversion 1.6.5. Since then, Subversion passes '-q' to ssh to avoid
the message 'Terminated by signal 15' being printed whenever ssh exists
upon being terminated by Subversion in a friendly manner.
This particular output from ssh would confuse users assuming the output
came from svn, and make them believe svn had crashed. Of course, '-q'
might also suppress some other messages printed by ssh, such as the
"unprotected key file" warning.

I guess we should make the error message for svn+ssh connection failures
advise people to remove the '-q' flag from the ssh invocation in
~/.subversion/config to debug SSH connection problems.
The patch below does this:

  $ svn ls svn+ssh://svntest/ 
  svn: Unable to connect to a repository at URL 'svn+ssh://svntest'
  svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
  svn: Network connection closed unexpectedly

(Above, 'svntest' is an SSH host alias to localhost with a port where nothing
is listening.)

Do you think this would help?

Stefan


Index: subversion/libsvn_ra_svn/client.c
===================================================================
--- subversion/libsvn_ra_svn/client.c	(revision 918491)
+++ subversion/libsvn_ra_svn/client.c	(working copy)
@@ -463,6 +463,7 @@ static svn_error_t *make_tunnel(const char **args,
   apr_status_t status;
   apr_proc_t *proc;
   apr_procattr_t *attr;
+  svn_error_t *err;
 
   status = apr_procattr_create(&attr, pool);
   if (status == APR_SUCCESS)
@@ -516,7 +517,15 @@ static svn_error_t *make_tunnel(const char **args,
 
   /* Guard against dotfile output to stdout on the server. */
   *conn = svn_ra_svn_create_conn(NULL, proc->out, proc->in, pool);
-  SVN_ERR(svn_ra_svn_skip_leading_garbage(*conn, pool));
+  err = svn_ra_svn_skip_leading_garbage(*conn, pool);
+
+  if (err)
+    return svn_error_quick_wrap(
+             err,
+             _("To better debug SSH connection problems, remove the -q "
+               "option from 'ssh' in the [tunnels] section of your "
+               "Subversion configuration file."));
+
   return SVN_NO_ERROR;
 }