From: Alan Mackenzie <acm@muc.de>
To: "Basil L. Contovounesios" <contovob@tcd.ie>
Cc: "Mattias Engdegård" <mattiase@acm.org>,
58601@debbugs.gnu.org,
"Stefan Monnier" <monnier@iro.umontreal.ca>
Subject: bug#58601: 29.0.50; Infinite loop in byte-compile--first-symbol-with-pos
Date: Tue, 18 Oct 2022 15:01:49 +0000 [thread overview]
Message-ID: <Y06/3V4bAByADcz0@ACM> (raw)
In-Reply-To: <8735bm6nl9.fsf@tcd.ie>
Hello, Basil.
On Tue, Oct 18, 2022 at 02:24:02 +0300, Basil L. Contovounesios wrote:
> Given this sample input file:
[ .... ]
> Byte-compiling it as follows hangs indefinitely:
> emacs -Q -batch -f batch-byte-compile my.el
> While it's hanging, might as well poke it:
> pkill -f 'batch-byte-compile my\.el' -SIGUSR2
> To which it yields the following backtrace:
[ .... ]
> I.e. the 'pure' compile-time form has a cycle, and the DFS of
> byte-compile--first-symbol-with-pos gets lost.
What's a DFS?
> Paraphrasing Stefan, it's acceptable if the compiler mishandles
> circular source code, but it should be able to handle circular data.
The problem here seems to be feeding macroexp-warn-and-return with data
as the FORM argument. FORM is intended only to be an executable lisp
form. The doc string, perhaps, could be clearer on this.
> I don't know why, but I can reproduce the hang only when the form is inside
> ert-deftest+should, and not inside a plain defun.
There is a huge concentration of "advanced" features inside those ~20
lines of Lisp code. There's eval-and-compile, nconc, a compiler-macro,
and ert. ;-)
> Perhaps byte-compile--first-symbol-with-pos needs to employ something
> like byte-run--ssp-seen? Or does ERT somehow come into play?
It wouldn't be difficult, just tedious, to add checking for circular
lists into byte-compile--first-symbol-with-pos. But a circular list is
an invalid argument for FORM in macorexp-warn-and-return, see above.
There are surely lots of places in Emacs where feeding a circular list as
an argument to a function will cause a hang.
At the moment, I'm not in favour of doing anything here. I don't think
there's a bug.
> Thanks,
> --
> Basil
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2022-10-18 15:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-17 23:24 bug#58601: 29.0.50; Infinite loop in byte-compile--first-symbol-with-pos Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-18 14:51 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-18 16:33 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-18 19:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-18 15:01 ` Alan Mackenzie [this message]
2022-10-18 16:18 ` dick
2022-10-18 16:34 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-18 17:06 ` Alan Mackenzie
2022-10-18 17:39 ` dick
2022-10-18 19:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-19 8:52 ` Alan Mackenzie
2022-10-19 12:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-21 10:57 ` Mattias Engdegård
2022-10-21 10:47 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-21 10:47 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y06/3V4bAByADcz0@ACM \
--to=acm@muc.de \
--cc=58601@debbugs.gnu.org \
--cc=contovob@tcd.ie \
--cc=mattiase@acm.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).