GNU bug report logs - #44942
28.0.50; Emacs should print a backtrace on uncaught errors in batch mode

Previous Next

Package: emacs;

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

Date: Sun, 29 Nov 2020 10:48:02 UTC

Severity: normal

Found in version 28.0.50

Done: Philipp Stephani <p.stephani2 <at> gmail.com>

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 44942 in the body.
You can then email your comments to 44942 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#44942; Package emacs. (Sun, 29 Nov 2020 10:48: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. (Sun, 29 Nov 2020 10:48: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: 28.0.50; Emacs should print a backtrace on uncaught errors in batch
 mode
Date: Sun, 29 Nov 2020 11:47:45 +0100
$ emacs -Q -batch -eval '(progn (defun foo () (error "Boo")) (foo))'
Boo

Emacs should print a backtrace here to make it possible to debug such
errors.  It's possible to force Emacs to print a backtrace by binding
`debug-on-error', however, that is incorrect because it changes the
meaning of `with-demoted-errors' and `condition-case-unless-debug',
causing code that would normally work to fail with an error.  Instead,
`signal' should print a backtrace if in batch mode and if it jumps to
the top-level error handler.  It looks like this logic could be
special-cased in signal_or_quit, similar to the debugger logic.


In GNU Emacs 28.0.50 (build 138, x86_64-pc-linux-gnu, GTK+ Version 3.24.22, cairo version 1.16.0)
 of 2020-11-28
Repository revision: a7825c4be06b7c0b544df34555ecf586276245e6
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
System Description: Debian GNU/Linux rodete

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

Configured features:
XPM JPEG TIFF GIF PNG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY
LIBSELINUX GNUTLS FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS GTK3 X11
XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER

Important settings:
  value of $LANG: en_US.utf8
  value of $XMODIFIERS: @im=ibus
  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
  blink-cursor-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 dired dired-loaddefs rfc822
mml easymenu mml-sec epa epg epg-config gnus-util rmail rmail-loaddefs
time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils phst skeleton derived edmacro kmacro pcase ffap
thingatpt url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util url-parse auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json map url-vars
mailcap rx gnutls puny dbus xml subr-x seq byte-opt gv bytecomp
byte-compile cconv compile text-property-search comint ansi-color ring
cl-loaddefs cl-lib 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 tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer 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
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 69693 6335)
 (symbols 48 8576 1)
 (strings 32 24393 1275)
 (string-bytes 1 790267)
 (vectors 16 13891)
 (vector-slots 8 188843 5960)
 (floats 8 26 30)
 (intervals 56 212 0)
 (buffers 984 11))

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

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

Diese E-Mail ist vertraulich.  Falls Sie diese fälschlicherweise erhalten haben
sollten, leiten Sie diese bitte nicht an jemand anderes weiter, löschen Sie
alle Kopien und Anhänge davon und lassen Sie mich bitte wissen, dass die E-Mail
an die falsche Person gesendet wurde.

This e-mail is confidential.  If you received this communication by mistake,
please don’t forward it to anyone else, please erase all copies and
attachments, and please let me know that it has gone to the wrong person.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Sun, 29 Nov 2020 15:28:01 GMT) Full text and rfc822 format available.

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

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Sun, 29 Nov 2020 16:27:04 +0100
[Message part 1 (text/plain, inline)]
Am So., 29. Nov. 2020 um 11:48 Uhr schrieb Philipp Stephani
<p.stephani2 <at> gmail.com>:
>
>
> $ emacs -Q -batch -eval '(progn (defun foo () (error "Boo")) (foo))'
> Boo
>
> Emacs should print a backtrace here to make it possible to debug such
> errors.  It's possible to force Emacs to print a backtrace by binding
> `debug-on-error', however, that is incorrect because it changes the
> meaning of `with-demoted-errors' and `condition-case-unless-debug',
> causing code that would normally work to fail with an error.  Instead,
> `signal' should print a backtrace if in batch mode and if it jumps to
> the top-level error handler.  It looks like this logic could be
> special-cased in signal_or_quit, similar to the debugger logic.
>


I've attached a patch.
[0001-Print-a-backtrace-on-unhandled-errors-in-batch-mode-.patch (text/x-patch, attachment)]

Reply sent to Philipp Stephani <p.stephani2 <at> gmail.com>:
You have taken responsibility. (Sun, 06 Dec 2020 16:51:01 GMT) Full text and rfc822 format available.

Notification sent to Philipp Stephani <p.stephani2 <at> gmail.com>:
bug acknowledged by developer. (Sun, 06 Dec 2020 16:51:01 GMT) Full text and rfc822 format available.

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

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: 44942-done <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Sun, 6 Dec 2020 17:50:17 +0100
Am So., 29. Nov. 2020 um 16:27 Uhr schrieb Philipp Stephani
<p.stephani2 <at> gmail.com>:
>
> Am So., 29. Nov. 2020 um 11:48 Uhr schrieb Philipp Stephani
> <p.stephani2 <at> gmail.com>:
> >
> >
> > $ emacs -Q -batch -eval '(progn (defun foo () (error "Boo")) (foo))'
> > Boo
> >
> > Emacs should print a backtrace here to make it possible to debug such
> > errors.  It's possible to force Emacs to print a backtrace by binding
> > `debug-on-error', however, that is incorrect because it changes the
> > meaning of `with-demoted-errors' and `condition-case-unless-debug',
> > causing code that would normally work to fail with an error.  Instead,
> > `signal' should print a backtrace if in batch mode and if it jumps to
> > the top-level error handler.  It looks like this logic could be
> > special-cased in signal_or_quit, similar to the debugger logic.
> >
>
>
> I've attached a patch.

Pushed to master as commit 40e11743ca.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Sun, 06 Dec 2020 17:01:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Sun, 06 Dec 2020 18:59:55 +0200
> From: Philipp Stephani <p.stephani2 <at> gmail.com>
> Date: Sun, 6 Dec 2020 17:50:17 +0100
> 
> Am So., 29. Nov. 2020 um 16:27 Uhr schrieb Philipp Stephani
> <p.stephani2 <at> gmail.com>:
> >
> > Am So., 29. Nov. 2020 um 11:48 Uhr schrieb Philipp Stephani
> > <p.stephani2 <at> gmail.com>:
> > >
> > >
> > > $ emacs -Q -batch -eval '(progn (defun foo () (error "Boo")) (foo))'
> > > Boo
> > >
> > > Emacs should print a backtrace here to make it possible to debug such
> > > errors.  It's possible to force Emacs to print a backtrace by binding
> > > `debug-on-error', however, that is incorrect because it changes the
> > > meaning of `with-demoted-errors' and `condition-case-unless-debug',
> > > causing code that would normally work to fail with an error.  Instead,
> > > `signal' should print a backtrace if in batch mode and if it jumps to
> > > the top-level error handler.  It looks like this logic could be
> > > special-cased in signal_or_quit, similar to the debugger logic.
> > >
> >
> > I've attached a patch.
> 
> Pushed to master as commit 40e11743ca.

This is an incompatible change.  Is there a way to get back previous
behavior?  If so, please mention that in NEWS; if not, let's please
provide a way to get back the old behavior.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Mon, 07 Dec 2020 10:30:02 GMT) Full text and rfc822 format available.

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

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Mon, 7 Dec 2020 11:29:16 +0100
Am So., 6. Dez. 2020 um 18:00 Uhr schrieb Eli Zaretskii <eliz <at> gnu.org>:
>
> > From: Philipp Stephani <p.stephani2 <at> gmail.com>
> > Date: Sun, 6 Dec 2020 17:50:17 +0100
> >
> > Am So., 29. Nov. 2020 um 16:27 Uhr schrieb Philipp Stephani
> > <p.stephani2 <at> gmail.com>:
> > >
> > > Am So., 29. Nov. 2020 um 11:48 Uhr schrieb Philipp Stephani
> > > <p.stephani2 <at> gmail.com>:
> > > >
> > > >
> > > > $ emacs -Q -batch -eval '(progn (defun foo () (error "Boo")) (foo))'
> > > > Boo
> > > >
> > > > Emacs should print a backtrace here to make it possible to debug such
> > > > errors.  It's possible to force Emacs to print a backtrace by binding
> > > > `debug-on-error', however, that is incorrect because it changes the
> > > > meaning of `with-demoted-errors' and `condition-case-unless-debug',
> > > > causing code that would normally work to fail with an error.  Instead,
> > > > `signal' should print a backtrace if in batch mode and if it jumps to
> > > > the top-level error handler.  It looks like this logic could be
> > > > special-cased in signal_or_quit, similar to the debugger logic.
> > > >
> > >
> > > I've attached a patch.
> >
> > Pushed to master as commit 40e11743ca.
>
> This is an incompatible change.

Is it? In other words, do we guarantee that no stack trace is being
printed if debug-on-error is nil? I'd say that parsing error messages
is brittle anyway, and we're not obliged to provide stable output.

>  Is there a way to get back previous
> behavior?  If so, please mention that in NEWS; if not, let's please
> provide a way to get back the old behavior.

I'd be OK adding a variable for this, but on the other hand I'm not
really convinced that this is really a breaking change (see above).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Mon, 07 Dec 2020 10:43:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50;
 Emacs should print a backtrace on uncaught errors in batch mode
Date: Mon, 07 Dec 2020 12:42:14 +0200
On December 7, 2020 12:29:16 PM GMT+02:00, Philipp Stephani <p.stephani2 <at> gmail.com> wrote:
> Am So., 6. Dez. 2020 um 18:00 Uhr schrieb Eli Zaretskii
> <eliz <at> gnu.org>:
> >
> > > From: Philipp Stephani <p.stephani2 <at> gmail.com>
> > > Date: Sun, 6 Dec 2020 17:50:17 +0100
> > >
> > > Am So., 29. Nov. 2020 um 16:27 Uhr schrieb Philipp Stephani
> > > <p.stephani2 <at> gmail.com>:
> > > >
> > > Pushed to master as commit 40e11743ca.
> >
> > This is an incompatible change.
> 
> Is it? In other words, do we guarantee that no stack trace is being
> printed if debug-on-error is nil? I'd say that parsing error messages
> is brittle anyway, and we're not obliged to provide stable output

The behavior did change.  Since Emacs doesn't have a formal spec  its long-time behavior is a de-facto standard we should strive hard not to break.  As Stefan just pointed out, this change already broke 2 tests  if we need any proof.

> >  Is there a way to get back previous
> > behavior?  If so, please mention that in NEWS; if not, let's please
> > provide a way to get back the old behavior.
> 
> I'd be OK adding a variable for this, but on the other hand I'm not
> really convinced that this is really a breaking change (see above).

Yes, we do need to be able to get back the old bdhavior.






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Mon, 07 Dec 2020 11:09:01 GMT) Full text and rfc822 format available.

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

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Mon, 7 Dec 2020 12:07:48 +0100
Am Mo., 7. Dez. 2020 um 11:42 Uhr schrieb Eli Zaretskii <eliz <at> gnu.org>:
>
> On December 7, 2020 12:29:16 PM GMT+02:00, Philipp Stephani <p.stephani2 <at> gmail.com> wrote:
> > Am So., 6. Dez. 2020 um 18:00 Uhr schrieb Eli Zaretskii
> > <eliz <at> gnu.org>:
> > >
> > > > From: Philipp Stephani <p.stephani2 <at> gmail.com>
> > > > Date: Sun, 6 Dec 2020 17:50:17 +0100
> > > >
> > > > Am So., 29. Nov. 2020 um 16:27 Uhr schrieb Philipp Stephani
> > > > <p.stephani2 <at> gmail.com>:
> > > > >
> > > > Pushed to master as commit 40e11743ca.
> > >
> > > This is an incompatible change.
> >
> > Is it? In other words, do we guarantee that no stack trace is being
> > printed if debug-on-error is nil? I'd say that parsing error messages
> > is brittle anyway, and we're not obliged to provide stable output
>
> The behavior did change.  Since Emacs doesn't have a formal spec  its long-time behavior is a de-facto standard we should strive hard not to break.  As Stefan just pointed out, this change already broke 2 tests  if we need any proof.
>
> > >  Is there a way to get back previous
> > > behavior?  If so, please mention that in NEWS; if not, let's please
> > > provide a way to get back the old behavior.
> >
> > I'd be OK adding a variable for this, but on the other hand I'm not
> > really convinced that this is really a breaking change (see above).
>
> Yes, we do need to be able to get back the old bdhavior.

Fair enough, I've added a new boolean variable for this.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Mon, 07 Dec 2020 15:08:01 GMT) Full text and rfc822 format available.

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

From: Mattias Engdegård <mattiase <at> acm.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>, Eli Zaretskii <eliz <at> gnu.org>
Cc: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught 
 errors in batch mode 
Date: Mon, 7 Dec 2020 16:07:42 +0100
This is a fine and welcome improvement, thank you! Perhaps it needn't say 'Debugger entered' though? It's a bit misleading and not really true from the user's point of view.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Mon, 07 Dec 2020 15:31:01 GMT) Full text and rfc822 format available.

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

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Mattias Engdegård <mattiase <at> acm.org>
Cc: 44942 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Mon, 7 Dec 2020 16:29:52 +0100
Am Mo., 7. Dez. 2020 um 16:07 Uhr schrieb Mattias Engdegård <mattiase <at> acm.org>:
>
> This is a fine and welcome improvement, thank you! Perhaps it needn't say 'Debugger entered' though? It's a bit misleading and not really true from the user's point of view.
>

Yes, that would be great :-)
Unfortunately I haven't found a trivial way to separate the
backtrace-printing that `debug' does from its other actions, but I'm
planning to take a second look at the debug.el code.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#44942; Package emacs. (Mon, 07 Dec 2020 15:46:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 44942 <at> debbugs.gnu.org
Subject: Re: bug#44942: 28.0.50; Emacs should print a backtrace on uncaught
 errors in batch mode
Date: Mon, 07 Dec 2020 17:45:33 +0200
> From: Philipp Stephani <p.stephani2 <at> gmail.com>
> Date: Mon, 7 Dec 2020 12:07:48 +0100
> Cc: 44942 <at> debbugs.gnu.org
> 
> > Yes, we do need to be able to get back the old bdhavior.
> 
> Fair enough, I've added a new boolean variable for this.

Thank you.




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

This bug report was last modified 3 years and 106 days ago.

Previous Next


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