unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
@ 2021-02-27 18:17 Glenn Morris
  2021-02-27 18:34 ` Basil L. Contovounesios
  2021-02-27 18:44 ` Eli Zaretskii
  0 siblings, 2 replies; 15+ messages in thread
From: Glenn Morris @ 2021-02-27 18:17 UTC (permalink / raw)
  To: 46818

Package: emacs
Version: 28.0.50

When building in a completely clean tree (new checkout or make extraclean)
at rev a4d7235f1a, I see the following errors when building the leim files:

  GEN      ../lisp/language/pinyin.el
  GEN      ../lisp/leim/leim-list.el
Eager macro-expansion failure: (error "Variable binding depth exceeds
  max-specpdl-size")

  [...]
  INFO     Processing OKURI-NASI entries...done
  Eager macro-expansion failure: (error "Variable binding depth exceeds
  max-specpdl-size")

These issues don't seem to be present at rev 6bf56a; ref
https://hydra.nixos.org/build/137524247





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 18:17 bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size Glenn Morris
@ 2021-02-27 18:34 ` Basil L. Contovounesios
  2021-02-27 20:55   ` Stefan Monnier
  2021-02-27 18:44 ` Eli Zaretskii
  1 sibling, 1 reply; 15+ messages in thread
From: Basil L. Contovounesios @ 2021-02-27 18:34 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Stefan Monnier, 46818

Glenn Morris <rgm@gnu.org> writes:

> When building in a completely clean tree (new checkout or make extraclean)
> at rev a4d7235f1a, I see the following errors when building the leim files:
>
>   GEN      ../lisp/language/pinyin.el
>   GEN      ../lisp/leim/leim-list.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds
>   max-specpdl-size")
>
>   [...]
>   INFO     Processing OKURI-NASI entries...done
>   Eager macro-expansion failure: (error "Variable binding depth exceeds
>   max-specpdl-size")
>
> These issues don't seem to be present at rev 6bf56a; ref
> https://hydra.nixos.org/build/137524247

I see them with 'make bootstrap', and I think they started with:

* lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings
a350ae058c 2021-02-26 20:24:52 -0500
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a350ae058caedcb7be7d332564817954e3624e60

-- 
Basil





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 18:17 bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size Glenn Morris
  2021-02-27 18:34 ` Basil L. Contovounesios
@ 2021-02-27 18:44 ` Eli Zaretskii
  2021-02-27 18:50   ` Basil L. Contovounesios
  1 sibling, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2021-02-27 18:44 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 46818

> From: Glenn Morris <rgm@gnu.org>
> Date: Sat, 27 Feb 2021 13:17:54 -0500
> 
>   GEN      ../lisp/language/pinyin.el
>   GEN      ../lisp/leim/leim-list.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds
>   max-specpdl-size")
> 
>   [...]
>   INFO     Processing OKURI-NASI entries...done
>   Eager macro-expansion failure: (error "Variable binding depth exceeds
>   max-specpdl-size")
> 
> These issues don't seem to be present at rev 6bf56a; ref
> https://hydra.nixos.org/build/137524247

You are saying that 6bf56a broke bootstrap?  I'd be surprised.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 18:44 ` Eli Zaretskii
@ 2021-02-27 18:50   ` Basil L. Contovounesios
  2021-02-27 18:51     ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Basil L. Contovounesios @ 2021-02-27 18:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Glenn Morris, 46818

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Glenn Morris <rgm@gnu.org>
>> Date: Sat, 27 Feb 2021 13:17:54 -0500
>> 
>>   GEN      ../lisp/language/pinyin.el
>>   GEN      ../lisp/leim/leim-list.el
>> Eager macro-expansion failure: (error "Variable binding depth exceeds
>>   max-specpdl-size")
>> 
>>   [...]
>>   INFO     Processing OKURI-NASI entries...done
>>   Eager macro-expansion failure: (error "Variable binding depth exceeds
>>   max-specpdl-size")
>> 
>> These issues don't seem to be present at rev 6bf56a; ref
>> https://hydra.nixos.org/build/137524247
>
> You are saying that 6bf56a broke bootstrap?  I'd be surprised.

No, Glenn's saying the opposite, that 6bf56a (among other revisions) is
free of the eager macro-expansion failure.

-- 
Basil





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 18:50   ` Basil L. Contovounesios
@ 2021-02-27 18:51     ` Eli Zaretskii
  0 siblings, 0 replies; 15+ messages in thread
From: Eli Zaretskii @ 2021-02-27 18:51 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: rgm, 46818

> From: "Basil L. Contovounesios" <contovob@tcd.ie>
> Cc: Glenn Morris <rgm@gnu.org>,  46818@debbugs.gnu.org
> Date: Sat, 27 Feb 2021 18:50:04 +0000
> 
> >> These issues don't seem to be present at rev 6bf56a; ref
> >> https://hydra.nixos.org/build/137524247
> >
> > You are saying that 6bf56a broke bootstrap?  I'd be surprised.
> 
> No, Glenn's saying the opposite, that 6bf56a (among other revisions) is
> free of the eager macro-expansion failure.

Sorry for my misunderstanding.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 18:34 ` Basil L. Contovounesios
@ 2021-02-27 20:55   ` Stefan Monnier
  2021-02-27 21:03     ` Stefan Monnier
  0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier @ 2021-02-27 20:55 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: Glenn Morris, 46818

> I see them with 'make bootstrap', and I think they started with:
>
> * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings
> a350ae058c 2021-02-26 20:24:52 -0500
> https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a350ae058caedcb7be7d332564817954e3624e60

I can't reproduce it here, neither with `make bootstrap` nor after `make
extraclean`.  Any chance that a5ad6747c9da238bd2bcd335b9744ce9f4972ff1
fixed it?


        Stefan






^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 20:55   ` Stefan Monnier
@ 2021-02-27 21:03     ` Stefan Monnier
  2021-02-28  0:01       ` Basil L. Contovounesios
  2021-02-28  0:02       ` Stefan Monnier
  0 siblings, 2 replies; 15+ messages in thread
From: Stefan Monnier @ 2021-02-27 21:03 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: Glenn Morris, 46818

>> I see them with 'make bootstrap', and I think they started with:
>>
>> * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings
>> a350ae058c 2021-02-26 20:24:52 -0500
>> https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a350ae058caedcb7be7d332564817954e3624e60
>
> I can't reproduce it here, neither with `make bootstrap` nor after `make
> extraclean`.  Any chance that a5ad6747c9da238bd2bcd335b9744ce9f4972ff1
> fixed it?

Oh, wait, no, I see it now, so it's clearly not fixed,


        Stefan






^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 21:03     ` Stefan Monnier
@ 2021-02-28  0:01       ` Basil L. Contovounesios
  2021-02-28  0:02       ` Stefan Monnier
  1 sibling, 0 replies; 15+ messages in thread
From: Basil L. Contovounesios @ 2021-02-28  0:01 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Glenn Morris, 46818

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Oh, wait, no, I see it now, so it's clearly not fixed,

With 'make bootstrap' it happens only once, after GENing leim-list.el,
but after 'git clean -dfx' it happens a few more times after that:

  ...
  GEN      ../lisp/leim/leim-list.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../lisp/leim/ja-dic/ja-dic.el
  INFO     Processing OKURI-ARI entries
  INFO     Processing POSTFIX entries
  INFO     Processing PREFIX entries
  ...
  INFO     Collecting OKURI-NASI entries...done
  ...
  INFO     Processing OKURI-NASI entries...done
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
make[3]: Leaving directory '/home/blc/.local/src/emacs/leim'
make -C ../admin/grammars all EMACS="../../src/bootstrap-emacs"
make[3]: Entering directory '/home/blc/.local/src/emacs/admin/grammars'
  GEN      ../../lisp/cedet/semantic/bovine/c-by.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/bovine/make-by.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/bovine/scm-by.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/wisent/javat-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/wisent/js-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/wisent/python-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/srecode/srt-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  ...

-- 
Basil





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-27 21:03     ` Stefan Monnier
  2021-02-28  0:01       ` Basil L. Contovounesios
@ 2021-02-28  0:02       ` Stefan Monnier
  2021-02-28  0:22         ` Basil L. Contovounesios
                           ` (2 more replies)
  1 sibling, 3 replies; 15+ messages in thread
From: Stefan Monnier @ 2021-02-28  0:02 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: Glenn Morris, 46818

>>> I see them with 'make bootstrap', and I think they started with:
>>> * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warnings
>>> a350ae058c 2021-02-26 20:24:52 -0500
>>> https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a350ae058caedcb7be7d332564817954e3624e60
>>
>> I can't reproduce it here, neither with `make bootstrap` nor after `make
>> extraclean`.  Any chance that a5ad6747c9da238bd2bcd335b9744ce9f4972ff1
>> fixed it?
> Oh, wait, no, I see it now, so it's clearly not fixed,

It's a fleeting thing, fairly delicate to catch.
I can now reproduce it and it seems that it's just a "slightly too deep"
recursion when `quail-update-leim-list-file` calls `find-file-noselect`
which ends up loading `vc-git` which in turn loads `diff-mode` and
where the macroexpansion of some pcase macros hits the limit.

I suspect (but have not been able to confirm) that it might be due to the
change in `pcase--if` where we now return `(progn (ignore ,test) ,then)`
instead of just `then`, which causes the macroexpansion of `pcase-let`s
to be slightly more deeply nested.

Then again, I had to increase max_specpdl_size from 1600 to 1740 to get
past that problem, which seems like a higher impact than what I expect
from this little change in `pcase--if`.

In any case, rather than bump the pdl limit, I suggest the patch below,
which completely avoids the need to macroexpand all that code we won't
be using anyway.


        Stefan


diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index e4bdf50f52..a3685b564d 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1312,8 +1312,13 @@ update-leim-list-functions
 
 (defun update-leim-list-file (&rest dirs)
   "Update LEIM list file in directories DIRS."
-  (dolist (function update-leim-list-functions)
-    (apply function dirs)))
+  ;; bug#46818: This `let'-binding is not indispensable, but
+  ;; it reduces the recursion depth during bootstrap (at which
+  ;; point some of the core ELisp files haven't been byte-compiled
+  ;; yet, which causes deeper-than-normal recursion).
+  (let ((vc-handled-backends nil))
+    (dolist (function update-leim-list-functions)
+      (apply function dirs))))
 
 (defvar-local current-input-method nil
   "The current input method for multilingual text.






^ permalink raw reply related	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-28  0:02       ` Stefan Monnier
@ 2021-02-28  0:22         ` Basil L. Contovounesios
  2021-02-28  0:51           ` Stefan Monnier
  2021-02-28  2:31         ` Glenn Morris
  2021-02-28  3:42         ` Eli Zaretskii
  2 siblings, 1 reply; 15+ messages in thread
From: Basil L. Contovounesios @ 2021-02-28  0:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Glenn Morris, 46818

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> In any case, rather than bump the pdl limit, I suggest the patch below,
> which completely avoids the need to macroexpand all that code we won't
> be using anyway.

Works here, thanks,

-- 
Basil





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-28  0:22         ` Basil L. Contovounesios
@ 2021-02-28  0:51           ` Stefan Monnier
  2021-02-28  2:18             ` Basil L. Contovounesios
  0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier @ 2021-02-28  0:51 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: Glenn Morris, 46818

>> In any case, rather than bump the pdl limit, I suggest the patch below,
>> which completely avoids the need to macroexpand all that code we won't
>> be using anyway.
> Works here, thanks,

It's really strange that it also fixes the eager macroexpansion errors
you're seeing in

  GEN      ../../lisp/cedet/semantic/bovine/c-by.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/bovine/make-by.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/bovine/scm-by.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/wisent/javat-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/wisent/js-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/semantic/wisent/python-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
  GEN      ../../lisp/cedet/srecode/srt-wy.el
Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")


-- Stefan






^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-28  0:51           ` Stefan Monnier
@ 2021-02-28  2:18             ` Basil L. Contovounesios
  0 siblings, 0 replies; 15+ messages in thread
From: Basil L. Contovounesios @ 2021-02-28  2:18 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Glenn Morris, 46818

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> In any case, rather than bump the pdl limit, I suggest the patch below,
>>> which completely avoids the need to macroexpand all that code we won't
>>> be using anyway.
>> Works here, thanks,
>
> It's really strange that it also fixes the eager macroexpansion errors
> you're seeing in
>
>   GEN      ../../lisp/cedet/semantic/bovine/c-by.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
>   GEN      ../../lisp/cedet/semantic/bovine/make-by.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
>   GEN      ../../lisp/cedet/semantic/bovine/scm-by.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
>   GEN      ../../lisp/cedet/semantic/wisent/javat-wy.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
>   GEN      ../../lisp/cedet/semantic/wisent/js-wy.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
>   GEN      ../../lisp/cedet/semantic/wisent/python-wy.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")
>   GEN      ../../lisp/cedet/srecode/srt-wy.el
> Eager macro-expansion failure: (error "Variable binding depth exceeds max-specpdl-size")

Oops, sorry, forgot to 'git clean'.  These are of course still with us.

-- 
Basil





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-28  0:02       ` Stefan Monnier
  2021-02-28  0:22         ` Basil L. Contovounesios
@ 2021-02-28  2:31         ` Glenn Morris
  2021-02-28  3:42         ` Eli Zaretskii
  2 siblings, 0 replies; 15+ messages in thread
From: Glenn Morris @ 2021-02-28  2:31 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Basil L. Contovounesios, 46818

Stefan Monnier wrote:

> It's a fleeting thing, fairly delicate to catch.

I enjoyed this poetic turn. :)

> +  (let ((vc-handled-backends nil))

This reminds me that locally I add
  --eval '(setq vc-handled-backends nil)'
to EMACSOPT in eg lisp/Makefile.in.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
  2021-02-28  0:02       ` Stefan Monnier
  2021-02-28  0:22         ` Basil L. Contovounesios
  2021-02-28  2:31         ` Glenn Morris
@ 2021-02-28  3:42         ` Eli Zaretskii
       [not found]           ` <87wnusnx0n.fsf@gnus.org>
  2 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2021-02-28  3:42 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: contovob, rgm, 46818

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Sat, 27 Feb 2021 19:02:13 -0500
> Cc: Glenn Morris <rgm@gnu.org>, 46818@debbugs.gnu.org
> 
> Then again, I had to increase max_specpdl_size from 1600 to 1740 to get
> past that problem, which seems like a higher impact than what I expect
> from this little change in `pcase--if`.
> 
> In any case, rather than bump the pdl limit, I suggest the patch below,
> which completely avoids the need to macroexpand all that code we won't
> be using anyway.

I'd rather increase the pdl limit.  Having code that subtly evades
using our normal machinery sounds a maintenance headache in the long
run.

Thanks.





^ permalink raw reply	[flat|nested] 15+ messages in thread

* bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size
       [not found]           ` <87wnusnx0n.fsf@gnus.org>
@ 2021-03-01 17:02             ` Stefan Monnier
  0 siblings, 0 replies; 15+ messages in thread
From: Stefan Monnier @ 2021-03-01 17:02 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: contovob, rgm, 46818-done

>>> In any case, rather than bump the pdl limit, I suggest the patch below,
>>> which completely avoids the need to macroexpand all that code we won't
>>> be using anyway.
>> I'd rather increase the pdl limit.  Having code that subtly evades
>> using our normal machinery sounds a maintenance headache in the long
>> run.
> I agree with Eli here -- increasing the pdl limit here certainly sounds
> like a less subtle fix.

OK, I've done that now, thanks,


        Stefan






^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-03-01 17:02 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-27 18:17 bug#46818: leim bootstrap: Variable binding depth exceeds max-specpdl-size Glenn Morris
2021-02-27 18:34 ` Basil L. Contovounesios
2021-02-27 20:55   ` Stefan Monnier
2021-02-27 21:03     ` Stefan Monnier
2021-02-28  0:01       ` Basil L. Contovounesios
2021-02-28  0:02       ` Stefan Monnier
2021-02-28  0:22         ` Basil L. Contovounesios
2021-02-28  0:51           ` Stefan Monnier
2021-02-28  2:18             ` Basil L. Contovounesios
2021-02-28  2:31         ` Glenn Morris
2021-02-28  3:42         ` Eli Zaretskii
     [not found]           ` <87wnusnx0n.fsf@gnus.org>
2021-03-01 17:02             ` Stefan Monnier
2021-02-27 18:44 ` Eli Zaretskii
2021-02-27 18:50   ` Basil L. Contovounesios
2021-02-27 18:51     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).