Subject: bug#61436: Emacs Freezing With Java Files

From: Jens Schmidt <[email-masked]>
Date: Tue, 10 Oct 2023 22:58:54 +0200

Jens Schmidt <[email-masked]> writes:

>   Ensure package "hyperbole" is installed.  (Its only role in this
>   issue seems to be a "background load generator", but I'm not 100%
>   sure here.)

The second part above is not true!  Hyperbole mode is the culprit,
unless proven otherwise.  Here is a 100%-freezing reproducer (with
P1.java as from the initial post):

------------------------- init.el -------------------------
(require 'package)
(add-to-list 'package-archives
	     '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives
	     '("gnu" . "https://elpa.gnu.org/packages/"))
(package-initialize)
;(setq hkey-init nil)
(hyperbole-mode 1)
------------------------- init.el -------------------------

Execute Emacs as:

  ./src/emacs -Q -l ~/tmp/init.el +181 ~/tmp/P1.java

That always freezes Emacs (29 and master) even before it has a chance to
display P1.java.  The freeze happens in function
`c-get-fallback-scan-pos', where the while loop inf-loops, BUT:

If you uncomment the line setting `hkey-init' to nil in init.el and
repeat: No freeze.

Not sure how to continue here - since this is a GNU ELPA package, it can
be further handled on Emacs debbugs, no?  Mats, Bob?

Disclaimer: I do not use Hyperbole as a regular user, I installed it
through `package-install' just for the purpose of this bug, as follows:

------------------------- snip -------------------------
Package hyperbole is installed.

     Status: Installed in ‘hyperbole-8.0.0/’. Delete
    Version: 8.0.0
     Commit: 4214716e06920a3e10db5811bd22a343ad6435d9
    Summary: GNU Hyperbole: The Everyday Hypertextual Information Manager
   Requires: emacs-27.0
    Website: https://www.gnu.org/software/hyperbole
   Keywords: comm convenience files frames hypermedia languages mail matching mouse multimedia outlines tools wp
 Maintainer: Bob Weiner <[email-masked]>, Mats Lidell <[email-masked]>
     Author: Bob Weiner
Other versions: 8.0.0 (gnu).
------------------------- snip -------------------------