Subject: bug#61000: emacs-28.2 hangs on displaying ill-formed python source

From: Yoichi Nakayama <[email-masked]>
Date: Sun, 22 Jan 2023 16:21:02 +0900

Hi,
I found Emacs-28.2 becomes inoperable (hangs at 100% CPU usage)
when displaying certain ill-formed Python source code.

How to reproduce:
(1) prepare python source file
https://raw.githubusercontent.com/sqlfluff/sqlfluff/6071b70ef6a46b19141495ee8d38b41b27750b2c/src/sqlfluff/dialects/dialect_snowflake.py
(2) open it by "emacs -Q dialect_snowflake.py"
(3) jump to line 767 by "M-g g 767 RET".
(4) remove closing triple quotes by "C-k"

class FunctionNameSegment(ansi.FunctionNameSegment):
    """Function name, including any prefix bits, e.g. project or schema.
    Overriding FunctionNameSegment to support Snowflake's IDENTIFIER
pseudo-function.
    """ <== remove this triple quote

I also verified the following:
* The problem doesn't occur with Emacs-28.1
* The problem doesn't occur when I load lisp/progmode/python.el
before 1b77362 between step (2) and (3).
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=1b7736277114bf91012b817a4e2557625b7340a5

> commit 1b7736277114bf91012b817a4e2557625b7340a5
> Author: Lars Ingebrigtsen <[email-masked]>
> Date:   Mon Apr 18 13:17:32 2022 +0200
>
>     Avoid hangs in python-mode with debug-on-error set
>
>     * lisp/progmodes/python.el (python-nav-end-of-statement): Avoid
>     using cl-assert here, because this is called from the font-lock
>     machinery, and if debug-on-error is set here, we'll hang Emacs
>     (bug#54996).
>
>     Do not merge to master.

Thanks,
-- 
Yoichi NAKAYAMA