GNU bug report logs - #31497
27.0.50; vc-hg doesn't separate standard error from standard output

Previous Next

Package: emacs;

Reported by: Philipp Stephani <p.stephani2 <at> gmail.com>

Date: Fri, 18 May 2018 17:43:01 UTC

Severity: minor

Tags: fixed

Found in version 27.0.50

Fixed in version 27.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 31497 in the body.
You can then email your comments to 31497 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Fri, 18 May 2018 17:43:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Philipp Stephani <p.stephani2 <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 18 May 2018 17:43:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; vc-hg doesn't separate standard error from standard output
Date: Fri, 18 May 2018 19:42:15 +0200
Create a Mercurial repository owned by root and add a hgrc file, e.g.:

$ mkdir -p /tmp/hg
$ cd /tmp/hg
$ sudo -s
# hg init
# echo a > a.txt
# hg addremove
# hg commit -m 'commit message'
# touch .hg/hgrc

Then visit a.txt in Emacs as non-root:

$ emacs -Q a.txt

Instead of the revision number, the status line will show
"Hg-not trusting file /tmp/hg/.hg/hgrc ..."

This is because the status line runs something like

$ hg log -l 1 -r . -T '{rev}'

but that outputs

  not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
  not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root

on stderr, and Emacs merges stderr and stdout.  Rather it should ignore
stderr in this case.


In GNU Emacs 27.0.50 (build 27, x86_64-pc-linux-gnu, GTK+ Version 3.22.24)
 of 2018-05-18 built on localhost
Repository revision: f4d9fd3dd45f767eca33fbf1beee40da790fa74e
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Debian GNU/Linux buster/sid

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Configured using:
 'configure --without-threads --enable-gcc-warnings=warn-only
 --enable-gtk-deprecation-warnings --without-pop --with-mailutils
 --enable-checking --enable-check-lisp-object-type --with-modules
 'CFLAGS=-O0 -ggdb3''

Configured features:
XPM JPEG TIFF GIF PNG SOUND DBUS GSETTINGS NOTIFY GNUTLS FREETYPE XFT
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES JSON

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny seq byte-opt gv
bytecomp byte-compile cconv dired dired-loaddefs format-spec rfc822 mml
easymenu mml-sec password-cache epa derived epg epg-config gnus-util
rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date elec-pair
mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 95054 11969)
 (symbols 48 20166 1)
 (miscs 40 40 122)
 (strings 32 28302 2388)
 (string-bytes 1 758914)
 (vectors 16 14177)
 (vector-slots 8 499094 14196)
 (floats 8 48 69)
 (intervals 56 222 0)
 (buffers 992 12))

-- 
Google Germany GmbH
Erika-Mann-Straße 33
80636 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado

If you received this communication by mistake, please don’t forward it to
anyone else (it may contain confidential or privileged information), please
erase all copies of it, including all attachments, and please let the sender
know it went to the wrong person.  Thanks.




Severity set to 'minor' from 'normal' Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Tue, 29 May 2018 22:53:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Wed, 09 Oct 2019 21:58:02 GMT) Full text and rfc822 format available.

Message #10 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 31497 <at> debbugs.gnu.org
Subject: Re: bug#31497: 27.0.50; vc-hg doesn't separate standard error from
 standard output
Date: Wed, 09 Oct 2019 23:57:15 +0200
Philipp Stephani <p.stephani2 <at> gmail.com> writes:

> Create a Mercurial repository owned by root and add a hgrc file, e.g.:
>
> $ mkdir -p /tmp/hg
> $ cd /tmp/hg
> $ sudo -s
> # hg init
> # echo a > a.txt
> # hg addremove
> # hg commit -m 'commit message'
> # touch .hg/hgrc
>
> Then visit a.txt in Emacs as non-root:
>
> $ emacs -Q a.txt
>
> Instead of the revision number, the status line will show
> "Hg-not trusting file /tmp/hg/.hg/hgrc ..."
>
> This is because the status line runs something like
>
> $ hg log -l 1 -r . -T '{rev}'
>
> but that outputs
>
>   not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
>   not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
>
> on stderr, and Emacs merges stderr and stdout.  Rather it should ignore
> stderr in this case.

I can confirm that this bug is still present in Emacs 27.  The command
is started from vc-doc-command, which uses start-file-process, which
uses start-process, which doesn't even allow separating stderr from
stdin.

(In general, Emacs stderr/stdin handling is very frustrating.)

Would it make sense to alter this function

(defun vc-hg--run-log (template rev path)
  (ignore-errors
    (with-output-to-string
      (if path
          (vc-hg-command
           standard-output 0 nil
           "log" "-f" "-l1" "--template" template path)
        (vc-hg-command
         standard-output 0 nil
         "log" "-r" rev "-l1" "--template" template)))))

to filter out the "not trusting" lines, or is this just one of a
gazillion error messages that can be output here?

not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
4d872e

I though perhaps we could redirect the error output with "-E", but "hg
log" doesn't seem to support that.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Thu, 10 Oct 2019 07:31:02 GMT) Full text and rfc822 format available.

Message #13 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: p.stephani2 <at> gmail.com, 31497 <at> debbugs.gnu.org
Subject: Re: bug#31497: 27.0.50;
 vc-hg doesn't separate standard error from standard output
Date: Thu, 10 Oct 2019 10:30:26 +0300
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Date: Wed, 09 Oct 2019 23:57:15 +0200
> Cc: 31497 <at> debbugs.gnu.org
> 
> I can confirm that this bug is still present in Emacs 27.  The command
> is started from vc-doc-command, which uses start-file-process, which
> uses start-process, which doesn't even allow separating stderr from
> stdin.
> 
> (In general, Emacs stderr/stdin handling is very frustrating.)

From the doc string of start-process:

  If you want to separate standard output from standard error, use
  ‘make-process’ or invoke the command through a shell and redirect
  one of them using the shell syntax.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Thu, 10 Oct 2019 11:12:02 GMT) Full text and rfc822 format available.

Message #16 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
To: larsi <at> gnus.org
Cc: bug-gnu-emacs <at> gnu.org
Subject: bug#31497: 27.0.50; vc-hg doesn't separate standard error from
 standard output
Date: Thu, 10 Oct 2019 14:11:45 +0300
Lars Ingebrigtsen writes:

>> $ hg log -l 1 -r . -T '{rev}'
>>
>> but that outputs
>>
>> not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root 
>> not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
>
> filter out the "not trusting" lines, or is this just one of a
> gazillion error messages that can be output here?

Other errors also printed to stderr, so filtering out stderr completely
can hide meaningful errors.

This particular warning is also present in log and annotate buffers and
completely messing up vc-dir buffer.

There are option 'ui.report_untrusted' in hg since this commit:
https://www.mercurial-scm.org/repo/hg/rev/97369f6a6bb6

It present in mercurial 2.6.2, the earliest version I found in pip.

To filter out just "not trusting" warning I can propose to run hg like
this:
hg log --config ui.report_untrusted=0 -l 1 -r . -T '{rev}'

or specify '--config ui.report_untrusted=0' as default value for
vc-hg-global-switches

I think 'pull' and 'push' are the only commands that must print this
warning.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Fri, 11 Oct 2019 07:28:01 GMT) Full text and rfc822 format available.

Message #19 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: p.stephani2 <at> gmail.com, 31497 <at> debbugs.gnu.org
Subject: Re: bug#31497: 27.0.50; vc-hg doesn't separate standard error from
 standard output
Date: Fri, 11 Oct 2019 09:27:43 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> I can confirm that this bug is still present in Emacs 27.  The command
>> is started from vc-doc-command, which uses start-file-process, which
>> uses start-process, which doesn't even allow separating stderr from
>> stdin.
>> 
>> (In general, Emacs stderr/stdin handling is very frustrating.)
>
>>From the doc string of start-process:
>
>   If you want to separate standard output from standard error, use
>   ‘make-process’ or invoke the command through a shell and redirect
>   one of them using the shell syntax.

Yes, I think start-file-process and start-process should also provide
the same stderr capabilities as make-process.  Those two functions are
handy, but lead to sloppy handling of stderr.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Mon, 14 Oct 2019 23:55:02 GMT) Full text and rfc822 format available.

Message #22 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: 31497 <at> debbugs.gnu.org
Subject: [Andrii Kolomoiets] bug#31497: 27.0.50; vc-hg doesn't separate
 standard error from standard output
Date: Tue, 15 Oct 2019 01:54:07 +0200
-------------------- Start of forwarded message --------------------
From: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
Subject: bug#31497: 27.0.50; vc-hg doesn't separate standard error from
 standard output
Date: Thu, 10 Oct 2019 14:11:45 +0300
Cc: bug-gnu-emacs <at> gnu.org
To: larsi <at> gnus.org

Lars Ingebrigtsen writes:

>> $ hg log -l 1 -r . -T '{rev}'
>>
>> but that outputs
>>
>> not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root 
>> not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
>
> filter out the "not trusting" lines, or is this just one of a
> gazillion error messages that can be output here?

Other errors also printed to stderr, so filtering out stderr completely
can hide meaningful errors.

This particular warning is also present in log and annotate buffers and
completely messing up vc-dir buffer.

There are option 'ui.report_untrusted' in hg since this commit:
https://www.mercurial-scm.org/repo/hg/rev/97369f6a6bb6

It present in mercurial 2.6.2, the earliest version I found in pip.

To filter out just "not trusting" warning I can propose to run hg like
this:
hg log --config ui.report_untrusted=0 -l 1 -r . -T '{rev}'

or specify '--config ui.report_untrusted=0' as default value for
vc-hg-global-switches

I think 'pull' and 'push' are the only commands that must print this
warning.
-------------------- End of forwarded message --------------------

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Tue, 15 Oct 2019 00:35:01 GMT) Full text and rfc822 format available.

Message #25 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: 31497 <at> debbugs.gnu.org
Cc: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
Subject: Re: bug#31497: [Andrii Kolomoiets] bug#31497: 27.0.50; vc-hg
 doesn't separate standard error from standard output
Date: Tue, 15 Oct 2019 02:33:55 +0200
(Please keep the debbugs address in the Cc list -- otherwise the bug
tracker won't get the message.)

>>> not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root 
>>> not trusting file /tmp/hg/.hg/hgrc from untrusted user root, group root
>>
>> filter out the "not trusting" lines, or is this just one of a
>> gazillion error messages that can be output here?
>
> Other errors also printed to stderr, so filtering out stderr completely
> can hide meaningful errors.
>
> This particular warning is also present in log and annotate buffers and
> completely messing up vc-dir buffer.
>
> There are option 'ui.report_untrusted' in hg since this commit:
> https://www.mercurial-scm.org/repo/hg/rev/97369f6a6bb6

So that's 2007, so it should presumably be safe to add that.

> It present in mercurial 2.6.2, the earliest version I found in pip.
>
> To filter out just "not trusting" warning I can propose to run hg like
> this:
> hg log --config ui.report_untrusted=0 -l 1 -r . -T '{rev}'

Could you propose a patch that adds this?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Wed, 16 Oct 2019 07:33:02 GMT) Full text and rfc822 format available.

Message #28 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 31497 <at> debbugs.gnu.org
Subject: Re: bug#31497: [Andrii Kolomoiets] bug#31497: 27.0.50; vc-hg doesn't
 separate standard error from standard output
Date: Wed, 16 Oct 2019 10:32:39 +0300
[Message part 1 (text/plain, inline)]
On 15 Oct 2019, at 03:33, Lars Ingebrigtsen <larsi <at> gnus.org> wrote:
> 
> (Please keep the debbugs address in the Cc list -- otherwise the bug
> tracker won't get the message.)

My bad. I emailed with "reply via email to" button on "Mail Archives"
site (https://lists.gnu.org/archive/html/), didn't know what address
must be specified in Cc.

>> There are option 'ui.report_untrusted' in hg since this commit:
>> https://www.mercurial-scm.org/repo/hg/rev/97369f6a6bb6
> 
> So that's 2007, so it should presumably be safe to add that.
> 
>> It present in mercurial 2.6.2, the earliest version I found in pip.
>> 
>> To filter out just "not trusting" warning I can propose to run hg like
>> this:
>> hg log --config ui.report_untrusted=0 -l 1 -r . -T '{rev}'
> 
> Could you propose a patch that adds this?

Please see attached patch.
[hg-untrusted.patch (application/octet-stream, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31497; Package emacs. (Thu, 17 Oct 2019 02:27:02 GMT) Full text and rfc822 format available.

Message #31 received at 31497 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
Cc: 31497 <at> debbugs.gnu.org
Subject: Re: bug#31497: [Andrii Kolomoiets] bug#31497: 27.0.50; vc-hg
 doesn't separate standard error from standard output
Date: Thu, 17 Oct 2019 04:26:00 +0200
Andrii Kolomoiets <andreyk.mad <at> gmail.com> writes:

>> Could you propose a patch that adds this?
>
> Please see attached patch.

Thanks; applied to Emacs 27.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) fixed. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 17 Oct 2019 02:27:03 GMT) Full text and rfc822 format available.

bug marked as fixed in version 27.1, send any further explanations to 31497 <at> debbugs.gnu.org and Philipp Stephani <p.stephani2 <at> gmail.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 17 Oct 2019 02:27:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 14 Nov 2019 12:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 164 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.