Subject: bug#65622: closed (Re: bug#65622: Inappropriate suppression of backtrace on an error)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 20 Sep 2023 15:56:02 +0000

Your bug report

#65622: Inappropriate suppression of backtrace on an error

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
65622: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65622
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#65622: Inappropriate suppression of backtrace on an error
From: Alan Mackenzie <[email-masked]>
To: Michael Heerdegen <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Wed, 20 Sep 2023 15:55:37 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello, Michael.

The bug is now fixed.

On Thu, Aug 31, 2023 at 01:16:42 +0200, Michael Heerdegen wrote:
> Alan Mackenzie <[email-masked]> writes:

> > Hello, Emacs.
> > (v) Set debug-on-error to t with M-: (setq debug-on-error t).
> > (vi) Repeat (iv).  This throws the same error, without a backtrace.  This
> >   lack of a backtrace is a bug.

> I think you just need (setq eval-expression-debug-on-error t).

> Stumbled over the same issue ... yesterday?, or so.  Also when debugging
> Edebug.

> Maybe people would like debug-on-error -> t taking precedence over
> eval-expression-debug-on-error -> nil?  The danger is they turn both off
> by default and then forget about the second one.

> Michael.

-- 
Alan Mackenzie (Nuremberg, Germany).

Subject: Inappropriate suppression of backtrace on an error
From: Alan Mackenzie <[email-masked]>
To: [email-masked]
Date: Wed, 30 Aug 2023 13:08:26 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello, Emacs.

On a recent master branch Emacs:
(i) emacs -Q
(ii) Insert the following into *scratch*:

(defmacro hash-if (condition then-form &rest else-forms)
  "A conditional compilation macro analogous to C's #if.
Evaluate CONDITION at macro-expansion time.  If it is non-nil,
expand the macro to THEN-FORM.  Otherwise expand it to ELSE-FORMS
enclosed in a `progn' form.  ELSE-FORMS may be empty."
  (declare (indent 2)
           (debug (form sexp &rest sexp)))
  (if (eval condition lexical-binding)
      then-form
    (cons 'progn else-forms)))

(defun foo (bar)
  (hash-if (< emacs-major-version 19)
      (car bar)
    (cons bar bar)))

(iii) Evaluate hash-if by putting point after it and doing C-x C-e.
(iv) Attempt to instrument foo for edebug by putting point inside foo and
  doing C-u C-M-x.  This throws the error: "Ignoring macroexpansion
  error: (void-function edebug-after)".
(v) Set debug-on-error to t with M-: (setq debug-on-error t).
(vi) Repeat (iv).  This throws the same error, without a backtrace.  This
  lack of a backtrace is a bug.
(vii) This backtrace is almost certainly being suppressed by a frivolous
  condition-case, whose main purpose appears to be making debugging more
  difficult.  ;-)
(viii) There would appear to be no justification for "ignoring" the error
  (void-function edebug-after).  Such error should not occur, and needs
  debugging.

-- 
Alan Mackenzie (Nuremberg, Germany).