* 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 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 ` 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: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: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: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: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: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: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: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: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: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: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 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: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 ` 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 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: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: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: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-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 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-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 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 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: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 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: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
* 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 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
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).