GNU bug report logs - #52271
29.0.50; Infinite loop in `pixel-fill--fill-line'

Previous Next

Package: emacs;

Reported by: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>

Date: Sat, 4 Dec 2021 07:28:02 UTC

Severity: normal

Found in version 29.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 52271 in the body.
You can then email your comments to 52271 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#52271; Package emacs. (Sat, 04 Dec 2021 07:28:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 04 Dec 2021 07:28:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; Infinite loop in `pixel-fill--fill-line'
Date: Sat, 04 Dec 2021 16:26:37 +0900
(with-temp-buffer
  (require 'gnus-art)
  (set-fontset-font nil 'ascii "-*-DejaVu Sans Mono-*-12-*-*")
  (set-frame-width nil 80)
  (insert (propertize "Reply-To: \"no-reply\" <reply-fff01234567f890f-00_HTML-00000000-0000000-0000 <at> xxxxxxx.xxxxx.nn.ii>" 'face 'gnus-header))
  (goto-char (point-min))
  (pixel-fill-region (point) (point-max) (pixel-fill-width)))

Above simplified reproduce code never be returned from
`pixel-fill--fill-line'. The following is an annotated code by some
debug while reproducing.

    (while (not (eolp))  ; (eolp) => nil, (not ...) => t
      ;; We have to do some folding.  First find the first previous
      ;; point suitable for folding.
      (if (or (not (pixel-fill-find-fill-point (line-beginning-position)))
                  ; (pixel-fill-find-fill-point ...) => nil
	      (= (point) start))
	  ;; We had unbreakable text (for this width), so just go to
	  ;; the first space and carry on.
	  (progn
	    (beginning-of-line)
	    (skip-chars-forward " ")
	    (search-forward " " (line-end-position) 'move)))
      ;; Success; continue.
      (when (= (preceding-char) ?\s) ; (preceding-char) => 62, (= ...) => nil
	(delete-char -1))
      (unless (eobp) ; (eobp) => t
        (insert ?\n)
        (when (> indentation 0)
          (insert (propertize " " 'display
                              (list 'space :align-to (list indentation))))))
      (setq start (point)) ; (point) => 96
      (pixel-fill--goto-pixel width)))) ; width => 545, (point) => 95

Thanks.



In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0)
 of 2021-12-04 built on devron
Repository revision: be1359884f68a3c8f8041be5579e6c5268d42d9a
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux bookworm/sid

Configured using:
 'configure --with-x-toolkit=gtk3 --without-xim --with-imagemagick
 --with-wide-int --with-native-compilation --with-xinput2'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2
M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SOUND THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM
GTK3 ZLIB

Important settings:
  value of $LANG: ja_JP.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  gnus-undo-mode: t
  flycheck-pos-tip-mode: t
  global-flycheck-mode: t
  global-company-mode: t
  company-mode: t
  auto-insert-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  electric-pair-mode: t
  savehist-mode: t
  icomplete-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
/usr/local/share/emacs/site-lisp/git-modes/git-modes-autoloads hides /usr/local/share/emacs/site-lisp/elpa/git-modes-20211020.2306/git-modes-autoloads

Features:
(shadow bbdb-message mailalias emacsbug sendmail mule-util sort
gnus-cite shr-color color mm-archive mail-extr gnus-async gnus-bcklg
bbdb-gnus-aux qp gnus-ml disp-table hl-line elfeed-show elfeed-search
bookmark elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib
thingatpt avl-tree url-queue xml-query gnus-topic pp url-http url-gw
url-cache utf-7 epa-file gnutls network-stream nsm nnfolder bbdb-gnus
nnnil bbdb-mua spam spam-stat bbdb-com crm bbdb bbdb-site timezone
gnus-uu yenc gnus-demon gnus-delay gnus-draft gnus-agent gnus-srvr
gnus-score score-mode nnvirtual nntp gnus-cache gnus-msg gnus-art mm-uu
mml2015 mm-view mml-smime smime dig gnus-sum shr pixel-fill kinsoku svg
dom nndraft nnmh gnus-xoauth2 oauth2-ext plstore gnus-group gnus-undo
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
netrc nnoo parse-time iso8601 gnus-spec gnus-int gnus-range message
yank-media rmc puny rfc822 mml mml-sec epa derived epg rfc6068
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums time-date mail-utils mm-util
mail-prsvr wid-edit dired-aux dircolors-faces dired-x dired
dired-loaddefs company-yasnippet flyspell ispell server bbdb-loaddefs
auth-source-pass rfc-autoloads url-auth debian-autoloads
langtool-autoloads generic-x git-modes-autoloads flycheck-relint relint
compile text-property-search comint xr flycheck-pos-tip pos-tip flycheck
ansi-color find-func rx dash company-cscope company-oddmuse
company-keywords company-etags etags fileloop generator xref project
ring company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic
company-template company-bbdb company pcase autoinsert cl-extra
yasnippet help-mode elec-pair savehist browse-kill-ring delsel
tab-bar-session desktop frameset icomplete mozc-popup popup
mozc-im-indicater mozc-im advice mozc info package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars
seq gv subr-x byte-opt bytecomp byte-compile cconv cl-loaddefs cl-lib
japan-util iso-transl tooltip eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 396829 121763)
 (symbols 48 24976 7)
 (strings 32 200050 13106)
 (string-bytes 1 7537649)
 (vectors 16 91875)
 (vector-slots 8 1734585 70232)
 (floats 8 9633 409)
 (intervals 56 1788 826)
 (buffers 992 27))

-- 
OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#52271; Package emacs. (Sat, 04 Dec 2021 19:40:01 GMT) Full text and rfc822 format available.

Message #8 received at 52271 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp>
Cc: 52271 <at> debbugs.gnu.org
Subject: Re: bug#52271: 29.0.50; Infinite loop in `pixel-fill--fill-line'
Date: Sat, 04 Dec 2021 20:39:02 +0100
OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp> writes:

> (with-temp-buffer
>   (require 'gnus-art)
>   (set-fontset-font nil 'ascii "-*-DejaVu Sans Mono-*-12-*-*")
>   (set-frame-width nil 80)
>   (insert (propertize "Reply-To: \"no-reply\" <reply-fff01234567f890f-00_HTML-00000000-0000000-0000 <at> xxxxxxx.xxxxx.nn.ii>" 'face 'gnus-header))
>   (goto-char (point-min))
>   (pixel-fill-region (point) (point-max) (pixel-fill-width)))
>
> Above simplified reproduce code never be returned from
> `pixel-fill--fill-line'. The following is an annotated code by some
> debug while reproducing.

I think I've now fixed this in Emacs 29.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug marked as fixed in version 29.1, send any further explanations to 52271 <at> debbugs.gnu.org and OGAWA Hirofumi <hirofumi <at> mail.parknet.co.jp> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sat, 04 Dec 2021 19:40:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 02 Jan 2022 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 76 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.