unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#23431: 25.0.93; EWW hangs
@ 2016-05-03  3:29 Juliusz Chroboczek
  2016-05-03 14:25 ` Kaushal Modi
  2016-05-03 14:26 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 50+ messages in thread
From: Juliusz Chroboczek @ 2016-05-03  3:29 UTC (permalink / raw)
  To: 23431

Just type

  M-x eww http://jblevins.org/projects/deft/ RET

and Emacs uses up 100% of CPU, reacts to user input once in a few seconds.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03  3:29 bug#23431: 25.0.93; EWW hangs Juliusz Chroboczek
@ 2016-05-03 14:25 ` Kaushal Modi
  2016-05-03 14:26 ` Lars Ingebrigtsen
  1 sibling, 0 replies; 50+ messages in thread
From: Kaushal Modi @ 2016-05-03 14:25 UTC (permalink / raw)
  To: 23431

[-- Attachment #1: Type: text/plain, Size: 4262 bytes --]

I can recreate this bug in emacs -Q. Here is my build info.

Emacs version: GNU Emacs 25.0.93.1 (x86_64-unknown-linux-gnu, GTK+ Version
2.24.23)
 of 2016-05-02, built using commit ec554d7741d2ff2828ecaa437cc26a6e615f1319.

./configure options:
  --with-modules --prefix=/home/kmodi/usr_local/apps/6/emacs/emacs-25
'CPPFLAGS=-fgnu89-inline -I/home/kmodi/usr_local/6/include
-I/usr/include/freetype2 -I/usr/include' 'CFLAGS=-ggdb3 -O0'
'CXXFLAGS=-ggdb3 -O0' 'LDFLAGS=-L/home/kmodi/usr_local/6/lib
-L/home/kmodi/usr_local/6/lib64 -ggdb3'
PKG_CONFIG_PATH=/home/kmodi/usr_local/6/lib/pkgconfig:/home/kmodi/usr_local/6/lib64/pkgconfig:/cad/adi/apps/gnu/linux/x86_64/6/lib/pkgconfig:/cad/adi/apps/gnu/linux/x86_64/6/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig:/lib64/pkgconfig

Features:
  XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK2 X11 MODULES

I don't know exactly at what point the backtrace is useful. But here is the
backtrace I got after I got control back in gdb after hitting C-g multiple
times in emacs while it was frozen:

Breakpoint 3, Fsignal (error_symbol=51600, data=27738611) at eval.c:1471
1471        = (NILP (error_symbol) ? Fcar (data) : error_symbol);
(gdb) condition 3 error_symbol!=49824 && error_symbol!=51600
(gdb) c
Continuing.

Breakpoint 3, Fsignal (error_symbol=39024, data=0) at eval.c:1471
1471        = (NILP (error_symbol) ? Fcar (data) : error_symbol);
(gdb) p error_symbol
$5 = 39024
(gdb) xsymbol
$6 = (struct Lisp_Symbol *) 0xc851a0 <lispsym+39024>
"quit"
(gdb) bt
#0  Fsignal (error_symbol=39024, data=0) at eval.c:1471
#1  0x00000000005f3372 in process_quit_flag () at eval.c:1446
#2  0x00000000005f5fc2 in Ffuncall (nargs=5, args=0x7fffffff7c70) at
eval.c:2631
#3  0x00000000005f5df1 in call4 (fn=23280, arg1=19812949, arg2=44832,
arg3=44832, arg4=44832) at eval.c:2577
#4  0x0000000000427f6c in frame_windows_min_size (frame=19812949,
horizontal=44832, ignore=44832, pixelwise=44832) at frame.c:329
#5  0x0000000000428226 in adjust_frame_size (f=0x12e5250, new_width=1128,
new_height=750, inhibit=5, pretend=false, parameter=13200) at frame.c:420
#6  0x0000000000425f3e in change_frame_size_1 (f=0x12e5250, new_width=1128,
new_height=750, pretend=false, delay=false, safe=true, pixelwise=true) at
dispnew.c:5513
#7  0x0000000000425f93 in change_frame_size (f=0x12e5250, new_width=1128,
new_height=750, pretend=false, delay=false, safe=true, pixelwise=true) at
dispnew.c:5545
#8  0x0000000000425d6f in do_pending_window_change (safe=true) at
dispnew.c:5471
#9  0x000000000045a417 in redisplay_internal () at xdisp.c:13588
#10 0x000000000045bcb3 in redisplay_preserve_echo_area (from_where=12) at
xdisp.c:14283
#11 0x0000000000649e83 in wait_reading_process_output (time_limit=30,
nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=0, wait_proc=0x0,
just_wait_proc=0) at process.c:5066
#12 0x00000000004266ef in sit_for (timeout=122, reading=true,
display_option=1) at dispnew.c:5762
#13 0x000000000055d9b3 in read_char (commandflag=1, map=29145331,
prev_event=0, used_mouse_menu=0x7fffffff9a1f, end_time=0x0) at
keyboard.c:2706
#14 0x000000000056a2d9 in read_key_sequence (keybuf=0x7fffffff9bd0,
bufsize=30, prompt=0, dont_downcase_last=false,
can_return_switch_frame=true, fix_current_buffer=true,
prevent_redisplay=false) at keyboard.c:9055
#15 0x000000000055a8a9 in command_loop_1 () at keyboard.c:1357
#16 0x00000000005f2f86 in internal_condition_case (bfun=0x55a49f
<command_loop_1>, handlers=19056, hfun=0x559c89 <cmd_error>) at eval.c:1309
#17 0x000000000055a1a7 in command_loop_2 (ignore=0) at keyboard.c:1099
#18 0x00000000005f28a6 in internal_catch (tag=46224, func=0x55a17e
<command_loop_2>, arg=0) at eval.c:1074
#19 0x000000000055a147 in command_loop () at keyboard.c:1078
#20 0x0000000000559858 in recursive_edit_1 () at keyboard.c:684
#21 0x00000000005599eb in Frecursive_edit () at keyboard.c:755
#22 0x00000000005578aa in main (argc=2, argv=0x7fffffffa068) at emacs.c:1606

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)
(gdb)

-- 

-- 
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 4942 bytes --]

^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03  3:29 bug#23431: 25.0.93; EWW hangs Juliusz Chroboczek
  2016-05-03 14:25 ` Kaushal Modi
@ 2016-05-03 14:26 ` Lars Ingebrigtsen
  2016-05-03 15:57   ` Lars Ingebrigtsen
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 14:26 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431

Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes:

> Just type
>
>   M-x eww http://jblevins.org/projects/deft/ RET
>
> and Emacs uses up 100% of CPU, reacts to user input once in a few seconds.

It's displaying an animated GIF that seems to take all of Emacs' time.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 14:26 ` Lars Ingebrigtsen
@ 2016-05-03 15:57   ` Lars Ingebrigtsen
  2016-05-03 16:20     ` Eli Zaretskii
                       ` (2 more replies)
  0 siblings, 3 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 15:57 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431

I wonder what the best thing to do here is...

First of all: Can the animation function determine that it's making
Emacs unresponsive?  I guess it could keep track of how much time is
passing between each time it's called, and if that's longer than the
timeout, it should ... postpone itself a bit further to allow some
keystrokes to get in between each frame?

That would slow down the animation even further, but make Emacs more
responsive, so I think that should probably be done.

The other thing is that the ImageMagick animation thing I implemented is
s-l-o-w.  (And eww is using that instead of the GIF animation, since GIF
doesn't allow rescaling.)

If somebody could take a peek at imagemagick_compute_animated_image and
make it much, much faster, that would be really nice.  :-)

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






^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 15:57   ` Lars Ingebrigtsen
@ 2016-05-03 16:20     ` Eli Zaretskii
  2016-05-03 16:26       ` Lars Ingebrigtsen
  2016-05-03 16:26     ` Juliusz Chroboczek
  2016-05-03 18:51     ` Glenn Morris
  2 siblings, 1 reply; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 16:20 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Tue, 03 May 2016 17:57:59 +0200
> Cc: 23431@debbugs.gnu.org
> 
> First of all: Can the animation function determine that it's making
> Emacs unresponsive?  I guess it could keep track of how much time is
> passing between each time it's called, and if that's longer than the
> timeout, it should ... postpone itself a bit further to allow some
> keystrokes to get in between each frame?

Can you show how that function is called on the Lisp level?





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 15:57   ` Lars Ingebrigtsen
  2016-05-03 16:20     ` Eli Zaretskii
@ 2016-05-03 16:26     ` Juliusz Chroboczek
  2016-05-03 16:27       ` Lars Ingebrigtsen
  2016-05-03 16:57       ` Eli Zaretskii
  2016-05-03 18:51     ` Glenn Morris
  2 siblings, 2 replies; 50+ messages in thread
From: Juliusz Chroboczek @ 2016-05-03 16:26 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431

> The other thing is that the ImageMagick animation thing I implemented is
> s-l-o-w.  (And eww is using that instead of the GIF animation, since GIF
> doesn't allow rescaling.)

For 25, perhaps it might make sense to default to not animating images?

-- Juliusz





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 16:20     ` Eli Zaretskii
@ 2016-05-03 16:26       ` Lars Ingebrigtsen
  2016-05-03 16:40         ` Eli Zaretskii
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 16:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Lars Ingebrigtsen <larsi@gnus.org>
>> Date: Tue, 03 May 2016 17:57:59 +0200
>> Cc: 23431@debbugs.gnu.org
>> 
>> First of all: Can the animation function determine that it's making
>> Emacs unresponsive?  I guess it could keep track of how much time is
>> passing between each time it's called, and if that's longer than the
>> timeout, it should ... postpone itself a bit further to allow some
>> keystrokes to get in between each frame?
>
> Can you show how that function is called on the Lisp level?

It's the `image-animate-timeout' function in image.el.

(defun image-animate-timeout (image n count time-elapsed limit)

[...]

	   (delay (max (+ (* (or (cdr animation) image-default-frame-delay)
			     (/ 1.0 (abs speed)))
			  time (- (float-time)))
		       image-minimum-frame-delay))

[...]

      (unless done
	(run-with-timer delay nil 'image-animate-timeout
			image n count time-elapsed limit)))))

So I think it shouldn't be too difficult to ... do something useful
here...

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 16:26     ` Juliusz Chroboczek
@ 2016-05-03 16:27       ` Lars Ingebrigtsen
  2016-05-03 16:57       ` Eli Zaretskii
  1 sibling, 0 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 16:27 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431

Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes:

> For 25, perhaps it might make sense to default to not animating images?

Without GIFs there's not point to the web!

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 16:26       ` Lars Ingebrigtsen
@ 2016-05-03 16:40         ` Eli Zaretskii
  2016-05-03 17:04           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 16:40 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: jch@pps.univ-paris-diderot.fr,  23431@debbugs.gnu.org
> Date: Tue, 03 May 2016 18:26:52 +0200
> 
> (defun image-animate-timeout (image n count time-elapsed limit)
> 
> [...]
> 
> 	   (delay (max (+ (* (or (cdr animation) image-default-frame-delay)
> 			     (/ 1.0 (abs speed)))
> 			  time (- (float-time)))
> 		       image-minimum-frame-delay))
> 
> [...]
> 
>       (unless done
> 	(run-with-timer delay nil 'image-animate-timeout
> 			image n count time-elapsed limit)))))

So you are saying that a single call to image-animate-timeout takes
much longer than the value of 'delay'?  (Which is what typically,
btw?)





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 16:26     ` Juliusz Chroboczek
  2016-05-03 16:27       ` Lars Ingebrigtsen
@ 2016-05-03 16:57       ` Eli Zaretskii
  1 sibling, 0 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 16:57 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431, larsi

> Date: Tue, 03 May 2016 18:26:19 +0200
> From: Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr>
> Cc: 23431@debbugs.gnu.org
> 
> > The other thing is that the ImageMagick animation thing I implemented is
> > s-l-o-w.  (And eww is using that instead of the GIF animation, since GIF
> > doesn't allow rescaling.)
> 
> For 25, perhaps it might make sense to default to not animating images?

No, I don't want us to do that.  The problem is not so bad in an
optimized build, and Emacs is not really stuck, it still responds to
keyboard input.

In any case, let's first see what it takes to fix this.  Perhaps the
fix is so simple we can allow it in Emacs 25.1.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 16:40         ` Eli Zaretskii
@ 2016-05-03 17:04           ` Lars Ingebrigtsen
  2016-05-03 17:13             ` Eli Zaretskii
  2016-05-03 17:17             ` Eli Zaretskii
  0 siblings, 2 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

> So you are saying that a single call to image-animate-timeout takes
> much longer than the value of 'delay'?

Well, `image-animate-timeout' doesn't really do much, but if the next
timeout arrives much later than `delay' specified, then we can surmise
that displaying the next image in the sequence took a lot of time.

Most parts of the image formatting doesn't happen until redisplay
happens -- `image-animate-timeout' just increases the image index, and
then redisplay does all the hard lifting.

While redisplay is doing all that, Emacs isn't allowing any events to
fire, I think, so we should be able to see that Emacs is busy...

> (Which is what typically, btw?)

I think for most GIFs it's typically 0.1s, but it can be larger.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:04           ` Lars Ingebrigtsen
@ 2016-05-03 17:13             ` Eli Zaretskii
  2016-05-03 17:23               ` Lars Ingebrigtsen
  2016-05-03 17:17             ` Eli Zaretskii
  1 sibling, 1 reply; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 17:13 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: jch@pps.univ-paris-diderot.fr,  23431@debbugs.gnu.org
> Date: Tue, 03 May 2016 19:04:21 +0200
> 
> Most parts of the image formatting doesn't happen until redisplay
> happens -- `image-animate-timeout' just increases the image index, and
> then redisplay does all the hard lifting.
> 
> While redisplay is doing all that, Emacs isn't allowing any events to
> fire, I think, so we should be able to see that Emacs is busy...

But why would display of an image be so slow?  It isn't slow with
simple GIF images.  What am I missing?





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:04           ` Lars Ingebrigtsen
  2016-05-03 17:13             ` Eli Zaretskii
@ 2016-05-03 17:17             ` Eli Zaretskii
  2016-05-03 17:24               ` Lars Ingebrigtsen
  1 sibling, 1 reply; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 17:17 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: jch@pps.univ-paris-diderot.fr,  23431@debbugs.gnu.org
> Date: Tue, 03 May 2016 19:04:21 +0200
> 
> Most parts of the image formatting doesn't happen until redisplay
> happens -- `image-animate-timeout' just increases the image index, and
> then redisplay does all the hard lifting.
> 
> While redisplay is doing all that, Emacs isn't allowing any events to
> fire, I think, so we should be able to see that Emacs is busy...

I see the animation run at about 1 to 2 Hz refresh rate, so I don't
think redisplay is slow.

> > (Which is what typically, btw?)
> 
> I think for most GIFs it's typically 0.1s, but it can be larger.

Which might be too small.  How about making it 0.5 sec or even 1 sec
instead?





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:13             ` Eli Zaretskii
@ 2016-05-03 17:23               ` Lars Ingebrigtsen
  2016-05-03 17:34                 ` Eli Zaretskii
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Lars Ingebrigtsen <larsi@gnus.org>
>> Cc: jch@pps.univ-paris-diderot.fr,  23431@debbugs.gnu.org
>> Date: Tue, 03 May 2016 19:04:21 +0200
>> 
>> Most parts of the image formatting doesn't happen until redisplay
>> happens -- `image-animate-timeout' just increases the image index, and
>> then redisplay does all the hard lifting.
>> 
>> While redisplay is doing all that, Emacs isn't allowing any events to
>> fire, I think, so we should be able to see that Emacs is busy...
>
> But why would display of an image be so slow?  It isn't slow with
> simple GIF images.  What am I missing?

Computing animated images is more complicated.  And see the comment I
made about ImageMagick animation implementation.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:17             ` Eli Zaretskii
@ 2016-05-03 17:24               ` Lars Ingebrigtsen
  2016-05-03 17:40                 ` Eli Zaretskii
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

> I see the animation run at about 1 to 2 Hz refresh rate, so I don't
> think redisplay is slow.

I get one refresh at, like, once a second on the example image (with
ImageMagick).

>> > (Which is what typically, btw?)
>> 
>> I think for most GIFs it's typically 0.1s, but it can be larger.
>
> Which might be too small.  How about making it 0.5 sec or even 1 sec
> instead?

The animated image sets the delay between images.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:23               ` Lars Ingebrigtsen
@ 2016-05-03 17:34                 ` Eli Zaretskii
  2016-05-03 17:37                   ` Lars Ingebrigtsen
  2016-05-03 17:39                   ` Lars Ingebrigtsen
  0 siblings, 2 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 17:34 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: jch@pps.univ-paris-diderot.fr,  23431@debbugs.gnu.org
> Date: Tue, 03 May 2016 19:23:33 +0200
> 
> > But why would display of an image be so slow?  It isn't slow with
> > simple GIF images.  What am I missing?
> 
> Computing animated images is more complicated.

In what way?

> And see the comment I made about ImageMagick animation
> implementation.

Not relevant for what I see here: my Emacs is built without
ImageMagick.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:34                 ` Eli Zaretskii
@ 2016-05-03 17:37                   ` Lars Ingebrigtsen
  2016-05-03 17:39                   ` Lars Ingebrigtsen
  1 sibling, 0 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Lars Ingebrigtsen <larsi@gnus.org>
>> Cc: jch@pps.univ-paris-diderot.fr,  23431@debbugs.gnu.org
>> Date: Tue, 03 May 2016 19:23:33 +0200
>> 
>> > But why would display of an image be so slow?  It isn't slow with
>> > simple GIF images.  What am I missing?
>> 
>> Computing animated images is more complicated.
>
> In what way?

Each frame is a composite of the previous frames and the current frame
in the image.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:34                 ` Eli Zaretskii
  2016-05-03 17:37                   ` Lars Ingebrigtsen
@ 2016-05-03 17:39                   ` Lars Ingebrigtsen
  2016-05-03 17:41                     ` Eli Zaretskii
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

But anyway, this is all besides to point:  The question is still whether
we can detect that the animation is making Emacs slow, and whether
injecting some more delay (dynamically) into the animation timeout will
fix it.  I think somebody will just have to try.

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






^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:24               ` Lars Ingebrigtsen
@ 2016-05-03 17:40                 ` Eli Zaretskii
  2016-05-03 17:43                   ` Eli Zaretskii
  2016-05-03 17:47                   ` Lars Ingebrigtsen
  0 siblings, 2 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 17:40 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

The top of the profile is this:

  - timer-event-handler                                            1149  65%
   - apply                                                         1149  65%
    - image-animate-timeout                                        1110  63%
       image-multi-frame-p                                         1110  63%
    - url-queue-run-queue                                            39   2%

Any idea why is image-multi-frame-p do expensive?





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:39                   ` Lars Ingebrigtsen
@ 2016-05-03 17:41                     ` Eli Zaretskii
  2016-05-03 17:48                       ` Lars Ingebrigtsen
  2016-05-03 18:17                       ` Lars Ingebrigtsen
  0 siblings, 2 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 17:41 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 23431@debbugs.gnu.org,  jch@pps.univ-paris-diderot.fr
> Date: Tue, 03 May 2016 19:39:02 +0200
> 
> But anyway, this is all besides to point:  The question is still whether
> we can detect that the animation is making Emacs slow, and whether
> injecting some more delay (dynamically) into the animation timeout will
> fix it.

Shouldn't we first understand why Emacs is so slow?  See my message
about the profile.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:40                 ` Eli Zaretskii
@ 2016-05-03 17:43                   ` Eli Zaretskii
  2016-05-03 17:47                   ` Lars Ingebrigtsen
  1 sibling, 0 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 17:43 UTC (permalink / raw)
  To: larsi; +Cc: 23431, jch

> Date: Tue, 03 May 2016 20:40:01 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 23431@debbugs.gnu.org, jch@pps.univ-paris-diderot.fr
> 
> Any idea why is image-multi-frame-p do expensive?
                                      ^^
I meant "so", of course.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:40                 ` Eli Zaretskii
  2016-05-03 17:43                   ` Eli Zaretskii
@ 2016-05-03 17:47                   ` Lars Ingebrigtsen
  2016-05-03 18:17                     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

> The top of the profile is this:
>
>   - timer-event-handler                                            1149  65%
>    - apply                                                         1149  65%
>     - image-animate-timeout                                        1110  63%
>        image-multi-frame-p                                         1110  63%
>     - url-queue-run-queue                                            39   2%
>
> Any idea why is image-multi-frame-p do expensive?

Hm...  No, I would have expected that to be fast.  It's basically just a
call to `image-metadata', isn't it?  And that should be caching the
data, I think?

Hm...  That function basically just does:

      struct frame *f = decode_window_system_frame (frame);
      ptrdiff_t id = lookup_image (f, spec);
      struct image *img = IMAGE_FROM_ID (f, id);
      ext = img->lisp_data;


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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:41                     ` Eli Zaretskii
@ 2016-05-03 17:48                       ` Lars Ingebrigtsen
  2016-05-03 18:17                       ` Lars Ingebrigtsen
  1 sibling, 0 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 17:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Lars Ingebrigtsen <larsi@gnus.org>
>> Cc: 23431@debbugs.gnu.org,  jch@pps.univ-paris-diderot.fr
>> Date: Tue, 03 May 2016 19:39:02 +0200
>> 
>> But anyway, this is all besides to point:  The question is still whether
>> we can detect that the animation is making Emacs slow, and whether
>> injecting some more delay (dynamically) into the animation timeout will
>> fix it.
>
> Shouldn't we first understand why Emacs is so slow?  See my message
> about the profile.

Yes, you are completely right.  I thought I had looked at this a year
ago and determined that it was just slow because decoding the animated
image was slow, but if it's due to something else, that would be nice.
:-)

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:41                     ` Eli Zaretskii
  2016-05-03 17:48                       ` Lars Ingebrigtsen
@ 2016-05-03 18:17                       ` Lars Ingebrigtsen
  1 sibling, 0 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 18:17 UTC (permalink / raw)
  To: 23431

Does the following patch help?  It'll cache the metadata.

Doesn't make much difference on the test image for me.

diff --git a/lisp/image.el b/lisp/image.el
index 2ae642a..9c27664 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -698,14 +698,21 @@ image-multi-frame-p
 the number of frames (or sub-images) in the image and DELAY is the delay
 in seconds that the image specifies between each frame.  DELAY may be nil,
 in which case you might want to use `image-default-frame-delay'."
-  (when (fboundp 'image-metadata)
-    (let* ((metadata (image-metadata image))
-	   (images (plist-get metadata 'count))
-	   (delay (plist-get metadata 'delay)))
-      (when (and images (> images 1))
-	(and delay (or (not (numberp delay)) (< delay 0))
-	     (setq delay image-default-frame-delay))
-	(cons images delay)))))
+  (or (plist-get (cdr image) :image-metadata)
+      (when (fboundp 'image-metadata)
+        (let* ((metadata (image-metadata image))
+               (images (plist-get metadata 'count))
+               (delay (plist-get metadata 'delay))
+               (result
+                (and images
+                     (> images 1)
+                     (cons images
+                           (if (or (not (numberp delay))
+                                   (< delay 0))
+                               image-default-frame-delay
+                             delay)))))
+          (plist-put (cdr image) :image-metadata result)
+          result))))
 
 (defun image-animated-p (image)
   "Like `image-multi-frame-p', but returns nil if no delay is specified."


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







^ permalink raw reply related	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 17:47                   ` Lars Ingebrigtsen
@ 2016-05-03 18:17                     ` Lars Ingebrigtsen
  2016-05-03 18:33                       ` Eli Zaretskii
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 18:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Does the following patch help?  It'll cache the metadata.

Doesn't make much difference on the test image for me.

diff --git a/lisp/image.el b/lisp/image.el
index 2ae642a..9c27664 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -698,14 +698,21 @@ image-multi-frame-p
 the number of frames (or sub-images) in the image and DELAY is the delay
 in seconds that the image specifies between each frame.  DELAY may be nil,
 in which case you might want to use `image-default-frame-delay'."
-  (when (fboundp 'image-metadata)
-    (let* ((metadata (image-metadata image))
-	   (images (plist-get metadata 'count))
-	   (delay (plist-get metadata 'delay)))
-      (when (and images (> images 1))
-	(and delay (or (not (numberp delay)) (< delay 0))
-	     (setq delay image-default-frame-delay))
-	(cons images delay)))))
+  (or (plist-get (cdr image) :image-metadata)
+      (when (fboundp 'image-metadata)
+        (let* ((metadata (image-metadata image))
+               (images (plist-get metadata 'count))
+               (delay (plist-get metadata 'delay))
+               (result
+                (and images
+                     (> images 1)
+                     (cons images
+                           (if (or (not (numberp delay))
+                                   (< delay 0))
+                               image-default-frame-delay
+                             delay)))))
+          (plist-put (cdr image) :image-metadata result)
+          result))))
 
 (defun image-animated-p (image)
   "Like `image-multi-frame-p', but returns nil if no delay is specified."


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






^ permalink raw reply related	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 18:17                     ` Lars Ingebrigtsen
@ 2016-05-03 18:33                       ` Eli Zaretskii
  0 siblings, 0 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 18:33 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 23431@debbugs.gnu.org,  jch@pps.univ-paris-diderot.fr
> Date: Tue, 03 May 2016 20:17:43 +0200
> 
> Does the following patch help?  It'll cache the metadata.
> 
> Doesn't make much difference on the test image for me.

Doesn't help here, either.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 15:57   ` Lars Ingebrigtsen
  2016-05-03 16:20     ` Eli Zaretskii
  2016-05-03 16:26     ` Juliusz Chroboczek
@ 2016-05-03 18:51     ` Glenn Morris
  2016-05-03 19:05       ` Lars Ingebrigtsen
  2 siblings, 1 reply; 50+ messages in thread
From: Glenn Morris @ 2016-05-03 18:51 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, Juliusz Chroboczek


I didn't see anyone mention yet that the gif on that page seems kind of dumb.
It's 2036x1426, but is resized to never be more than ~ 1/4 of that size
even in a full-screen Firefox. So I don't think that gif by itself is
too indicative.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 18:51     ` Glenn Morris
@ 2016-05-03 19:05       ` Lars Ingebrigtsen
  2016-05-03 19:16         ` Glenn Morris
  2016-05-03 19:31         ` Eli Zaretskii
  0 siblings, 2 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 19:05 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 23431, Juliusz Chroboczek

Glenn Morris <rgm@gnu.org> writes:

> I didn't see anyone mention yet that the gif on that page seems kind of dumb.
> It's 2036x1426, but is resized to never be more than ~ 1/4 of that size
> even in a full-screen Firefox. So I don't think that gif by itself is
> too indicative.

Yeah, it's an extreme GIF, but Emacs shouldn't become (almost) unusable
in the presence of such images...  I mean, you have to kill the eww
buffer to get anything done.

You can get pretty much the same effect by visiting a page that contains
a number of smaller animated images.  

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:05       ` Lars Ingebrigtsen
@ 2016-05-03 19:16         ` Glenn Morris
  2016-05-03 19:23           ` Lars Ingebrigtsen
  2016-05-03 19:31         ` Eli Zaretskii
  1 sibling, 1 reply; 50+ messages in thread
From: Glenn Morris @ 2016-05-03 19:16 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, Juliusz Chroboczek

Lars Ingebrigtsen wrote:

> Yeah, it's an extreme GIF, but Emacs shouldn't become (almost) unusable
> in the presence of such images...  I mean, you have to kill the eww
> buffer to get anything done.
>
> You can get pretty much the same effect by visiting a page that contains
> a number of smaller animated images.  

Right, but it's not like this is new in 25 or anything, it's always been
like that.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:16         ` Glenn Morris
@ 2016-05-03 19:23           ` Lars Ingebrigtsen
  2016-05-03 20:10             ` Juliusz Chroboczek
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 19:23 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 23431, Juliusz Chroboczek

Glenn Morris <rgm@gnu.org> writes:

> Lars Ingebrigtsen wrote:
>
>> Yeah, it's an extreme GIF, but Emacs shouldn't become (almost) unusable
>> in the presence of such images...  I mean, you have to kill the eww
>> buffer to get anything done.
>>
>> You can get pretty much the same effect by visiting a page that contains
>> a number of smaller animated images.  
>
> Right, but it's not like this is new in 25 or anything, it's always been
> like that.

Oh, yeah, it's always been bad.  People just notice more now that Emacs
has a web browser.  So I think it's unlikely that whatever we do about
this is code is something that'll go to emacs-25.  Unless there turns
out to be a very simple thinko somewhere.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:05       ` Lars Ingebrigtsen
  2016-05-03 19:16         ` Glenn Morris
@ 2016-05-03 19:31         ` Eli Zaretskii
  2016-05-03 19:37           ` Lars Ingebrigtsen
  2016-05-03 20:25           ` Lars Ingebrigtsen
  1 sibling, 2 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-03 19:31 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Tue, 03 May 2016 21:05:21 +0200
> Cc: 23431@debbugs.gnu.org, Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr>
> 
> > It's 2036x1426, but is resized to never be more than ~ 1/4 of that size
> > even in a full-screen Firefox. So I don't think that gif by itself is
> > too indicative.
> 
> Yeah, it's an extreme GIF, but Emacs shouldn't become (almost) unusable
> in the presence of such images...  I mean, you have to kill the eww
> buffer to get anything done.
> 
> You can get pretty much the same effect by visiting a page that contains
> a number of smaller animated images.  

I've now run a longer profile, with image.el loaded (not .elc), and
the profile is this:

  - timer-event-handler                                            2905  90%
   - apply                                                         2905  90%
    - image-animate-timeout                                        2858  88%
     - if                                                          2858  88%
      - progn                                                      2858  88%
       - let*                                                      2858  88%
	- image-multi-frame-p                                      2858  88%
	 - if                                                      2858  88%
	  - progn                                                  2858  88%
	     let*                                                  2858  88%
    + url-queue-run-queue                                            47   1%

IOW, it insists that the problem is in the call to image-metadata.
Which probably mean most of the time is spent in lookup_image?

Can you run Emacs under prof to see what happens on the C level?

Btw, if I wait for a while (maybe 20 sec), the slowness disappears,
and Emacs becomes responsive again, although the animation still goes
on.  So perhaps what causes this is some initial processing?  (I have
no idea what's involved in displaying an animated GIF.)





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:31         ` Eli Zaretskii
@ 2016-05-03 19:37           ` Lars Ingebrigtsen
  2016-05-04  2:34             ` Eli Zaretskii
  2016-05-03 20:25           ` Lars Ingebrigtsen
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 19:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

> Btw, if I wait for a while (maybe 20 sec), the slowness disappears,
> and Emacs becomes responsive again, although the animation still goes
> on.  So perhaps what causes this is some initial processing?  (I have
> no idea what's involved in displaying an animated GIF.)

After Emacs has decoded all the frames in the image, they'll then be
stored in the Emacs display image cache (the one you can clear with
`clear-image-cache'), so Emacs should be responsive after the animated
GIF has looped once.  (Unless there are more frames in the image than
the length of the Emacs image cache.)

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:23           ` Lars Ingebrigtsen
@ 2016-05-03 20:10             ` Juliusz Chroboczek
  0 siblings, 0 replies; 50+ messages in thread
From: Juliusz Chroboczek @ 2016-05-03 20:10 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431

>> Right, but it's not like this is new in 25 or anything, it's always been
>> like that.

> Oh, yeah, it's always been bad.  People just notice more now that Emacs
> has a web browser.

Yes, I'm sure I'm not the only person who's changed his working habits to
use eww for a number of daily tasks.  In my case, it's due to the easily
accessible "&" binding -- such a simple idea, and it's what made eww useful.
(I was using w3m before, but never as much as I use eww now.)

The consequence is that we use eww on random, uncontrolled pages on
a regular basis, and if it causes Emacs to hang, that's really annoying.
In some sense, eww is a victim of its success -- we're not interested in
new features, we've got "&" for when eww fails, but we're very much
grateful for any improvement in stability and performance.

Ceterum censeo bugum 17976 saciendum esse.

Thanks for your help,

-- Juliusz





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:31         ` Eli Zaretskii
  2016-05-03 19:37           ` Lars Ingebrigtsen
@ 2016-05-03 20:25           ` Lars Ingebrigtsen
  2016-05-03 20:47             ` Lars Ingebrigtsen
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 20:25 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

> Can you run Emacs under prof to see what happens on the C level?

Hm...  the only "prof" on this system is "prof - secondary structure and
solvent accessibility predictor" which is probably not the one.  :-)

(Ubuntu.)

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 20:25           ` Lars Ingebrigtsen
@ 2016-05-03 20:47             ` Lars Ingebrigtsen
  2016-05-03 20:53               ` Lars Ingebrigtsen
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 20:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Never mind.  I googled a bit.

Here's what gprof says.  This is with the gif instead of ImageMagick:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 66.06      0.72     0.72       30    24.00    24.00  gif_load
  5.05      0.78     0.06  4152364     0.00     0.00  mark_object
  4.59      0.83     0.05     7417     0.01     0.01  Fnreverse
  1.83      0.85     0.02  1417517     0.00     0.00  readchar
  1.83      0.87     0.02   118523     0.00     0.00  re_search_2
  1.83      0.89     0.02    86234     0.00     0.00  re_match_2_internal
  1.83      0.91     0.02    50170     0.00     0.00  oblookup
  1.83      0.93     0.02     1445     0.01     0.01  mark_char_table
  1.83      0.95     0.02       17     1.18     1.18  sweep_strings
  0.92      0.96     0.01   589920     0.00     0.00  lookup_char_property
  0.92      0.97     0.01   557337     0.00     0.00  Fassq
  0.92      0.98     0.01   164214     0.00     0.00  Flength
  0.92      0.99     0.01    78232     0.00     0.00  validate_interval_range
  0.92      1.00     0.01    46440     0.00     0.00  concat
  0.92      1.01     0.01    26385     0.00     0.00  Fmemq
  0.92      1.02     0.01    11955     0.00     0.00  invalidate_buffer_caches
  0.92      1.03     0.01     5361     0.00     0.00  Frassq
  0.92      1.04     0.01     4033     0.00     0.00  mem_insert
  0.92      1.05     0.01     2470     0.00     0.01  Fexpand_file_name
  0.92      1.06     0.01                             _init
  0.92      1.07     0.01                             deliver_user_signal
  0.92      1.08     0.01                             gif_read_from_memory
  0.46      1.08     0.01    49187     0.00     0.00  funcall_lambda
  0.46      1.09     0.01       71     0.07     0.07  inhibit_garbage_collection
  0.46      1.09     0.01                             unwind_body
  0.00      1.09     0.00  1327581     0.00     0.00  unblock_input_to
  0.00      1.09     0.00  1327254     0.00     0.00  unblock_input
  0.00      1.09     0.00  1280084     0.00     0.00  readbyte_from_file
  0.00      1.09     0.00   715009     0.00     0.00  Fcdr
  0.00      1.09     0.00   577913     0.00     0.00  textget
  0.00      1.09     0.00   463829     0.00     0.00  next_interval
  0.00      1.09     0.00   373948     0.00     0.00  get_keymap
  0.00      1.09     0.00   339906     0.00     0.00  indirect_function
  0.00      1.09     0.00   294229     0.00     0.00  grow_specpdl
  0.00      1.09     0.00   258703     0.00     0.00  Fcons
  0.00      1.09     0.00   249872     0.00     0.00  vector_nbytes
  0.00      1.09     0.00   201296     0.00     0.00  balance_intervals
  0.00      1.09     0.00   198930     0.00     0.00  Fstring_equal
  0.00      1.09     0.00   193748     0.00     0.00  internal_equal
  0.00      1.09     0.00   188891     0.00     0.00  record_in_backtrace
  0.00      1.09     0.00   182173     0.00     0.00  Fcar
  0.00      1.09     0.00   166514     0.00     0.00  Ffuncall
  0.00      1.09     0.00   125350     0.00     0.00  make_uninit_multibyte_string
  0.00      1.09     0.00   125147     0.00     0.00  allocate_string_data
  0.00      1.09     0.00   123999     0.00     0.00  Fplist_get
  0.00      1.09     0.00   121530     0.00     0.00  SETUP_SYNTAX_TABLE_FOR_OBJECT

[...]


 %         the percentage of the total running time of the
time       program used by this function.

cumulative a running sum of the number of seconds accounted
 seconds   for by this function and those listed above it.

 self      the number of seconds accounted for by this
seconds    function alone.  This is the major sort for this
           listing.

calls      the number of times this function was invoked, if
           this function is profiled, else blank.

 self      the average number of milliseconds spent in this
ms/call    function per call, if this function is profiled,
	   else blank.

 total     the average number of milliseconds spent in this
ms/call    function and its descendents per call, if this
	   function is profiled, else blank.

name       the name of the function.  This is the minor sort
           for this listing. The index shows the location of
	   the function in the gprof listing. If the index is
	   in parenthesis it shows where it would appear in
	   the gprof listing if it were to be printed.
\f
Copyright (C) 2012-2015 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
\f
		     Call graph (explanation follows)


granularity: each sample hit covers 2 byte(s) for 0.92% of 1.09 seconds

index % time    self  children    called     name
[1]     96.8    0.10    0.96      10+5782798 <cycle 2 as a whole> [1]
                0.00    0.72      87             lookup_image <cycle 2> [2]
                0.06    0.00 4152364+1973432     mark_object <cycle 2> [13]
                0.00    0.04  114751             read1 <cycle 2> [16]
                0.00    0.03   47913             exec_byte_code <cycle 2> [20]
                0.00    0.02  166514             Ffuncall <cycle 2> [21]
                0.01    0.01    2470+105         Fexpand_file_name <cycle 2> [22]
                0.00    0.02      17             Fgarbage_collect <cycle 2> [23]
                0.02    0.00    1445+44619       mark_char_table <cycle 2> [26]
                0.00    0.02     878             Fset_fontset_font <cycle 2> [32]
                0.00    0.01   50284             accessible_keymaps_1 <cycle 2> [38]
                0.00    0.01    3990             replace_range <cycle 2> [50]
                0.00    0.01    2795             handle_stop <cycle 2> [53]
                0.00    0.01    1124             Fwhere_is_internal <cycle 2> [57]
                0.00    0.01     128             openp <cycle 2> [58]
                0.00    0.01    2573             Ffile_name_nondirectory <cycle 2> [62]
                0.01    0.00   49187             funcall_lambda <cycle 2> [64]
                0.01    0.00      71             inhibit_garbage_collection <cycle 2> [65]
                0.00    0.00    1819             del_range_1 <cycle 2> [75]
                0.00    0.00   31149+1567        next_element_from_buffer <cycle 2> [76]
                0.00    0.00    1338             insert_from_string_1 <cycle 2> [77]
                0.00    0.00    7201             update_compositions <cycle 2> [79]
                0.00    0.00    3134             modify_text <cycle 2> [81]
                0.00    0.00    1210             Fnext_single_char_property_change <cycle 2> [83]
                0.00    0.00     608             styled_format <cycle 2> [84]
                0.00    0.00    1627             face_before_or_after_it_pos <cycle 2> [90]
                0.00    0.00     755             Fdirectory_file_name <cycle 2> [93]
                0.00    0.00     762             Ffile_name_directory <cycle 2> [94]
                0.00    0.00   19655+20498       eval_sub <cycle 2> [96]
                0.00    0.00    1605             decode_coding <cycle 2> [99]
                0.00    0.00     625             Ffile_symlink_p <cycle 2> [102]
                0.00    0.00     590             Ffile_name_as_directory <cycle 2> [103]
                0.00    0.00   18706             read_list <cycle 2> [106]
                0.00    0.00     298+194         substitute_object_recurse <cycle 2> [110]
                0.00    0.00   48087             where_is_internal_1 <cycle 2> [111]
                0.00    0.00    3943             next_element_from_string <cycle 2> [112]
                0.00    0.00      69             readevalloop <cycle 2> [115]
                0.00    0.00     643             reseat <cycle 2> [116]
                0.00    0.00   22774             Fset_default <cycle 2> [118]
                0.00    0.00    3135             casify_region <cycle 2> [119]
                0.00    0.00     994             display_string <cycle 2> [121]
                0.00    0.00    1122             Fcurrent_active_maps <cycle 2> [127]
                0.00    0.00   11491             prepare_to_modify_buffer_1 <cycle 2> [128]
                0.00    0.00      53             Fkill_buffer <cycle 2> [130]
                0.00    0.00      92             Fload <cycle 2> [137]
                0.00    0.00    3323             handle_display_prop <cycle 2> [147]
                0.00    0.00    6294             read_vector <cycle 2> [148]
                0.00    0.00      52             directory_files_internal <cycle 2> [151]
                0.00    0.00    1603             decode_coding_object <cycle 2> [153]
                0.00    0.00     527             init_iterator <cycle 2> [154]
                0.00    0.00    6765             Fset <cycle 2> [155]
                0.00    0.00     214             Ffile_directory_p <cycle 2> [157]
                0.00    0.00    1122             where_is_internal <cycle 2> [166]
                0.00    0.00    3016             code_convert_string <cycle 2> [168]
                0.00    0.00    1407             add_text_properties_1 <cycle 2> [171]
                0.00    0.00   18287             bidi_move_to_visually_next <cycle 2> [179]
                0.00    0.00   38501             get_next_display_element <cycle 2> [186]
                0.00    0.00     532             back_to_previous_visible_line_start <cycle 2> [188]
                0.00    0.00      63             Faccessible_keymaps <cycle 2> [189]
                0.00    0.00     118             Ffile_attributes <cycle 2> [191]
                0.00    0.00     892             move_it_in_display_line_to <cycle 2> [192]
                0.00    0.00     305             Fsignal <cycle 2> [196]
                0.00    0.00     102             Ffile_exists_p <cycle 2> [201]
                0.00    0.00   10402+63          prepare_to_modify_buffer <cycle 2> [207]
                0.00    0.00      92             Fsubstitute_in_file_name <cycle 2> [208]
                0.00    0.00    3036             Fapply <cycle 2> [210]
                0.00    0.00    1215             compute_display_string_pos <cycle 2> [212]
                0.00    0.00     250             timer_check <cycle 2> [213]
                0.00    0.00     639             display_line <cycle 2> [215]
                0.00    0.00    1890             process_tool_bar_item <cycle 2> [221]
                0.00    0.00       1             Fx_create_frame <cycle 2> [225]
                0.00    0.00     193             find_first_strong_char <cycle 2> [231]
                0.00    0.00     340             start_display <cycle 2> [232]
                0.00    0.00      67             Fget_buffer_create <cycle 2> [233]
                0.00    0.00      62             Ffile_readable_p <cycle 2> [235]
                0.00    0.00     318             menu_bar_item <cycle 2> [236]
                0.00    0.00    8391+33          signal_after_change <cycle 2> [239]
                0.00    0.00       1             x_set_font <cycle 2> [243]
                0.00    0.00      52             Fdirectory_files <cycle 2> [245]
                0.00    0.00   19578             bidi_resolve_explicit <cycle 2> [246]
                0.00    0.00     793             FletX <cycle 2> [248]
                0.00    0.00     207             Fkey_description <cycle 2> [250]
                0.00    0.00     793             append_space_for_newline <cycle 2> [252]
                0.00    0.00       1             x_default_font_parameter <cycle 2> [253]
                0.00    0.00     886             Fmapcar <cycle 2> [258]
                0.00    0.00    1478             apply_lambda <cycle 2> [260]
                0.00    0.00    1313             Feval <cycle 2> [261]
                0.00    0.00      12             run_window_configuration_change_hook <cycle 2> [262]
                0.00    0.00     128             Frequire <cycle 2> [265]
                0.00    0.00    1420             encode_coding_object <cycle 2> [266]
                0.00    0.00    2309             Finternal_set_lisp_face_attribute <cycle 2> [268]
                0.00    0.00      35             resize_mini_window <cycle 2> [270]
                0.00    0.00     468             safe__call <cycle 2> [273]
                0.00    0.00     801             Flet <cycle 2> [275]
                0.00    0.00      80+712         Fsort <cycle 2> [276]
                0.00    0.00     360             draw_fringe_bitmap_1 <cycle 2> [279]
                0.00    0.00     151+2936        display_mode_element <cycle 2> [281]
                0.00    0.00      11             Finsert_file_contents <cycle 2> [283]
                0.00    0.00    3025             code_conversion_save <cycle 2> [284]
                0.00    0.00    1787             Fmake_local_variable <cycle 2> [286]
                0.00    0.00      79             redisplay_internal <cycle 2> [287]
                0.00    0.00      16             Ffile_accessible_directory_p <cycle 2> [290]
                0.00    0.00    3522             top_level_1 <cycle 2> [294]
                0.00    0.00      14             wait_reading_process_output <cycle 2> [296]
                0.00    0.00      30             map_charset_chars <cycle 2> [300]
                0.00    0.00      40             menu_bar_items <cycle 2> [306]
                0.00    0.00    2405+1878        access_keymap_1 <cycle 2> [308]
                0.00    0.00      37             tool_bar_items <cycle 2> [312]
                0.00    0.00     385             menu_item_eval_property <cycle 2> [313]
                0.00    0.00     154             show_hourglass <cycle 2> [314]
                0.00    0.00     779             Fdefvar <cycle 2> [315]
                0.00    0.00      10             Ffile_executable_p <cycle 2> [320]
                0.00    0.00   66101             unbind_to <cycle 2> [324]
                0.00    0.00     187             select_window <cycle 2> [325]
                0.00    0.00     120             compute_display_string_end <cycle 2> [327]
                0.00    0.00     335+18165       map_sub_char_table <cycle 2> [328]
                0.00    0.00    1863             Fmacroexpand <cycle 2> [330]
                0.00    0.00      46             Fpropertize <cycle 2> [331]
                0.00    0.00      74             x_consider_frame_title <cycle 2> [332]
                0.00    0.00      75             redisplay_window <cycle 2> [333]
                0.00    0.00    1106+10          Fkey_binding <cycle 2> [334]
                0.00    0.00    2797             handle_fontified_prop <cycle 2> [336]
                0.00    0.00       1             command_loop_1 <cycle 2> [337]
                0.00    0.00     280             shadow_lookup <cycle 2> [338]
                0.00    0.00       1             fontset_from_font <cycle 2> [339]
                0.00    0.00     441             Fsingle_key_description <cycle 2> [341]
                0.00    0.00      31             Fmapconcat <cycle 2> [348]
                0.00    0.00      30             Fprin1_to_string <cycle 2> [350]
                0.00    0.00     168             Fmake_char <cycle 2> [356]
                0.00    0.00     242             Fdefconst <cycle 2> [357]
                0.00    0.00    8079             map_keymap_internal <cycle 2> [359]
                0.00    0.00      41             with_echo_area_buffer <cycle 2> [370]
                0.00    0.00     308             store_in_keymap <cycle 2> [374]
                0.00    0.00      72             update_overlay_arrows <cycle 2> [375]
                0.00    0.00    3995             Freplace_match <cycle 2> [383]
                0.00    0.00      92             safe_run_hooks <cycle 2> [384]
                0.00    0.00       2             Fnew_fontset <cycle 2> [389]
                0.00    0.00       3             status_notify <cycle 2> [390]
                0.00    0.00     335             map_char_table <cycle 2> [395]
                0.00    0.00     303             xsignal1 <cycle 2> [397]
                0.00    0.00      36             x_set_frame_parameters <cycle 2> [398]
                0.00    0.00     604+598         text_quoting_style <cycle 2> [400]
                0.00    0.00       2             Ffile_writable_p <cycle 2> [401]
                0.00    0.00       2             Fget_file_buffer <cycle 2> [403]
                0.00    0.00       2             Ffile_modes <cycle 2> [402]
                0.00    0.00       2             Fmake_directory_internal <cycle 2> [404]
                0.00    0.00       1             Ffile_newer_than_file_p <cycle 2> [405]
                0.00    0.00      77             display_mode_line <cycle 2> [406]
                0.00    0.00       2             Fdelete_process <cycle 2> [409]
                0.00    0.00      62             Fmapc <cycle 2> [411]
                0.00    0.00     558             bidi_fetch_char_skip_isolates <cycle 2> [414]
                0.00    0.00       6             load_charset <cycle 2> [420]
                0.00    0.00       2             Fzlib_decompress_region <cycle 2> [425]
                0.00    0.00       5             Feval_buffer <cycle 2> [426]
                0.00    0.00       1             write_region <cycle 2> [428]
                0.00    0.00     266             Fvertical_motion <cycle 2> [434]
                0.00    0.00  102653             get_keyelt <cycle 2> [435]
                0.00    0.00       1             Fverify_visited_file_modtime <cycle 2> [439]
                0.00    0.00       1             Ffile_regular_p <cycle 2> [437]
                0.00    0.00       1             encode_current_directory <cycle 2> [440]
                0.00    0.00       1             call_process <cycle 2> [443]
                0.00    0.00       3             del_range_both <cycle 2> [444]
                0.00    0.00     280             Fdefine_key <cycle 2> [453]
                0.00    0.00       1             bidi_initialize <cycle 2> [458]
                0.00    0.00       3             Fmake_network_process <cycle 2> [459]
                0.00    0.00       2             Fset_coding_system_priority <cycle 2> [461]
                0.00    0.00    1217             bidi_paragraph_init <cycle 2> [462]
                0.00    0.00       1             create_terminal <cycle 2> [465]
                0.00    0.00      30             x_default_parameter <cycle 2> [467]
                0.00    0.00      10             read_process_output <cycle 2> [469]
                0.00    0.00       9             secure_hash <cycle 2> [470]
                0.00    0.00      18             x_find_image_fd <cycle 2> [472]
                0.00    0.00      13             parse_single_submenu <cycle 2> [475]
                0.00    0.00       1             delete_frame <cycle 2> [476]
                0.00    0.00      38             set_frame_menubar <cycle 2> [477]
                0.00    0.00      14             adjust_frame_size <cycle 2> [478]
                0.00    0.00       6             exec_sentinel <cycle 2> [481]
                0.00    0.00      10             decode_coding_gap <cycle 2> [482]
                0.00    0.00      10             set_window_buffer <cycle 2> [487]
                0.00    0.00    1036             Fautoload_do_load <cycle 2> [488]
                0.00    0.00       3             connect_network_socket <cycle 2> [489]
                0.00    0.00       4             setup_echo_area_for_printing <cycle 2> [492]
                0.00    0.00       1             make_frame <cycle 2> [496]
                0.00    0.00       1             modify_event_symbol <cycle 2> [500]
                0.00    0.00       7             Fsetq <cycle 2> [504]
                0.00    0.00       2             set_message_1 <cycle 2> [505]
                0.00    0.00       1             Fdo_auto_save <cycle 2> [508]
                0.00    0.00   19578             bidi_resolve_weak <cycle 2> [509]
                0.00    0.00       6             Fcall_interactively <cycle 2> [511]
                0.00    0.00     370             save_excursion_restore <cycle 2> [514]
                0.00    0.00       5             Fdefvaralias <cycle 2> [516]
                0.00    0.00       2             xg_frame_set_char_size <cycle 2> [522]
                0.00    0.00       4             read_key_sequence.constprop.35 <cycle 2> [523]
                0.00    0.00    1341             single_menu_item <cycle 2> [524]
                0.00    0.00      17             push_message <cycle 2> [528]
                0.00    0.00       1             x_term_init <cycle 2> [530]
                0.00    0.00       6             Fset_window_configuration <cycle 2> [532]
                0.00    0.00       3             bind_polling_period <cycle 2> [534]
                0.00    0.00       1             code_convert_region.constprop.10 <cycle 2> [550]
                0.00    0.00       1             Fremove_text_properties <cycle 2> [554]
                0.00    0.00       1             Fmake_frame_visible <cycle 2> [558]
                0.00    0.00      13             Fkill_local_variable <cycle 2> [561]
                0.00    0.00      15             read_char <cycle 2> [562]
                0.00    0.00       1             x_make_frame_visible <cycle 2> [566]
                0.00    0.00     507             x_draw_glyph_string <cycle 2> [568]
                0.00    0.00       5             Fwindow_text_pixel_size <cycle 2> [573]
                0.00    0.00       2             x_default_scroll_bar_color_parameter <cycle 2> [574]
                0.00    0.00      20             decode_char <cycle 2> [575]
                0.00    0.00       2             finish_after_tls_connection <cycle 2> [578]
                0.00    0.00      75             XTset_vertical_scroll_bar <cycle 2> [584]
                0.00    0.00       1             Fcall_process <cycle 2> [588]
                0.00    0.00    1160             modify_text_properties <cycle 2> [590]
                0.00    0.00       2             internal_lisp_condition_case <cycle 2> [593]
                0.00    0.00     109             single_keymap_panes <cycle 2> [601]
                0.00    0.00       1             window_scroll_pixel_based <cycle 2> [611]
                0.00    0.00   18287             bidi_level_of_next_char <cycle 2> [614]
                0.00    0.00    1795             bidi_find_bracket_pairs <cycle 2> [615]
                0.00    0.00   18247             bidi_resolve_brackets <cycle 2> [619]
                0.00    0.00   18247             bidi_resolve_neutral <cycle 2> [620]
                0.00    0.00       4             doprnt <cycle 2> [623]
                0.00    0.00   48853+59354       mark_vectorlike <cycle 2> [669]
                0.00    0.00   98173             specbind <cycle 2> [649]
                0.00    0.00   89400             find_symbol_value <cycle 2> [651]
                0.00    0.00   83314             store_symval_forwarding <cycle 2> [652]
                0.00    0.00   62802             Fsymbol_value <cycle 2> [659]
                0.00    0.00   37197+4           set_iterator_to_next <cycle 2> [675]
                0.00    0.00   28756             mark_compiled <cycle 2> [687]
                0.00    0.00   18813             bidi_fetch_char <cycle 2> [697]
                0.00    0.00   11496+5           bset_redisplay <cycle 2> [709]
                0.00    0.00   11489             read0 <cycle 2> [710]
                0.00    0.00    8236             set_buffer_internal_1 <cycle 2> [724]
                0.00    0.00    8032             call1 <cycle 2> [726]
                0.00    0.00    7884             map_keymap <cycle 2> [727]
                0.00    0.00    3932             read_internal_start <cycle 2> [773]
                0.00    0.00    3802             next_element_from_c_string <cycle 2> [777]
                0.00    0.00    3757             call2 <cycle 2> [778]
                0.00    0.00    3589             mark_save_value <cycle 2> [780]
                0.00    0.00     414+3172        traverse_intervals_noorder <cycle 2> [994]
                0.00    0.00    3135             Fdowncase_region <cycle 2> [788]
                0.00    0.00    2710             mark_localized_symbol <cycle 2> [800]
                0.00    0.00    1801             Fcommandp <cycle 2> [837]
                0.00    0.00    1740             Flookup_key <cycle 2> [844]
                0.00    0.00    1709             Fand <cycle 2> [849]
                0.00    0.00    1656             Ferase_buffer <cycle 2> [854]
                0.00    0.00    1495             Fset_buffer <cycle 2> [863]
                0.00    0.00    1338             insert_from_string <cycle 2> [881]
                0.00    0.00    1336             general_insert_function <cycle 2> [882]
                0.00    0.00    1330             Finsert <cycle 2> [883]
                0.00    0.00    1294             Fput_text_property <cycle 2> [886]
                0.00    0.00    1199             current_minor_maps <cycle 2> [895]
                0.00    0.00    1194             bidi_init_it <cycle 2> [896]
                0.00    0.00    1087             get_visually_first_element <cycle 2> [902]
                0.00    0.00     976             mapcar1 <cycle 2> [909]
                0.00    0.00     938             Fif <cycle 2> [915]
                0.00    0.00     908             reseat_1 <cycle 2> [918]
                0.00    0.00     843             move_it_to <cycle 2> [930]
                0.00    0.00     645             Frun_hooks <cycle 2> [951]
                0.00    0.00     580             Fdefault_value <cycle 2> [962]
                0.00    0.00     572             reseat_at_next_visible_line_start <cycle 2> [964]
                0.00    0.00     572             forward_to_next_line_start <cycle 2> [963]
                0.00    0.00     522             internal_condition_case_n <cycle 2> [973]
                0.00    0.00     516             window_box <cycle 2> [975]
                0.00    0.00     495             internal_condition_case_1 <cycle 2> [980]
                0.00    0.00     440             handle_display_spec <cycle 2> [986]
                0.00    0.00     440             handle_single_display_spec <cycle 2> [987]
                0.00    0.00     374             mark_overlay <cycle 2> [1003]
                0.00    0.00     364             x_draw_fringe_bitmap <cycle 2> [1008]
                0.00    0.00     360             XTring_bell <cycle 2> [1011]
                0.00    0.00     360             draw_fringe_bitmap <cycle 2> [1012]
                0.00    0.00     356             merge <cycle 2> [1014]
                0.00    0.00     353             draw_glyphs <cycle 2> [1015]
                0.00    0.00     335             do_pending_window_change <cycle 2> [1020]
                0.00    0.00     329             bcall0 <cycle 2> [1021]
                0.00    0.00     327             unwind_to_catch <cycle 2> [1023]
                0.00    0.00     326             funcall_nil <cycle 2> [1024]
                0.00    0.00     322             Fdefault_toplevel_value <cycle 2> [1026]
                0.00    0.00     317             Fset_default_toplevel_value <cycle 2> [1028]
                0.00    0.00     303             xsignal <cycle 2> [1035]
                0.00    0.00     295             sweep_weak_table <cycle 2> [1038]
                0.00    0.00     290             update_window_line <cycle 2> [1041]
                0.00    0.00     277             safe__call1 <cycle 2> [1042]
                0.00    0.00     268             readable_events <cycle 2> [1046]
                0.00    0.00     267             reseat_at_previous_visible_line_start <cycle 2> [1048]
                0.00    0.00     267             move_it_by_lines <cycle 2> [1047]
                0.00    0.00     265             move_it_vertically_backward <cycle 2> [1050]
                0.00    0.00     252+7           readevalloop_eager_expand_eval <cycle 2> [1054]
                0.00    0.00     258             printchar <cycle 2> [1052]
                0.00    0.00     250             get_input_pending <cycle 2> [1055]
                0.00    0.00     240             call0 <cycle 2> [1058]
                0.00    0.00     235             window_box_height <cycle 2> [1059]
                0.00    0.00     223             x_write_glyphs <cycle 2> [1064]
                0.00    0.00     220             expand_and_dir_to_file <cycle 2> [1066]
                0.00    0.00     198             call3 <cycle 2> [1076]
                0.00    0.00     193             x_clear_end_of_line <cycle 2> [1080]
                0.00    0.00     192             pop_it <cycle 2> [1081]
                0.00    0.00     191             safe_call <cycle 2> [1084]
                0.00    0.00     190             access_keymap <cycle 2> [1085]
                0.00    0.00     187             map_keymap_canonical <cycle 2> [1090]
                0.00    0.00     187             Fmap_keymap <cycle 2> [1089]
                0.00    0.00     181             draw_row_fringe_bitmaps <cycle 2> [1094]
                0.00    0.00     174             compact_buffer <cycle 2> [1097]
                0.00    0.00     170             mark_buffer <cycle 2> [1099]
                0.00    0.00     156             Frestore_buffer_modified_p <cycle 2> [1111]
                0.00    0.00     154             Fbuffer_local_value <cycle 2> [1113]
                0.00    0.00     151             unwind_format_mode_line <cycle 2> [1118]
                0.00    0.00     151             detect_input_pending_run_timers <cycle 2> [1117]
                0.00    0.00     143             Fdelete_char <cycle 2> [1121]
                0.00    0.00     135             display_and_set_cursor <cycle 2> [1124]
                0.00    0.00     127             update_window <cycle 2> [1131]
                0.00    0.00     127             x_update_window_end <cycle 2> [1133]
                0.00    0.00     127             draw_window_fringes <cycle 2> [1130]
                0.00    0.00     124             detect_input_pending <cycle 2> [1134]
                0.00    0.00     123             x_draw_window_cursor <cycle 2> [1135]
                0.00    0.00     118             internal_condition_case_2 <cycle 2> [1138]
                0.00    0.00      91             apply1 <cycle 2> [1167]
                0.00    0.00      91             mark_face_cache <cycle 2> [1168]
                0.00    0.00      85             Fbuffer_list <cycle 2> [1175]
                0.00    0.00      78             adjust_glyph_matrix <cycle 2> [1181]
                0.00    0.00      78             overlay_arrows_changed_p <cycle 2> [1183]
                0.00    0.00      77             swap_in_global_binding <cycle 2> [1190]
                0.00    0.00      76             mark_discard_killed_buffers <cycle 2> [1193]
                0.00    0.00      74             redisplay_window_0 <cycle 2> [1204]
                0.00    0.00      70             update_frame <cycle 2> [1215]
                0.00    0.00      70             update_window_tree <cycle 2> [1216]
                0.00    0.00      69             hscroll_window_tree <cycle 2> [1217]
                0.00    0.00      67             try_window <cycle 2> [1225]
                0.00    0.00      63             redisplay_preserve_echo_area <cycle 2> [1236]
                0.00    0.00      60             iterate_out_of_display_property <cycle 2> [1249]
                0.00    0.00      59             run_hook <cycle 2> [1253]
                0.00    0.00      58             swap_out_buffer_local_variables <cycle 2> [1258]
                0.00    0.00      31+25          print_object <cycle 2> [1360]
                0.00    0.00      54             safe_run_hook_funcall <cycle 2> [1269]
                0.00    0.00      54             kill_buffer_processes <cycle 2> [1267]
                0.00    0.00      54             Frun_hook_with_args_until_failure <cycle 2> [1264]
                0.00    0.00      50             draw_phys_cursor_glyph <cycle 2> [1284]
                0.00    0.00      48             funcall_not <cycle 2> [1294]
                0.00    0.00      45             ensure_echo_area_buffers <cycle 2> [1304]
                0.00    0.00      41             unwind_with_echo_area_buffer <cycle 2> [1313]
                0.00    0.00      40             required_matrix_height <cycle 2> [1319]
                0.00    0.00      40             display_mode_lines <cycle 2> [1316]
                0.00    0.00      40             current_message <cycle 2> [1315]
                0.00    0.00      40             x_fix_overlapping_area <cycle 2> [1320]
                0.00    0.00      39             update_frame_tool_bar <cycle 2> [1322]
                0.00    0.00      38             xg_update_frame_menubar <cycle 2> [1326]
                0.00    0.00      38             Fadd_face_text_property <cycle 2> [1323]
                0.00    0.00      37             redisplay_windows <cycle 2> [1331]
                0.00    0.00      35             call4 <cycle 2> [1337]
                0.00    0.00      33             insert_char <cycle 2> [1339]
                0.00    0.00      33             swallow_events <cycle 2> [1341]
                0.00    0.00      29             display_echo_area_1 <cycle 2> [1364]
                0.00    0.00      29             echo_area_display <cycle 2> [1365]
                0.00    0.00      28             Fcond <cycle 2> [1366]
                0.00    0.00      26             Fwindow_mode_line_height <cycle 2> [1381]
                0.00    0.00      24             erase_phys_cursor <cycle 2> [1392]
                0.00    0.00      24             Fimage_mask_p <cycle 2> [1391]
                0.00    0.00      23             strout <cycle 2> [1399]
                0.00    0.00      22             Fthrow <cycle 2> [1402]
                0.00    0.00      21             adjust_frame_glyphs <cycle 2> [1405]
                0.00    0.00      20             mark_image_cache <cycle 2> [1412]
                0.00    0.00      19             For <cycle 2> [1414]
                0.00    0.00      18             allocate_matrices_for_window_redisplay <cycle 2> [1420]
                0.00    0.00      18             Fset_buffer_modified_p <cycle 2> [1419]
                0.00    0.00      17             sweep_weak_hash_tables <cycle 2> [1439]
                0.00    0.00      17             mark_kboards <cycle 2> [1428]
                0.00    0.00      17             xg_mark_data <cycle 2> [1441]
                0.00    0.00      17             mark_specpdl <cycle 2> [1429]
                0.00    0.00      17             active_maps <cycle 2> [1425]
                0.00    0.00      16             Fdelete_region <cycle 2> [1442]
                0.00    0.00      16             keyremap_step.constprop.36 <cycle 2> [1445]
                0.00    0.00      16             sit_for <cycle 2> [1448]
                0.00    0.00      15             xpm_load <cycle 2> [1455]
                0.00    0.00      13+1           x_set_frame_alpha <cycle 2> [1469]
                0.00    0.00      13             digest_single_submenu <cycle 2> [1464]
                0.00    0.00      13             do_switch_frame <cycle 2> [1465]
                0.00    0.00      12             run_funs <cycle 2> [1474]
                0.00    0.00      11             Fprogn <cycle 2> [1479]
                0.00    0.00      11             Ffetch_bytecode <cycle 2> [1477]
                0.00    0.00      11             get_doc_string <cycle 2> [1482]
                0.00    0.00      11             Flocate_file_internal <cycle 2> [1478]
                0.00    0.00       8             update_window_cursor <cycle 2> [1530]
                0.00    0.00       7             Fset_window_buffer <cycle 2> [1535]
                0.00    0.00       7             Fmd5 <cycle 2> [1534]
                0.00    0.00       6             decode_coding_charset <cycle 2> [1566]
                0.00    0.00       6             unlock_file <cycle 2> [1580]
                0.00    0.00       6             Fredirect_frame_focus <cycle 2> [1558]
                0.00    0.00       6             Finsert_and_inherit <cycle 2> [1555]
                0.00    0.00       6             Ffuncall_interactively <cycle 2> [1554]
                0.00    0.00       6             test_undefined <cycle 2> [1578]
                0.00    0.00       6             make_lispy_event <cycle 2> [1573]
                0.00    0.00       5             Fkill_all_local_variables <cycle 2> [1583]
                0.00    0.00       4             esprintf <cycle 2> [1607]
                0.00    0.00       4             Fmodify_frame_parameters <cycle 2> [1596]
                0.00    0.00       3             redraw_frame <cycle 2> [1648]
                0.00    0.00       3             Fwhile <cycle 2> [1632]
                0.00    0.00       3             update_cursor_in_window_tree <cycle 2> [1657]
                0.00    0.00       3             Fmessage <cycle 2> [1628]
                0.00    0.00       3             message3 <cycle 2> [1645]
                0.00    0.00       3             message3_nolog <cycle 2> [1646]
                0.00    0.00       2             run_hook_wrapped_funcall <cycle 2> [1709]
                0.00    0.00       2             x_set_window_size <cycle 2> [1731]
                0.00    0.00       2             allocate_matrices_for_frame_redisplay <cycle 2> [1684]
                0.00    0.00       2             print_string <cycle 2> [1701]
                0.00    0.00       2             truncate_undo_list <cycle 2> [1717]
                0.00    0.00       2             x_bitmap_icon <cycle 2> [1722]
                0.00    0.00       2             xg_set_icon <cycle 2> [1737]
                0.00    0.00       2             x_scroll_run <cycle 2> [1729]
                0.00    0.00       2             update_single_window <cycle 2> [1721]
                0.00    0.00       2             Fimage_metadata <cycle 2> [1672]
                0.00    0.00       2             Fsecure_hash <cycle 2> [1677]
                0.00    0.00       2             internal_condition_case <cycle 2> [1698]
                0.00    0.00       2             resize_echo_area_exactly <cycle 2> [1706]
                0.00    0.00       1             Fredraw_frame <cycle 2> [1758]
                0.00    0.00       1             call_process_cleanup <cycle 2> [1777]
                0.00    0.00       1             initialize_frame_menubar <cycle 2> [1813]
                0.00    0.00       1             redisplay_window_1 <cycle 2> [1829]
                0.00    0.00       1             x_window <cycle 2> [1897]
                0.00    0.00       1             xg_create_frame_widgets <cycle 2> [1902]
                0.00    0.00       1             x_set_icon_type <cycle 2> [1875]
                0.00    0.00       1             x_set_scroll_bar_width <cycle 2> [1888]
                0.00    0.00       1             x_set_scroll_bar_height <cycle 2> [1887]
                0.00    0.00       1             x_set_alpha <cycle 2> [1865]
                0.00    0.00       1             x_new_font <cycle 2> [1863]
                0.00    0.00       1             Fundo_boundary <cycle 2> [1767]
                0.00    0.00       1             Fscroll_up <cycle 2> [1759]
                0.00    0.00       1             scroll_command <cycle 2> [1836]
                0.00    0.00       1             window_scroll <cycle 2> [1851]
                0.00    0.00       1             pos_visible_p <cycle 2> [1825]
                0.00    0.00       1             line_bottom_y <cycle 2> [1814]
                0.00    0.00       1             redisplay_mode_lines <cycle 2> [1828]
                0.00    0.00       1             Fkill_emacs <cycle 2> [1749]
                0.00    0.00       1             shut_down_emacs <cycle 2> [1840]
                0.00    0.00       1             Fdelete_terminal <cycle 2> [1745]
                0.00    0.00       1             check_minibuf_window <cycle 2> [1782]
                0.00    0.00       1             Fprin1 <cycle 2> [1757]
                0.00    0.00       1             Fmaphash <cycle 2> [1753]
                0.00    0.00       1             Fx_open_connection <cycle 2> [1772]
                0.00    0.00       1             Fwrite_region <cycle 2> [1770]
                0.00    0.00       1             lock_file <cycle 2> [1817]
-----------------------------------------------
                                   1             update_frame_tool_bar <cycle 2> [1322]
                                   2             Fimage_metadata <cycle 2> [1672]
                                  24             Fimage_mask_p <cycle 2> [1391]
                                  60             handle_single_display_spec <cycle 2> [987]
[2]     66.1    0.00    0.72      87         lookup_image <cycle 2> [2]
                0.72    0.00      30/30          gif_load [3]
                0.00    0.00      87/7417        Fnreverse [14]
                0.00    0.00      15/258703      Fcons [71]
                0.00    0.00      87/87          sxhash [1173]
                0.00    0.00      87/87          search_image_cache [1171]
                0.00    0.00      87/824         gettime [932]
                0.00    0.00      48/1759        xzalloc [843]
                0.00    0.00      48/427         define_image_type [990]
                0.00    0.00      48/427         lookup_image_type [991]
                0.00    0.00      48/1327581     unblock_input_to [625]
                0.00    0.00      48/1327254     unblock_input [626]
                0.00    0.00      48/48          x_build_heuristic_mask [1296]
                0.00    0.00      15/101750      list1 [646]
                0.00    0.00      12/1111        process_pending_signals <cycle 3> [899]
                0.00    0.00       6/970         do_pending_atimers [911]
                0.00    0.00       3/3           svg_load [1654]
                                  15             xpm_load <cycle 2> [1455]
-----------------------------------------------
                0.72    0.00      30/30          lookup_image <cycle 2> [2]
[3]     66.1    0.72    0.00      30         gif_load [3]
                0.00    0.00     865/10383       make_unibyte_string [174]
                0.00    0.00    1880/258703      Fcons [71]
                0.00    0.00      30/6724        list2 [251]
                0.00    0.00      30/571         make_float [373]
                0.00    0.00   15323/34784       lookup_rgb_color [680]
                0.00    0.00      60/63          Fimagemagick_types [1233]
                0.00    0.00      30/61          Finit_image_library [1239]
                0.00    0.00      30/1759        xzalloc [843]
                0.00    0.00      30/48          colors_in_color_table [1292]
                0.00    0.00      30/48          free_color_table [1293]
                0.00    0.00      30/48          image_background [1295]
-----------------------------------------------
                0.00    0.63     124/124         event_handler_gdk [5]
[4]     58.1    0.00    0.63     124         handle_one_xevent [4]
                0.00    0.53       3/3           x_focus_changed [6]
                0.01    0.10       1/10          x_set_frame_alpha <cycle 2> [1469]
                0.00    0.00      16/56          store_frame_param [441]
                0.00    0.00      12/58          get_frame_param [468]
                0.00    0.00       3/11189       Fgethash [131]
                0.00    0.00      12/258703      Fcons [71]
                0.00    0.00      12/6724        list2 [251]
                0.00    0.00     124/156         x_any_window_to_frame [1112]
                0.00    0.00      57/65          x_top_window_to_frame [1230]
                0.00    0.00      44/44          xft_settings_event [1306]
                0.00    0.00      44/44          x_handle_property_notify [1305]
                0.00    0.00      32/123999      Fplist_get [640]
                0.00    0.00      32/112492      Fget [644]
                0.00    0.00      12/13          get_current_wm_state [1466]
                0.00    0.00      12/715009      Fcdr [628]
                0.00    0.00      12/37          frame_size_history_add [1330]
                0.00    0.00       9/19          kbd_buffer_store_buffered_event [1417]
                0.00    0.00       9/10          x_real_positions [1504]
                0.00    0.00       8/8           x_window_to_frame [1532]
                0.00    0.00       8/85          popup_activated [1177]
                0.00    0.00       8/8           x_x_to_emacs_modifiers [1533]
                0.00    0.00       3/3           x_detect_focus_change [1660]
                0.00    0.00       3/3           expose_frame [1642]
                0.00    0.00       2/2           xg_frame_resized [1734]
                0.00    0.00       1/11          redisplay_other_windows [1486]
                0.00    0.00       1/11          record_asynch_buffer_change [1485]
                0.00    0.00       1/1           do_ewmh_fullscreen [1790]

...

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






^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 20:47             ` Lars Ingebrigtsen
@ 2016-05-03 20:53               ` Lars Ingebrigtsen
  2016-05-03 21:34                 ` Andreas Schwab
  2016-05-03 23:37                 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 20:53 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

And here's with ImageMagick.  I don't understand the "cumulative
seconds" thing, because it must have used more than a minute of CPU time
during this run:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 26.83      0.22     0.22       25     8.80    13.20  imagemagick_load_image
 17.07      0.36     0.14                             _init
 13.41      0.47     0.11 13073061     0.00     0.00  lookup_rgb_color
  4.88      0.51     0.04     7447     0.01     0.01  Fnreverse
  3.66      0.54     0.03    48214     0.00     0.00  exec_byte_code
  2.44      0.56     0.02  4152843     0.00     0.00  mark_object
  2.44      0.58     0.02  1417944     0.00     0.00  readchar
  2.44      0.60     0.02    87245     0.00     0.00  re_match_2_internal
  2.44      0.62     0.02    28465     0.00     0.00  re_compile_pattern
  2.44      0.64     0.02                             imagemagick_error
  1.22      0.65     0.01   753484     0.00     0.00  lookup_char_property
  1.22      0.66     0.01   124739     0.00     0.00  make_uninit_multibyte_string
  1.22      0.67     0.01    98949     0.00     0.00  specbind
  1.22      0.68     0.01    90362     0.00     0.00  find_interval
  1.22      0.69     0.01    59853     0.00     0.00  assq_no_quit
  1.22      0.70     0.01    50260     0.00     0.00  oblookup
  1.22      0.71     0.01    47788     0.00     0.00  x_produce_glyphs
  1.22      0.72     0.01    30850     0.00     0.00  Fsetcdr
  1.22      0.73     0.01     3054     0.00     0.00  str_as_unibyte
  1.22      0.74     0.01     1615     0.01     0.01  decode_coding
  1.22      0.75     0.01      910     0.01     0.02  move_it_in_display_line_to
  1.22      0.76     0.01      335     0.03     0.03  map_sub_char_table
  1.22      0.77     0.01       17     0.59     1.76  Fgarbage_collect
  1.22      0.78     0.01       17     0.59     0.59  sweep_conses
  1.22      0.79     0.01       17     0.59     0.59  sweep_intervals
  1.22      0.80     0.01       17     0.59     0.59  xg_mark_data
  1.22      0.81     0.01                             bidi_pop_embedding_level
  1.22      0.82     0.01                             deliver_user_signal
  0.00      0.82     0.00  1338413     0.00     0.00  unblock_input_to
  0.00      0.82     0.00  1338086     0.00     0.00  unblock_input
  0.00      0.82     0.00  1280493     0.00     0.00  readbyte_from_file
  0.00      0.82     0.00   937859     0.00     0.00  Fcdr
  0.00      0.82     0.00   740067     0.00     0.00  textget

[...]

 %         the percentage of the total running time of the
time       program used by this function.

cumulative a running sum of the number of seconds accounted
 seconds   for by this function and those listed above it.

 self      the number of seconds accounted for by this
seconds    function alone.  This is the major sort for this
           listing.


[...]

		     Call graph (explanation follows)


granularity: each sample hit covers 2 byte(s) for 1.22% of 0.82 seconds

index % time    self  children    called     name
[1]     78.0    0.33    0.31      34+5892122 <cycle 2 as a whole> [1]
                0.22    0.11      25             imagemagick_load_image <cycle 2> [5]
                0.03    0.02   48214             exec_byte_code <cycle 2> [11]
                0.00    0.04  114769             read1 <cycle 2> [13]
                0.01    0.02      17             Fgarbage_collect <cycle 2> [17]
                0.00    0.02  167390             Ffuncall <cycle 2> [20]
                0.02    0.00 4152843+1972085     mark_object <cycle 2> [21]
                0.01    0.00     910             move_it_in_display_line_to <cycle 2> [29]
                0.00    0.01     878             Fset_fontset_font <cycle 2> [30]
                0.00    0.01    2491+105         Fexpand_file_name <cycle 2> [33]
                0.01    0.00    1615             decode_coding <cycle 2> [36]
                0.01    0.00   98949             specbind <cycle 2> [39]
                0.01    0.00     335+18165       map_sub_char_table <cycle 2> [44]
                0.01    0.00      17             xg_mark_data <cycle 2> [47]
                0.00    0.01    1124             Fwhere_is_internal <cycle 2> [60]
                0.00    0.01   91662             find_symbol_value <cycle 2> [61]
                0.00    0.01    3464             handle_stop <cycle 2> [62]
                0.00    0.00     128             openp <cycle 2> [63]
                0.00    0.00    3986             replace_range <cycle 2> [64]
                0.00    0.00    2580             Ffile_name_nondirectory <cycle 2> [65]
                0.00    0.00     933             display_line <cycle 2> [66]
                0.00    0.00    7211             update_compositions <cycle 2> [75]
                0.00    0.00   39528+2140        next_element_from_buffer <cycle 2> [77]
                0.00    0.00    1144             display_string <cycle 2> [79]
                0.00    0.00    1834             del_range_1 <cycle 2> [85]
                0.00    0.00     606             styled_format <cycle 2> [86]
                0.00    0.00    1342             insert_from_string_1 <cycle 2> [90]
                0.00    0.00   50284             accessible_keymaps_1 <cycle 2> [91]
                0.00    0.00    1354             Fnext_single_char_property_change <cycle 2> [92]
                0.00    0.00     752             Fdirectory_file_name <cycle 2> [95]
                0.00    0.00     756             Ffile_name_directory <cycle 2> [98]
                0.00    0.00   23054             Fset_default <cycle 2> [103]
                0.00    0.00   11501             prepare_to_modify_buffer_1 <cycle 2> [104]
                0.00    0.00     625             Ffile_symlink_p <cycle 2> [106]
                0.00    0.00     590             Ffile_name_as_directory <cycle 2> [107]
                0.00    0.00    1867             face_before_or_after_it_pos <cycle 2> [110]
                0.00    0.00      69             readevalloop <cycle 2> [111]
                0.00    0.00    3617             top_level_1 <cycle 2> [123]
                0.00    0.00    4555             next_element_from_string <cycle 2> [124]
                0.00    0.00      57             Fkill_buffer <cycle 2> [125]
                0.00    0.00   27416             bidi_move_to_visually_next <cycle 2> [129]
                0.00    0.00    3135             casify_region <cycle 2> [132]
                0.00    0.00      82             lookup_image <cycle 2> [137]
                0.00    0.00    6777             Fset <cycle 2> [138]
                0.00    0.00    2309             Finternal_set_lisp_face_attribute <cycle 2> [141]
                0.00    0.00      92             Fload <cycle 2> [143]
                0.00    0.00      54             directory_files_internal <cycle 2> [147]
                0.00    0.00     685             reseat <cycle 2> [148]
                0.00    0.00     593             init_iterator <cycle 2> [151]
                0.00    0.00    3040             code_convert_string <cycle 2> [155]
                0.00    0.00     217             Ffile_directory_p <cycle 2> [158]
                0.00    0.00   48087             where_is_internal_1 <cycle 2> [159]
                0.00    0.00    1123             Fcurrent_active_maps <cycle 2> [160]
                0.00    0.00     356             draw_fringe_bitmap_1 <cycle 2> [161]
                0.00    0.00     361             merge <cycle 2> [163]
                0.00    0.00    1613             decode_coding_object <cycle 2> [165]
                0.00    0.00    3992             handle_display_prop <cycle 2> [167]
                0.00    0.00    1104             append_space_for_newline <cycle 2> [173]
                0.00    0.00     175+3380        display_mode_element <cycle 2> [179]
                0.00    0.00     259             find_first_strong_char <cycle 2> [181]
                0.00    0.00     119             Ffile_attributes <cycle 2> [183]
                0.00    0.00     532             back_to_previous_visible_line_start <cycle 2> [187]
                0.00    0.00    1797             Fmake_local_variable <cycle 2> [193]
                0.00    0.00   28707             bidi_resolve_explicit <cycle 2> [194]
                0.00    0.00     102             Ffile_exists_p <cycle 2> [197]
                0.00    0.00   48014             get_next_display_element <cycle 2> [203]
                0.00    0.00      92             Fsubstitute_in_file_name <cycle 2> [205]
                0.00    0.00    1407             add_text_properties_1 <cycle 2> [206]
                0.00    0.00   19787+20567       eval_sub <cycle 2> [207]
                0.00    0.00    8401+33          signal_after_change <cycle 2> [208]
                0.00    0.00    1436             encode_coding_object <cycle 2> [209]
                0.00    0.00   10412+63          prepare_to_modify_buffer <cycle 2> [211]
                0.00    0.00     793             FletX <cycle 2> [215]
                0.00    0.00      82+722         Fsort <cycle 2> [216]
                0.00    0.00      69             Ffile_readable_p <cycle 2> [218]
                0.00    0.00    1368             Feval <cycle 2> [221]
                0.00    0.00       1             Fx_create_frame <cycle 2> [222]
                0.00    0.00    1443             compute_display_string_pos <cycle 2> [224]
                0.00    0.00      54             Fdirectory_files <cycle 2> [225]
                0.00    0.00     779             Fdefvar <cycle 2> [226]
                0.00    0.00    1122             where_is_internal <cycle 2> [227]
                0.00    0.00     364             start_display <cycle 2> [228]
                0.00    0.00     496             x_draw_glyph_string <cycle 2> [229]
                0.00    0.00       1             x_set_font <cycle 2> [234]
                0.00    0.00      12             run_window_configuration_change_hook <cycle 2> [236]
                0.00    0.00     502             safe__call <cycle 2> [241]
                0.00    0.00       1             x_default_font_parameter <cycle 2> [247]
                0.00    0.00    1974             process_tool_bar_item <cycle 2> [256]
                0.00    0.00     242             Fdefconst <cycle 2> [257]
                0.00    0.00      53             resize_mini_window <cycle 2> [260]
                0.00    0.00      70             update_overlay_arrows <cycle 2> [262]
                0.00    0.00      86             x_consider_frame_title <cycle 2> [266]
                0.00    0.00     441             Fsingle_key_description <cycle 2> [268]
                0.00    0.00     283             timer_check <cycle 2> [269]
                0.00    0.00     403             menu_item_eval_property <cycle 2> [272]
                0.00    0.00      69             redisplay_internal <cycle 2> [273]
                0.00    0.00      19             wait_reading_process_output <cycle 2> [274]
                0.00    0.00    2479+1886        access_keymap_1 <cycle 2> [278]
                0.00    0.00     207             Fkey_description <cycle 2> [279]
                0.00    0.00      16             Ffile_accessible_directory_p <cycle 2> [281]
                0.00    0.00      12             Finsert_file_contents <cycle 2> [283]
                0.00    0.00      71             Fget_buffer_create <cycle 2> [288]
                0.00    0.00     138             show_hourglass <cycle 2> [289]
                0.00    0.00     376             save_excursion_restore <cycle 2> [293]
                0.00    0.00      10             Ffile_executable_p <cycle 2> [294]
                0.00    0.00      46             menu_bar_items <cycle 2> [296]
                0.00    0.00   66777             unbind_to <cycle 2> [297]
                0.00    0.00      43             tool_bar_items <cycle 2> [299]
                0.00    0.00       1             command_loop_1 <cycle 2> [300]
                0.00    0.00     266             Fvertical_motion <cycle 2> [301]
                0.00    0.00       1             fontset_from_font <cycle 2> [307]
                0.00    0.00      59             with_echo_area_buffer <cycle 2> [310]
                0.00    0.00     168             Fmake_char <cycle 2> [312]
                0.00    0.00      30             Fprin1_to_string <cycle 2> [313]
                0.00    0.00     104             safe_run_hooks <cycle 2> [317]
                0.00    0.00     280             shadow_lookup <cycle 2> [318]
                0.00    0.00      95             inhibit_garbage_collection <cycle 2> [321]
                0.00    0.00    3466             handle_fontified_prop <cycle 2> [322]
                0.00    0.00      96             compute_display_string_end <cycle 2> [323]
                0.00    0.00      87             redisplay_window <cycle 2> [325]
                0.00    0.00      36             x_set_frame_parameters <cycle 2> [326]
                0.00    0.00     717             bidi_fetch_char_skip_isolates <cycle 2> [337]
                0.00    0.00      30             map_charset_chars <cycle 2> [338]
                0.00    0.00     605+599         text_quoting_style <cycle 2> [341]
                0.00    0.00       2             Fget_file_buffer <cycle 2> [345]
                0.00    0.00       2             Ffile_modes <cycle 2> [343]
                0.00    0.00       2             Ffile_writable_p <cycle 2> [344]
                0.00    0.00       1             Ffile_newer_than_file_p <cycle 2> [346]
                0.00    0.00       2             Fnew_fontset <cycle 2> [352]
                0.00    0.00      46             Fpropertize <cycle 2> [353]
                0.00    0.00       5             Feval_buffer <cycle 2> [360]
                0.00    0.00       1             write_region <cycle 2> [362]
                0.00    0.00      33             Fmapconcat <cycle 2> [363]
                0.00    0.00    3991             Freplace_match <cycle 2> [365]
                0.00    0.00    1499             bidi_paragraph_init <cycle 2> [367]
                0.00    0.00   49488             funcall_lambda <cycle 2> [368]
                0.00    0.00       1             Fverify_visited_file_modtime <cycle 2> [371]
                0.00    0.00       1             Ffile_regular_p <cycle 2> [369]
                0.00    0.00       1             encode_current_directory <cycle 2> [372]
                0.00    0.00      11             secure_hash <cycle 2> [375]
                0.00    0.00      19             Fcall_interactively <cycle 2> [376]
                0.00    0.00      18             x_find_image_fd <cycle 2> [378]
                0.00    0.00       1             call_process <cycle 2> [379]
                0.00    0.00     280             Fdefine_key <cycle 2> [380]
                0.00    0.00      11             read_process_output <cycle 2> [382]
                0.00    0.00       3             connect_network_socket <cycle 2> [385]
                0.00    0.00       5             Fdefvaralias <cycle 2> [386]
                0.00    0.00       3             del_range_both <cycle 2> [389]
                0.00    0.00       1             delete_frame <cycle 2> [391]
                0.00    0.00       6             exec_sentinel <cycle 2> [392]
                0.00    0.00     211             select_window <cycle 2> [393]
                0.00    0.00   28707             bidi_resolve_weak <cycle 2> [394]
                0.00    0.00     308             store_in_keymap <cycle 2> [397]
                0.00    0.00       1             create_terminal <cycle 2> [403]
                0.00    0.00      10             decode_coding_gap <cycle 2> [404]
                0.00    0.00      44             set_frame_menubar <cycle 2> [405]
                0.00    0.00       1             bidi_initialize <cycle 2> [407]
                0.00    0.00       2             Fset_coding_system_priority <cycle 2> [413]
                0.00    0.00       6             load_charset <cycle 2> [415]
                0.00    0.00       1             x_term_init <cycle 2> [419]
                0.00    0.00       1             modify_event_symbol <cycle 2> [422]
                0.00    0.00       2             xg_frame_set_char_size <cycle 2> [423]
                0.00    0.00       1             x_make_frame_visible <cycle 2> [424]
                0.00    0.00       2             status_notify <cycle 2> [427]
                0.00    0.00       3             bind_polling_period <cycle 2> [431]
                0.00    0.00       6             Fset_window_configuration <cycle 2> [432]
                0.00    0.00       1             Fdo_auto_save <cycle 2> [434]
                0.00    0.00       3             Fmake_network_process <cycle 2> [437]
                0.00    0.00       1             Fkill_emacs <cycle 2> [441]
                0.00    0.00       2             finish_after_tls_connection <cycle 2> [445]
                0.00    0.00       1             code_convert_region.constprop.10 <cycle 2> [447]
                0.00    0.00       1             Fremove_text_properties <cycle 2> [451]
                0.00    0.00       2             Fzlib_decompress_region <cycle 2> [452]
                0.00    0.00       1             Fcall_process <cycle 2> [453]
                0.00    0.00       4             setup_echo_area_for_printing <cycle 2> [455]
                0.00    0.00      13             Fkill_local_variable <cycle 2> [457]
                0.00    0.00      20             decode_char <cycle 2> [459]
                0.00    0.00       1             window_scroll_pixel_based <cycle 2> [464]
                0.00    0.00       3             message3 <cycle 2> [466]
                0.00    0.00   48855+59357       mark_vectorlike <cycle 2> [516]
                0.00    0.00  102735             get_keyelt <cycle 2> [495]
                0.00    0.00   84747             store_symval_forwarding <cycle 2> [502]
                0.00    0.00   64156             Fsymbol_value <cycle 2> [505]
                0.00    0.00   46812+4           set_iterator_to_next <cycle 2> [519]
                0.00    0.00    1446+44622       mark_char_table <cycle 2> [756]
                0.00    0.00   28749             mark_compiled <cycle 2> [533]
                0.00    0.00   27873             bidi_fetch_char <cycle 2> [537]
                0.00    0.00   27416             bidi_level_of_next_char <cycle 2> [538]
                0.00    0.00   27370             bidi_resolve_neutral <cycle 2> [540]
                0.00    0.00   27370             bidi_resolve_brackets <cycle 2> [539]
                0.00    0.00   18706             read_list <cycle 2> [552]
                0.00    0.00   11506+5           bset_redisplay <cycle 2> [564]
                0.00    0.00   11489             read0 <cycle 2> [565]
                0.00    0.00    8468             set_buffer_internal_1 <cycle 2> [582]
                0.00    0.00    8109             call1 <cycle 2> [585]
                0.00    0.00    8109             map_keymap_internal <cycle 2> [586]
                0.00    0.00    7902             map_keymap <cycle 2> [589]
                0.00    0.00    6294             read_vector <cycle 2> [605]
                0.00    0.00    4390             next_element_from_c_string <cycle 2> [631]
                0.00    0.00    3932             read_internal_start <cycle 2> [642]
                0.00    0.00    3817             call2 <cycle 2> [646]
                0.00    0.00    3589             mark_save_value <cycle 2> [651]
                0.00    0.00     414+3174        traverse_intervals_noorder <cycle 2> [897]
                0.00    0.00    3135             Fdowncase_region <cycle 2> [659]
                0.00    0.00    3134             modify_text <cycle 2> [660]
                0.00    0.00    3051             code_conversion_save <cycle 2> [668]
                0.00    0.00    3030             Fapply <cycle 2> [669]
                0.00    0.00    2711             mark_localized_symbol <cycle 2> [676]
                0.00    0.00    2299             bidi_find_bracket_pairs <cycle 2> [692]
                0.00    0.00    1863             Fmacroexpand <cycle 2> [715]
                0.00    0.00    1834             Fcommandp <cycle 2> [716]
                0.00    0.00    1746             Flookup_key <cycle 2> [724]
                0.00    0.00    1709             Fand <cycle 2> [728]
                0.00    0.00    1671             Ferase_buffer <cycle 2> [732]
                0.00    0.00    1569             Fset_buffer <cycle 2> [743]
                0.00    0.00    1541             apply_lambda <cycle 2> [745]
                0.00    0.00    1428             bidi_init_it <cycle 2> [760]
                0.00    0.00    1342             insert_from_string <cycle 2> [768]
                0.00    0.00    1341             single_menu_item <cycle 2> [770]
                0.00    0.00    1340             general_insert_function <cycle 2> [771]
                0.00    0.00    1334             Finsert <cycle 2> [772]
                0.00    0.00    1294             Fput_text_property <cycle 2> [777]
                0.00    0.00    1279             get_visually_first_element <cycle 2> [778]
                0.00    0.00    1212             current_minor_maps <cycle 2> [787]
                0.00    0.00    1160             modify_text_properties <cycle 2> [790]
                0.00    0.00    1106+10          Fkey_binding <cycle 2> [794]
                0.00    0.00    1036             Fautoload_do_load <cycle 2> [800]
                0.00    0.00     984             mapcar1 <cycle 2> [808]
                0.00    0.00     956             Fif <cycle 2> [811]
                0.00    0.00     950             reseat_1 <cycle 2> [813]
                0.00    0.00     892             Fmapcar <cycle 2> [824]
                0.00    0.00     861             move_it_to <cycle 2> [829]
                0.00    0.00     848             reseat_at_next_visible_line_start <cycle 2> [834]
                0.00    0.00     848             forward_to_next_line_start <cycle 2> [833]
                0.00    0.00     801             Flet <cycle 2> [843]
                0.00    0.00     666             Frun_hooks <cycle 2> [854]
                0.00    0.00     585             Fdefault_value <cycle 2> [865]
                0.00    0.00     573             window_box <cycle 2> [867]
                0.00    0.00     562             internal_condition_case_n <cycle 2> [870]
                0.00    0.00     527             internal_condition_case_1 <cycle 2> [876]
                0.00    0.00     298+194         substitute_object_recurse <cycle 2> [951]
                0.00    0.00     406             XTring_bell <cycle 2> [898]
                0.00    0.00     404             handle_display_spec <cycle 2> [899]
                0.00    0.00     404             handle_single_display_spec <cycle 2> [900]
                0.00    0.00     376             mark_overlay <cycle 2> [914]
                0.00    0.00     370             x_draw_fringe_bitmap <cycle 2> [917]
                0.00    0.00     366             menu_bar_item <cycle 2> [919]
                0.00    0.00     356             draw_fringe_bitmap <cycle 2> [925]
                0.00    0.00     343             funcall_nil <cycle 2> [928]
                0.00    0.00     339             draw_glyphs <cycle 2> [929]
                0.00    0.00     335             map_char_table <cycle 2> [931]
                0.00    0.00     334             bcall0 <cycle 2> [932]
                0.00    0.00     327             unwind_to_catch <cycle 2> [934]
                0.00    0.00     322             Fdefault_toplevel_value <cycle 2> [936]
                0.00    0.00     320             readable_events <cycle 2> [939]
                0.00    0.00     317             Fset_default_toplevel_value <cycle 2> [940]
                0.00    0.00     307             update_window_line <cycle 2> [943]
                0.00    0.00     305             Fsignal <cycle 2> [944]
                0.00    0.00     303             xsignal1 <cycle 2> [947]
                0.00    0.00     303             xsignal <cycle 2> [946]
                0.00    0.00     299             safe__call1 <cycle 2> [949]
                0.00    0.00     298             do_pending_window_change <cycle 2> [950]
                0.00    0.00     296             sweep_weak_table <cycle 2> [952]
                0.00    0.00     283             get_input_pending <cycle 2> [961]
                0.00    0.00     267             call0 <cycle 2> [967]
                0.00    0.00     267             reseat_at_previous_visible_line_start <cycle 2> [969]
                0.00    0.00     267             move_it_by_lines <cycle 2> [968]
                0.00    0.00     265             move_it_vertically_backward <cycle 2> [971]
                0.00    0.00     252+7           readevalloop_eager_expand_eval <cycle 2> [976]
                0.00    0.00     258             printchar <cycle 2> [972]
                0.00    0.00     252             window_box_height <cycle 2> [977]
                0.00    0.00     252             access_keymap <cycle 2> [975]
                0.00    0.00     223             expand_and_dir_to_file <cycle 2> [986]
                0.00    0.00     216             x_write_glyphs <cycle 2> [991]
                0.00    0.00     206             detect_input_pending_run_timers <cycle 2> [995]
                0.00    0.00     203             safe_call <cycle 2> [998]
                0.00    0.00     199             map_keymap_canonical <cycle 2> [1004]
                0.00    0.00     199             call3 <cycle 2> [1003]
                0.00    0.00     199             Fmap_keymap <cycle 2> [1002]
                0.00    0.00     191             x_clear_end_of_line <cycle 2> [1011]
                0.00    0.00     186             compact_buffer <cycle 2> [1015]
                0.00    0.00     180             pop_it <cycle 2> [1019]
                0.00    0.00     179             draw_row_fringe_bitmaps <cycle 2> [1021]
                0.00    0.00     177             display_and_set_cursor <cycle 2> [1023]
                0.00    0.00     175             unwind_format_mode_line <cycle 2> [1026]
                0.00    0.00     171             mark_buffer <cycle 2> [1030]
                0.00    0.00     164             x_draw_window_cursor <cycle 2> [1038]
                0.00    0.00     157             Frestore_buffer_modified_p <cycle 2> [1040]
                0.00    0.00     150             Fbuffer_local_value <cycle 2> [1045]
                0.00    0.00     143             Fdelete_char <cycle 2> [1047]
                0.00    0.00     138             update_window <cycle 2> [1050]
                0.00    0.00     138             x_update_window_end <cycle 2> [1052]
                0.00    0.00     138             draw_window_fringes <cycle 2> [1049]
                0.00    0.00     128             Frequire <cycle 2> [1059]
                0.00    0.00     119             internal_condition_case_2 <cycle 2> [1063]
                0.00    0.00     113             detect_input_pending <cycle 2> [1072]
                0.00    0.00     109             single_keymap_panes <cycle 2> [1079]
                0.00    0.00      99             apply1 <cycle 2> [1089]
                0.00    0.00      91             try_window <cycle 2> [1106]
                0.00    0.00      91             mark_face_cache <cycle 2> [1105]
                0.00    0.00      90             Fbuffer_list <cycle 2> [1107]
                0.00    0.00      89             display_mode_line <cycle 2> [1109]
                0.00    0.00      87             XTset_vertical_scroll_bar <cycle 2> [1114]
                0.00    0.00      86             redisplay_window_0 <cycle 2> [1119]
                0.00    0.00      78             adjust_glyph_matrix <cycle 2> [1128]
                0.00    0.00      77             swap_in_global_binding <cycle 2> [1136]
                0.00    0.00      77             swallow_events <cycle 2> [1135]
                0.00    0.00      76             mark_discard_killed_buffers <cycle 2> [1139]
                0.00    0.00      70             overlay_arrows_changed_p <cycle 2> [1158]
                0.00    0.00      68             update_frame <cycle 2> [1170]
                0.00    0.00      68             update_window_tree <cycle 2> [1171]
                0.00    0.00      67             hscroll_window_tree <cycle 2> [1175]
                0.00    0.00      63             Faccessible_keymaps <cycle 2> [1183]
                0.00    0.00      63             ensure_echo_area_buffers <cycle 2> [1184]
                0.00    0.00      63             run_hook <cycle 2> [1185]
                0.00    0.00      62             swap_out_buffer_local_variables <cycle 2> [1191]
                0.00    0.00      62             Fmapc <cycle 2> [1188]
                0.00    0.00      60             safe_run_hook_funcall <cycle 2> [1197]
                0.00    0.00      59             unwind_with_echo_area_buffer <cycle 2> [1204]
                0.00    0.00      58             Frun_hook_with_args_until_failure <cycle 2> [1207]
                0.00    0.00      31+25          print_object <cycle 2> [1322]
                0.00    0.00      52             funcall_not <cycle 2> [1227]
                0.00    0.00      48             call4 <cycle 2> [1248]
                0.00    0.00      48             iterate_out_of_display_property <cycle 2> [1249]
                0.00    0.00      47             display_echo_area_1 <cycle 2> [1256]
                0.00    0.00      47             echo_area_display <cycle 2> [1257]
                0.00    0.00      46             display_mode_lines <cycle 2> [1260]
                0.00    0.00      37+9           x_set_frame_alpha <cycle 2> [1300]
                0.00    0.00      45             update_frame_tool_bar <cycle 2> [1268]
                0.00    0.00      44             xg_update_frame_menubar <cycle 2> [1272]
                0.00    0.00      43             draw_phys_cursor_glyph <cycle 2> [1275]
                0.00    0.00      43             sit_for <cycle 2> [1279]
                0.00    0.00      43             redisplay_preserve_echo_area <cycle 2> [1277]
                0.00    0.00      43             redisplay_windows <cycle 2> [1278]
                0.00    0.00      40             required_matrix_height <cycle 2> [1291]
                0.00    0.00      40             current_message <cycle 2> [1290]
                0.00    0.00      40             x_fix_overlapping_area <cycle 2> [1292]
                0.00    0.00      39             update_window_cursor <cycle 2> [1294]
                0.00    0.00      38             Fadd_face_text_property <cycle 2> [1296]
                0.00    0.00      35             Fcond <cycle 2> [1308]
                0.00    0.00      33             insert_char <cycle 2> [1311]
                0.00    0.00      31             Fimage_mask_p <cycle 2> [1317]
                0.00    0.00      30             x_default_parameter <cycle 2> [1324]
                0.00    0.00      26             Fwindow_mode_line_height <cycle 2> [1345]
                0.00    0.00      23             strout <cycle 2> [1378]
                0.00    0.00      22             Fthrow <cycle 2> [1381]
                0.00    0.00      21             adjust_frame_glyphs <cycle 2> [1384]
                0.00    0.00      20             mark_image_cache <cycle 2> [1392]
                0.00    0.00      20             erase_phys_cursor <cycle 2> [1391]
                0.00    0.00      19             For <cycle 2> [1397]
                0.00    0.00      19             update_cursor_in_window_tree <cycle 2> [1401]
                0.00    0.00      19             Fset_buffer_modified_p <cycle 2> [1398]
                0.00    0.00      19             Ffuncall_interactively <cycle 2> [1395]
                0.00    0.00      18             allocate_matrices_for_window_redisplay <cycle 2> [1410]
                0.00    0.00      18             active_maps <cycle 2> [1408]
                0.00    0.00      17             push_message <cycle 2> [1421]
                0.00    0.00      17             sweep_weak_hash_tables <cycle 2> [1429]
                0.00    0.00      17             mark_kboards <cycle 2> [1418]
                0.00    0.00      17             mark_specpdl <cycle 2> [1419]
                0.00    0.00      16             Fdelete_region <cycle 2> [1431]
                0.00    0.00      16             keyremap_step.constprop.36 <cycle 2> [1435]
                0.00    0.00      16             read_char <cycle 2> [1436]
                0.00    0.00      15             xpm_load <cycle 2> [1449]
                0.00    0.00      14             adjust_frame_size <cycle 2> [1453]
                0.00    0.00      13             digest_single_submenu <cycle 2> [1465]
                0.00    0.00      13             parse_single_submenu <cycle 2> [1468]
                0.00    0.00      13             do_switch_frame <cycle 2> [1466]
                0.00    0.00      12             run_funs <cycle 2> [1475]
                0.00    0.00      11             Fprogn <cycle 2> [1479]
                0.00    0.00      11             Ffetch_bytecode <cycle 2> [1477]
                0.00    0.00      11             get_doc_string <cycle 2> [1481]
                0.00    0.00      11             Flocate_file_internal <cycle 2> [1478]
                0.00    0.00      10             set_window_buffer <cycle 2> [1505]
                0.00    0.00       9             Fmd5 <cycle 2> [1513]
                0.00    0.00       7             Fsetq <cycle 2> [1539]
                0.00    0.00       7             Fset_window_buffer <cycle 2> [1538]
                0.00    0.00       6             decode_coding_charset <cycle 2> [1565]
                0.00    0.00       6             unlock_file <cycle 2> [1578]
                0.00    0.00       6             Fredirect_frame_focus <cycle 2> [1556]
                0.00    0.00       6             Finsert_and_inherit <cycle 2> [1553]
                0.00    0.00       6             test_undefined <cycle 2> [1576]
                0.00    0.00       6             make_lispy_event <cycle 2> [1573]
                0.00    0.00       5             Fkill_all_local_variables <cycle 2> [1583]
                0.00    0.00       5             Fwindow_text_pixel_size <cycle 2> [1586]
                0.00    0.00       4             esprintf <cycle 2> [1610]
                0.00    0.00       4             doprnt <cycle 2> [1608]
                0.00    0.00       4             Fmodify_frame_parameters <cycle 2> [1598]
                0.00    0.00       4             read_key_sequence.constprop.35 <cycle 2> [1620]
                0.00    0.00       3             redraw_frame <cycle 2> [1650]
                0.00    0.00       3             Fwhile <cycle 2> [1637]
                0.00    0.00       3             Fmaphash <cycle 2> [1630]
                0.00    0.00       3             Fmessage <cycle 2> [1632]
                0.00    0.00       3             message3_nolog <cycle 2> [1648]
                0.00    0.00       2             unwind_decompress <cycle 2> [1734]
                0.00    0.00       2             run_hook_wrapped_funcall <cycle 2> [1718]
                0.00    0.00       2             x_set_window_size <cycle 2> [1744]
                0.00    0.00       2             allocate_matrices_for_frame_redisplay <cycle 2> [1682]
                0.00    0.00       2             print_string <cycle 2> [1710]
                0.00    0.00       2             set_message_1 <cycle 2> [1721]
                0.00    0.00       2             truncate_undo_list <cycle 2> [1730]
                0.00    0.00       2             internal_lisp_condition_case <cycle 2> [1702]
                0.00    0.00       2             x_default_scroll_bar_color_parameter <cycle 2> [1739]
                0.00    0.00       2             x_bitmap_icon <cycle 2> [1736]
                0.00    0.00       2             xg_set_icon <cycle 2> [1750]
                0.00    0.00       2             Fimage_metadata <cycle 2> [1668]
                0.00    0.00       2             Fsecure_hash <cycle 2> [1672]
                0.00    0.00       2             update_single_window <cycle 2> [1735]
                0.00    0.00       2             internal_condition_case <cycle 2> [1701]
                0.00    0.00       2             resize_echo_area_exactly <cycle 2> [1715]
                0.00    0.00       2             show_help_echo <cycle 2> [1727]
                0.00    0.00       1             Fredraw_frame <cycle 2> [1771]
                0.00    0.00       1             call_process_cleanup <cycle 2> [1792]
                0.00    0.00       1             initialize_frame_menubar <cycle 2> [1830]
                0.00    0.00       1             redisplay_window_1 <cycle 2> [1850]
                0.00    0.00       1             x_window <cycle 2> [1925]
                0.00    0.00       1             xg_create_frame_widgets <cycle 2> [1930]
                0.00    0.00       1             x_set_icon_type <cycle 2> [1902]
                0.00    0.00       1             x_set_scroll_bar_width <cycle 2> [1915]
                0.00    0.00       1             x_set_scroll_bar_height <cycle 2> [1914]
                0.00    0.00       1             x_set_alpha <cycle 2> [1893]
                0.00    0.00       1             x_new_font <cycle 2> [1890]
                0.00    0.00       1             make_frame <cycle 2> [1837]
                0.00    0.00       1             Fmake_frame_visible <cycle 2> [1766]
                0.00    0.00       1             Fundo_boundary <cycle 2> [1781]
                0.00    0.00       1             Fscroll_up <cycle 2> [1772]
                0.00    0.00       1             scroll_command <cycle 2> [1857]
                0.00    0.00       1             window_scroll <cycle 2> [1876]
                0.00    0.00       1             pos_visible_p <cycle 2> [1846]
                0.00    0.00       1             line_bottom_y <cycle 2> [1831]
                0.00    0.00       1             shut_down_emacs <cycle 2> [1861]
                0.00    0.00       1             Fdelete_terminal <cycle 2> [1758]
                0.00    0.00       1             check_minibuf_window <cycle 2> [1797]
                0.00    0.00       1             Fprin1 <cycle 2> [1770]
                0.00    0.00       1             Fx_open_connection <cycle 2> [1786]
                0.00    0.00       1             Fformat_time_string <cycle 2> [1760]
                0.00    0.00       1             format_time_string <cycle 2> [1816]
                0.00    0.00       1             Fwrite_region <cycle 2> [1784]
                0.00    0.00       1             lock_file <cycle 2> [1834]
                0.00    0.00       1             x_scroll_run <cycle 2> [1891]
                0.00    0.00       1             redisplay_mode_lines <cycle 2> [1849]
-----------------------------------------------
                0.00    0.56     354/354         event_handler_gdk [3]
[2]     68.9    0.00    0.56     354         handle_one_xevent [2]
                0.00    0.55      23/23          x_focus_changed [4]
                0.01    0.01       1/34          x_set_frame_alpha <cycle 2> [1300]
                0.00    0.00      37/77          store_frame_param [303]
                0.00    0.00      15/15          note_mouse_movement [388]
                0.00    0.00       5/11206       Fgethash [119]
                0.00    0.00     354/400         x_any_window_to_frame [902]
                0.00    0.00      95/104         x_top_window_to_frame [1083]
                0.00    0.00      77/77          xft_settings_event [1137]
                0.00    0.00      76/76          x_handle_property_notify [1142]
                0.00    0.00      44/127663      Fplist_get [486]
                0.00    0.00      44/114327      Fget [491]
                0.00    0.00      34/34          x_window_to_frame [1310]
                0.00    0.00      26/42          kbd_buffer_store_buffered_event [1286]
                0.00    0.00      26/26          x_detect_focus_change [1354]
                0.00    0.00      26/26          x_mouse_grabbed [1357]
                0.00    0.00      25/26          get_current_wm_state [1352]
                0.00    0.00      25/261169      Fcons [478]
                0.00    0.00      25/6748        list2 [602]
                0.00    0.00      25/937859      Fcdr [471]
                0.00    0.00      25/71          get_frame_param [1155]
                0.00    0.00      25/50          frame_size_history_add [1234]
                0.00    0.00      14/15          x_real_positions [1446]
                0.00    0.00      14/31          clear_mouse_face [1319]
                0.00    0.00      13/13          xg_event_is_for_scrollbar [1472]
                0.00    0.00      11/94          popup_activated [1097]
                0.00    0.00      11/11          x_x_to_emacs_modifiers [1490]
                0.00    0.00       3/3           expose_frame [1645]
                0.00    0.00       2/2           xg_frame_resized [1747]
                0.00    0.00       1/11          redisplay_other_windows [1487]
                0.00    0.00       1/15          record_asynch_buffer_change [1444]
                0.00    0.00       1/1           do_ewmh_fullscreen [1805]
-----------------------------------------------
                                                 <spontaneous>
[3]     68.9    0.00    0.56                 event_handler_gdk [3]
                0.00    0.56     354/354         handle_one_xevent [2]
                0.00    0.00     381/1338413     unblock_input_to [468]
                0.00    0.00     381/1338086     unblock_input [469]
                0.00    0.00      46/400         x_any_window_to_frame [902]
-----------------------------------------------
                0.00    0.55      23/23          handle_one_xevent [2]

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






^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 20:53               ` Lars Ingebrigtsen
@ 2016-05-03 21:34                 ` Andreas Schwab
  2016-05-03 23:37                 ` Lars Ingebrigtsen
  1 sibling, 0 replies; 50+ messages in thread
From: Andreas Schwab @ 2016-05-03 21:34 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

Lars Ingebrigtsen <larsi@gnus.org> writes:

> And here's with ImageMagick.  I don't understand the "cumulative
> seconds" thing, because it must have used more than a minute of CPU time
> during this run:

CPU time only counts user-space time.  Also, CPU time is sampled, thus
inaccurate, and errors easily accumulate.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 20:53               ` Lars Ingebrigtsen
  2016-05-03 21:34                 ` Andreas Schwab
@ 2016-05-03 23:37                 ` Lars Ingebrigtsen
  2016-05-04  2:45                   ` Eli Zaretskii
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-03 23:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

In any case, adding a sanity check is probably a good thing.  For
instance: If the timer is being run more than (say) two seconds after
the target time, then Emacs must be busy with something.  In that case,
we should probably stop animating the image, and tell the user.

I've now pushed a fix that does this to the trunk, which make the test
case usable for me.  That is, after hanging for six seconds, since
that's how long it takes for Emacs via ImageMagick to render the first
frame.

`image-map' can have a command to start the animation again, for
instance.

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






^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 19:37           ` Lars Ingebrigtsen
@ 2016-05-04  2:34             ` Eli Zaretskii
  2016-05-04 15:07               ` Lars Ingebrigtsen
  0 siblings, 1 reply; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-04  2:34 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: rgm@gnu.org,  23431@debbugs.gnu.org,  jch@pps.univ-paris-diderot.fr
> Date: Tue, 03 May 2016 21:37:42 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Btw, if I wait for a while (maybe 20 sec), the slowness disappears,
> > and Emacs becomes responsive again, although the animation still goes
> > on.  So perhaps what causes this is some initial processing?  (I have
> > no idea what's involved in displaying an animated GIF.)
> 
> After Emacs has decoded all the frames in the image, they'll then be
> stored in the Emacs display image cache (the one you can clear with
> `clear-image-cache'), so Emacs should be responsive after the animated
> GIF has looped once.  (Unless there are more frames in the image than
> the length of the Emacs image cache.)

Which means that the heavy part is decoding, and not redisplay.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-03 23:37                 ` Lars Ingebrigtsen
@ 2016-05-04  2:45                   ` Eli Zaretskii
  2016-05-04  2:57                     ` Juliusz Chroboczek
  0 siblings, 1 reply; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-04  2:45 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 23431@debbugs.gnu.org,  jch@pps.univ-paris-diderot.fr
> Date: Wed, 04 May 2016 01:37:54 +0200
> 
> I've now pushed a fix that does this to the trunk, which make the test
> case usable for me.  That is, after hanging for six seconds, since
> that's how long it takes for Emacs via ImageMagick to render the first
> frame.

If the OP agrees that the issue is solved on master, we can close the
bug.

Thanks.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04  2:45                   ` Eli Zaretskii
@ 2016-05-04  2:57                     ` Juliusz Chroboczek
  2016-05-04 14:56                       ` Eli Zaretskii
  2016-05-04 15:10                       ` Lars Ingebrigtsen
  0 siblings, 2 replies; 50+ messages in thread
From: Juliusz Chroboczek @ 2016-05-04  2:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, Lars Ingebrigtsen

> If the OP agrees that the issue is solved on master, we can close the bug.

Sure, I'm very grateful for the fix (I'm impatiently waiting for it to
migrate into the 25 branch).  But what about the 6-second hang, which I can
reproduce even with with shr-image-animate set to nil?  Should decoding of
large images happen asynchronously, or is shr not designed for that?

-- Juliusz





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04  2:57                     ` Juliusz Chroboczek
@ 2016-05-04 14:56                       ` Eli Zaretskii
  2016-05-04 15:13                         ` Nicolas Richard
  2016-05-04 15:26                         ` Juliusz Chroboczek
  2016-05-04 15:10                       ` Lars Ingebrigtsen
  1 sibling, 2 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-04 14:56 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431, larsi

> Date: Wed, 04 May 2016 04:57:45 +0200
> From: Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr>
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, 23431@debbugs.gnu.org
> 
> > If the OP agrees that the issue is solved on master, we can close the bug.
> 
> Sure, I'm very grateful for the fix

Thanks, so is it okay to close the bug?

> (I'm impatiently waiting for it to migrate into the 25 branch).

It most probably never will.

> But what about the 6-second hang, which I can reproduce even with
> with shr-image-animate set to nil?  Should decoding of large images
> happen asynchronously, or is shr not designed for that?

We don't have infrastructure for doing this asynchronously.  If the
concurrency branch ever gets revived and merged, such jobs might be
good candidates for using that facility.  Otherwise, no, it isn't
possible.  It's not shr that is not designed for that, it's Emacs
itself.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04  2:34             ` Eli Zaretskii
@ 2016-05-04 15:07               ` Lars Ingebrigtsen
  2016-05-04 15:24                 ` Eli Zaretskii
  0 siblings, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-04 15:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, jch

Eli Zaretskii <eliz@gnu.org> writes:

> Which means that the heavy part is decoding, and not redisplay.

Well, the decoding is triggered by redisplay...

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04  2:57                     ` Juliusz Chroboczek
  2016-05-04 14:56                       ` Eli Zaretskii
@ 2016-05-04 15:10                       ` Lars Ingebrigtsen
  2016-05-04 15:16                         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-04 15:10 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431

Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes:

> But what about the 6-second hang, which I can reproduce even with with
> shr-image-animate set to nil?

I think it's quite likely that we can implement ImageMagick support in a
more efficient way than Emacs currently does.  If you compare how long
time the "display" command uses to display an image (and that's a pure
ImageMagick app) with Emacs when displaying via ImageMagick, the
difference can be striking.

So if somebody familiar with the ImageMagick C interface could go over
the Emacs code, I think it's likely that we could see great improvements
here.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04 14:56                       ` Eli Zaretskii
@ 2016-05-04 15:13                         ` Nicolas Richard
  2016-05-04 15:28                           ` Eli Zaretskii
  2016-05-04 15:26                         ` Juliusz Chroboczek
  1 sibling, 1 reply; 50+ messages in thread
From: Nicolas Richard @ 2016-05-04 15:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, larsi, Juliusz Chroboczek

Eli Zaretskii <eliz@gnu.org> writes:
>> From: Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr>

>> But what about the 6-second hang, which I can reproduce even with
>> with shr-image-animate set to nil?  Should decoding of large images
>> happen asynchronously, or is shr not designed for that?
>
> We don't have infrastructure for doing this asynchronously.  If the
> concurrency branch ever gets revived and merged, such jobs might be
> good candidates for using that facility.  Otherwise, no, it isn't
> possible.  It's not shr that is not designed for that, it's Emacs
> itself.

preview-latex shows images in a (La)TeX buffer asynchronously. Can't we
*cough* simply *cough* do the same here ?

(see also David Kastrup's message at
https://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00893.html and
some of his explanations elsewhere in that thread for details on how
preview-latex work. I didn't investigate much myself.)

-- 
Nicolas





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04 15:10                       ` Lars Ingebrigtsen
@ 2016-05-04 15:16                         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 50+ messages in thread
From: Lars Ingebrigtsen @ 2016-05-04 15:16 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431

Lars Ingebrigtsen <larsi@gnus.org> writes:

> If you compare how long time the "display" command uses to display an
> image (and that's a pure ImageMagick app) with Emacs when displaying
> via ImageMagick, the difference can be striking.

Hm.  So I thought.  But then I tried displaying the test image here in
with "display", and for the first frame to pop up, it took...  six
seconds, which is the same amount of time that Emacs uses.

Ok, there's nothing we can do here to improve the situation.  Except
implement image scaling ourselves, so that we can use the giflib library
to decode the GIF, and then scale it afterwards.  Which should be
doable, but is outside the scope of this bug report.

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





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04 15:07               ` Lars Ingebrigtsen
@ 2016-05-04 15:24                 ` Eli Zaretskii
  0 siblings, 0 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-04 15:24 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 23431, jch

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: rgm@gnu.org,  23431@debbugs.gnu.org,  jch@pps.univ-paris-diderot.fr
> Date: Wed, 04 May 2016 17:07:09 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Which means that the heavy part is decoding, and not redisplay.
> 
> Well, the decoding is triggered by redisplay...

Sure, but that doesn't change what I said.  It's the programmer who
decided to trigger decoding from redisplay.





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04 14:56                       ` Eli Zaretskii
  2016-05-04 15:13                         ` Nicolas Richard
@ 2016-05-04 15:26                         ` Juliusz Chroboczek
  2016-05-04 15:55                           ` Eli Zaretskii
  1 sibling, 1 reply; 50+ messages in thread
From: Juliusz Chroboczek @ 2016-05-04 15:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23431, larsi

> so is it okay to close the bug?

Please go ahead.

>> (I'm impatiently waiting for it to migrate into the 25 branch).

> It most probably never will.

Ah?

>> But what about the 6-second hang, which I can reproduce even with
>> with shr-image-animate set to nil?  Should decoding of large images
>> happen asynchronously, or is shr not designed for that?

> We don't have infrastructure for doing this asynchronously.  [...] It's
> not shr that is not designed for that, it's Emacs itself.

I see.  That's too bad.

Thanks again,

-- Juliusz





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04 15:13                         ` Nicolas Richard
@ 2016-05-04 15:28                           ` Eli Zaretskii
  0 siblings, 0 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-04 15:28 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: 23431, larsi, jch

> From: Nicolas Richard <nrichard@ulb.ac.be>
> Cc: Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr>,  23431@debbugs.gnu.org,  larsi@gnus.org
> Date: Wed, 04 May 2016 17:13:54 +0200
> 
> > We don't have infrastructure for doing this asynchronously.  If the
> > concurrency branch ever gets revived and merged, such jobs might be
> > good candidates for using that facility.  Otherwise, no, it isn't
> > possible.  It's not shr that is not designed for that, it's Emacs
> > itself.
> 
> preview-latex shows images in a (La)TeX buffer asynchronously.

AFAIK, it does that by running a separate program that produces an
image that Emacs then shows in display properties.

> Can't we *cough* simply *cough* do the same here ?

Maybe, I don't know.  With what external program?  Patches welcome,
anyway.

(Although I must confess that doing display related stuff in a
separate program is IMO a terribly ugly design.)





^ permalink raw reply	[flat|nested] 50+ messages in thread

* bug#23431: 25.0.93; EWW hangs
  2016-05-04 15:26                         ` Juliusz Chroboczek
@ 2016-05-04 15:55                           ` Eli Zaretskii
  0 siblings, 0 replies; 50+ messages in thread
From: Eli Zaretskii @ 2016-05-04 15:55 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: 23431-done, larsi

> Date: Wed, 04 May 2016 17:26:15 +0200
> From: Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr>
> Cc: larsi@gnus.org, 23431@debbugs.gnu.org
> 
> > so is it okay to close the bug?
> 
> Please go ahead.

Done.

> >> (I'm impatiently waiting for it to migrate into the 25 branch).
> 
> > It most probably never will.
> 
> Ah?

It's too late for such changes to be backported to emacs-25, and the
next release after that will most probably start from master, not from
emacs-25.





^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2016-05-04 15:55 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-03  3:29 bug#23431: 25.0.93; EWW hangs Juliusz Chroboczek
2016-05-03 14:25 ` Kaushal Modi
2016-05-03 14:26 ` Lars Ingebrigtsen
2016-05-03 15:57   ` Lars Ingebrigtsen
2016-05-03 16:20     ` Eli Zaretskii
2016-05-03 16:26       ` Lars Ingebrigtsen
2016-05-03 16:40         ` Eli Zaretskii
2016-05-03 17:04           ` Lars Ingebrigtsen
2016-05-03 17:13             ` Eli Zaretskii
2016-05-03 17:23               ` Lars Ingebrigtsen
2016-05-03 17:34                 ` Eli Zaretskii
2016-05-03 17:37                   ` Lars Ingebrigtsen
2016-05-03 17:39                   ` Lars Ingebrigtsen
2016-05-03 17:41                     ` Eli Zaretskii
2016-05-03 17:48                       ` Lars Ingebrigtsen
2016-05-03 18:17                       ` Lars Ingebrigtsen
2016-05-03 17:17             ` Eli Zaretskii
2016-05-03 17:24               ` Lars Ingebrigtsen
2016-05-03 17:40                 ` Eli Zaretskii
2016-05-03 17:43                   ` Eli Zaretskii
2016-05-03 17:47                   ` Lars Ingebrigtsen
2016-05-03 18:17                     ` Lars Ingebrigtsen
2016-05-03 18:33                       ` Eli Zaretskii
2016-05-03 16:26     ` Juliusz Chroboczek
2016-05-03 16:27       ` Lars Ingebrigtsen
2016-05-03 16:57       ` Eli Zaretskii
2016-05-03 18:51     ` Glenn Morris
2016-05-03 19:05       ` Lars Ingebrigtsen
2016-05-03 19:16         ` Glenn Morris
2016-05-03 19:23           ` Lars Ingebrigtsen
2016-05-03 20:10             ` Juliusz Chroboczek
2016-05-03 19:31         ` Eli Zaretskii
2016-05-03 19:37           ` Lars Ingebrigtsen
2016-05-04  2:34             ` Eli Zaretskii
2016-05-04 15:07               ` Lars Ingebrigtsen
2016-05-04 15:24                 ` Eli Zaretskii
2016-05-03 20:25           ` Lars Ingebrigtsen
2016-05-03 20:47             ` Lars Ingebrigtsen
2016-05-03 20:53               ` Lars Ingebrigtsen
2016-05-03 21:34                 ` Andreas Schwab
2016-05-03 23:37                 ` Lars Ingebrigtsen
2016-05-04  2:45                   ` Eli Zaretskii
2016-05-04  2:57                     ` Juliusz Chroboczek
2016-05-04 14:56                       ` Eli Zaretskii
2016-05-04 15:13                         ` Nicolas Richard
2016-05-04 15:28                           ` Eli Zaretskii
2016-05-04 15:26                         ` Juliusz Chroboczek
2016-05-04 15:55                           ` Eli Zaretskii
2016-05-04 15:10                       ` Lars Ingebrigtsen
2016-05-04 15:16                         ` Lars Ingebrigtsen

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).