GNU bug report logs - #19464
24.4; Customizing either scroll-step or scroll-conservatively makes Emacs hang up when calling set-window-vscroll with large values

Previous Next

Package: emacs;

Reported by: Vasilij Schneidermann <v.schneidermann <at> gmail.com>

Date: Mon, 29 Dec 2014 16:43:02 UTC

Severity: normal

Tags: moreinfo

Found in version 24.4

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 19464 in the body.
You can then email your comments to 19464 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#19464; Package emacs. (Mon, 29 Dec 2014 16:43:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Vasilij Schneidermann <v.schneidermann <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 29 Dec 2014 16:43:02 GMT) Full text and rfc822 format available.

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

From: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.4; Customizing either scroll-step or scroll-conservatively makes
 Emacs hang up when calling set-window-vscroll with large values
Date: Mon, 29 Dec 2014 17:42:35 +0100
[Message part 1 (text/plain, inline)]
I've been experimenting around to make Emacs scroll with pixel-level
precision and have soon discovered `set-window-vscroll' which allows one
to adjust the vertical scrolling of a window in pixel steps with its
fourth argument.  In an attempt to scroll further than a screenful, I
executed (set-window-vscroll nil 9000 t) which hung up Emacs.  Bisection
of my init file revealed that this issue doesn't happen with an
uncustomized Emacs and that it's sufficient to either customize
`scroll-step' to have a value of 1 or `scroll-conservatively' to have a
large value (which is a common hack to allow line-level scrolling).  Is
this interaction a bug?  If not, can it at the very least be documented
in the docstring of `set-window-vscroll'?



In GNU Emacs 24.4.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.14.3)
 of 2014-10-21 on bitzer.hoetzel.info
Windowing system distributor `The X.Org Foundation', version 11.0.11603000
System Description: Arch Linux

Configured using:
 `configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --with-x-toolkit=gtk3 --with-xft
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong
 --param=ssp-buffer-size=4' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro'

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
M-x r e p o <tab> <down-mouse-2> <mouse-2>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...

Load-path shadows:
/usr/share/emacs/site-lisp/SuperCollider/tree-widget hides
/usr/share/emacs/24.4/lisp/tree-widget

Features:
(shadow sort gnus-util mail-extr emacsbug message idna format-spec
rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util help-fns mail-prsvr mail-utils help-mode easymenu time-date
tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list
newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 74922 7762)
 (symbols 48 17669 0)
 (miscs 40 80 138)
 (strings 32 9343 4421)
 (string-bytes 1 257939)
 (vectors 16 9064)
 (vector-slots 8 385359 16597)
 (floats 8 65 302)
 (intervals 56 227 4)
 (buffers 960 13)
 (heap 1024 41177 904))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19464; Package emacs. (Mon, 26 Jan 2015 16:57:02 GMT) Full text and rfc822 format available.

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

From: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: 24.4; Customizing either scroll-step or scroll-conservatively
 makes Emacs hang up when calling set-window-vscroll with large values
Date: Mon, 26 Jan 2015 17:56:07 +0100
Bump.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19464; Package emacs. (Fri, 28 May 2021 01:45:02 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
Cc: 19464 <at> debbugs.gnu.org
Subject: Re: bug#19464: 24.4; Customizing either scroll-step or
 scroll-conservatively makes Emacs hang up when calling set-window-vscroll
 with large values
Date: Fri, 28 May 2021 03:43:49 +0200
Vasilij Schneidermann <v.schneidermann <at> gmail.com> writes:

> I've been experimenting around to make Emacs scroll with pixel-level
> precision and have soon discovered `set-window-vscroll' which allows one
> to adjust the vertical scrolling of a window in pixel steps with its
> fourth argument.  In an attempt to scroll further than a screenful, I
> executed (set-window-vscroll nil 9000 t) which hung up Emacs.  Bisection
> of my init file revealed that this issue doesn't happen with an
> uncustomized Emacs and that it's sufficient to either customize
> `scroll-step' to have a value of 1 or `scroll-conservatively' to have a
> large value (which is a common hack to allow line-level scrolling).

(I'm going through old bug reports that unfortunately got no response at
the time.)

I tried reproducing this with

emacs -Q and:

(progn
  (setq scroll-step 1)
  (set-window-vscroll nil 9000 t))

But I didn't get any hangs.  Are you still seeing this problem in more
recent Emacs versions?

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




Added tag(s) moreinfo. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Fri, 28 May 2021 01:45:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19464; Package emacs. (Mon, 31 May 2021 16:42:02 GMT) Full text and rfc822 format available.

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

From: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 19464 <at> debbugs.gnu.org
Subject: Re: bug#19464: 24.4; Customizing either scroll-step or
 scroll-conservatively makes Emacs hang up when calling set-window-vscroll
 with large values
Date: Mon, 31 May 2021 18:41:04 +0200
Yes, I do. My reproducer relies on having a file spanning more than a
screenful open.

- Run `emacs -Q`
- Paste the following code block into the scratch buffer
- Evaluate with `M-x buffer`

(find-library "subr")
(setq scroll-conservatively 10000)
(set-window-vscroll nil 9000 t)

On Fri, May 28, 2021 at 3:43 AM Lars Ingebrigtsen <larsi <at> gnus.org> wrote:
>
> Vasilij Schneidermann <v.schneidermann <at> gmail.com> writes:
>
> > I've been experimenting around to make Emacs scroll with pixel-level
> > precision and have soon discovered `set-window-vscroll' which allows one
> > to adjust the vertical scrolling of a window in pixel steps with its
> > fourth argument.  In an attempt to scroll further than a screenful, I
> > executed (set-window-vscroll nil 9000 t) which hung up Emacs.  Bisection
> > of my init file revealed that this issue doesn't happen with an
> > uncustomized Emacs and that it's sufficient to either customize
> > `scroll-step' to have a value of 1 or `scroll-conservatively' to have a
> > large value (which is a common hack to allow line-level scrolling).
>
> (I'm going through old bug reports that unfortunately got no response at
> the time.)
>
> I tried reproducing this with
>
> emacs -Q and:
>
> (progn
>   (setq scroll-step 1)
>   (set-window-vscroll nil 9000 t))
>
> But I didn't get any hangs.  Are you still seeing this problem in more
> recent Emacs versions?
>
> --
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19464; Package emacs. (Mon, 31 May 2021 18:47:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
Cc: larsi <at> gnus.org, 19464 <at> debbugs.gnu.org
Subject: Re: bug#19464: 24.4;
 Customizing either scroll-step or scroll-conservatively makes Emacs
 hang up when calling set-window-vscroll with large values
Date: Mon, 31 May 2021 21:45:49 +0300
> From: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
> Date: Mon, 31 May 2021 18:41:04 +0200
> Cc: 19464 <at> debbugs.gnu.org
> 
> Yes, I do. My reproducer relies on having a file spanning more than a
> screenful open.
> 
> - Run `emacs -Q`
> - Paste the following code block into the scratch buffer
> - Evaluate with `M-x buffer`
> 
> (find-library "subr")
> (setq scroll-conservatively 10000)
> (set-window-vscroll nil 9000 t)

Emacs doesn't hang, it's just that redisplay becomes extremely
sluggish with these settings after certain commands.  If you turn off
blink-cursor-mode and global-eldoc-mode (which induce additional
redisplay cycles, and thus create an illusion of a hang) before
setting the two variables, you will see that after several dozens of
seconds Emacs finishes redisplay with this huge vscroll and can
perform further commands, albeit with some of them responding slowly.

The problem here is that you on the one hand ask the display engine to
be very accurate when scrolling the window, so that not even a single
text line is scrolled into the view unless it's necessary to show
point; and OTOH you force point to be very far outside the viewport.
Whet the display engine does in response is (slowly and inefficiently)
finding how to deal with this contradiction.

IOW: Emacs gave you a rope and you've succeeded to hang yourself with
it.

If we think that this result is not what should be expected in this
situation, then what should be expected?  Should we somehow detect the
huge vscroll and limit it? or disallow scroll-conservatively in this
case? or something else?

In general, vscroll was introduced to support display of stuff that is
too tall to fit in the window: tall images and very large fonts.
Here, it seems you are trying to use it to force point out of the
viewport, and the question I have is: what for, and what you expect
Emacs to do in this barely supported situation?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19464; Package emacs. (Tue, 01 Jun 2021 06:05:01 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
Cc: 19464 <at> debbugs.gnu.org
Subject: Re: bug#19464: 24.4; Customizing either scroll-step or
 scroll-conservatively makes Emacs hang up when calling set-window-vscroll
 with large values
Date: Tue, 01 Jun 2021 08:04:13 +0200
Vasilij Schneidermann <v.schneidermann <at> gmail.com> writes:

> Yes, I do. My reproducer relies on having a file spanning more than a
> screenful open.
>
> - Run `emacs -Q`
> - Paste the following code block into the scratch buffer
> - Evaluate with `M-x buffer`

Did you mean `M-x eval-buffer'?

> (find-library "subr")
> (setq scroll-conservatively 10000)
> (set-window-vscroll nil 9000 t)

If so, I'm still not able to reproduce the problem on this
Debian/bullseye laptop -- `M-x eval-buffer' here takes less than half a
second for me in Emacs 28 and Emacs 27.1.

What Emacs/OS versions are you using?  And are there any missing steps
in the recipe?

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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19464; Package emacs. (Wed, 30 Jun 2021 13:21:01 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Vasilij Schneidermann <v.schneidermann <at> gmail.com>
Cc: 19464 <at> debbugs.gnu.org
Subject: Re: bug#19464: 24.4; Customizing either scroll-step or
 scroll-conservatively makes Emacs hang up when calling set-window-vscroll
 with large values
Date: Wed, 30 Jun 2021 15:20:41 +0200
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> If so, I'm still not able to reproduce the problem on this
> Debian/bullseye laptop -- `M-x eval-buffer' here takes less than half a
> second for me in Emacs 28 and Emacs 27.1.
>
> What Emacs/OS versions are you using?  And are there any missing steps
> in the recipe?

More information was requested, but no response was given within a
month, so I'm closing this bug report.  If the problem still exists,
please respond to this email and we'll reopen the bug report.

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




bug closed, send any further explanations to 19464 <at> debbugs.gnu.org and Vasilij Schneidermann <v.schneidermann <at> gmail.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Wed, 30 Jun 2021 13:22:03 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. (Thu, 29 Jul 2021 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 22 days ago.

Previous Next


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