unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Emacs loops on large images
@ 2004-12-05 21:22 Lars Hansen
       [not found] ` <E1CbJZP-0003Uo-CW@fencepost.gnu.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Lars Hansen @ 2004-12-05 21:22 UTC (permalink / raw)


When i start Emacs with option -Q, and do
   M-x auto-image-file-mode
   C-x C-f foo.jpg
with foo.jpg beeing an image larger than the Emacs window, Emacs loops, 
i.e. uses 99% processor time.
Unfortunately it does not happens every time, sometimes you have to try 
a few times to make it happen.
I have generated a backtrace when Emacs loops, see below. Can someone 
with knowledge of image handling and redisplay help?

#0  sxhash_string (ptr=0x8868be4 "ÿØÿá\fjExif", len=427132) at fns.c:4950
#1  0x081461b8 in sxhash (obj=143034307, depth=1) at fns.c:5050
#2  0x0814609c in sxhash_list (list=137328501, depth=0) at fns.c:4975
#3  0x0814620f in sxhash (obj=137328501, depth=0) at fns.c:5070
#4  0x080da344 in lookup_image (f=0x8518810, spec=137328501) at image.c:1647
#5  0x0806395a in handle_single_display_prop (it=0xbfffdbe8, 
prop=137328501, object=140359940, position=0xbfffdc84,
    display_replaced_before_p=0) at xdisp.c:3709
#6  0x08062f76 in handle_display_prop (it=0xbfffdbe8) at xdisp.c:3347
#7  0x08064dc3 in back_to_previous_visible_line_start (it=0xbfffe5fc) at 
xdisp.c:4577
#8  0x08066850 in move_it_vertically_backward (it=0xbfffe5fc, dy=0) at 
xdisp.c:6067
#9  0x08066bee in move_it_by_lines (it=0xbfffe5fc, dvpos=-1, need_y_p=0) 
at xdisp.c:6283
#10 0x0806d32a in try_scrolling (window=139897132, just_this_one_p=1, 
scroll_conservatively=0, scroll_step=0, temp_scroll_step=1,
    last_line_misfit=0) at xdisp.c:11043
#11 0x0806f9a3 in redisplay_window (window=139897132, just_this_one_p=1) 
at xdisp.c:11989
#12 0x0806c88a in redisplay_window_1 (window=139897132) at xdisp.c:10633
#13 0x08139994 in internal_condition_case_1 (bfun=0x806c864 
<redisplay_window_1>, arg=139897132, handlers=137324749,
    hfun=0x806c818 <redisplay_window_error>) at eval.c:1425
#14 0x0806c12b in redisplay_internal (preserve_echo_area=0) at xdisp.c:10255
#15 0x0806ab40 in redisplay () at xdisp.c:9416
#16 0x080e4857 in read_char (commandflag=1, nmaps=2, maps=0xbffff364, 
prev_event=137297489, used_mouse_menu=0xbffff3a8) at keyboard.c:2534
#17 0x080eb5cf in read_key_sequence (keybuf=0xbffff4b4, bufsize=30, 
prompt=137297489, dont_downcase_last=0, can_return_switch_frame=1,
    fix_current_buffer=1) at keyboard.c:8788
#18 0x080e2d42 in command_loop_1 () at keyboard.c:1528
#19 0x08139891 in internal_condition_case (bfun=0x80e2a34 
<command_loop_1>, handlers=137358457, hfun=0x80e25e4 <cmd_error>) at 
eval.c:1384
#20 0x080e28b8 in command_loop_2 () at keyboard.c:1309
#21 0x08139411 in internal_catch (tag=137352481, func=0x80e2894 
<command_loop_2>, arg=137297489) at eval.c:1144
#22 0x080e2867 in command_loop () at keyboard.c:1288
#23 0x080e238c in recursive_edit_1 () at keyboard.c:981
#24 0x080e24c4 in Frecursive_edit () at keyboard.c:1042
#25 0x080e1292 in main (argc=1, argv=0xbffffa84) at emacs.c:1742
(gdb)

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

* Re: Emacs loops on large images
       [not found] ` <E1CbJZP-0003Uo-CW@fencepost.gnu.org>
@ 2004-12-07 10:38   ` Lars Hansen
  2005-01-18  0:21     ` Kim F. Storm
  0 siblings, 1 reply; 4+ messages in thread
From: Lars Hansen @ 2004-12-07 10:38 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman wrote:

>Please try following the instructions in etc/DEBUG so you can find
>where the loop is located.  Once you see the code for the loop, maybe
>you can also determine why the loop fails to advance.
>  
>
The loop is the while loop in xdisp.c: back_to_previous_visible_line_start.
It seems that the code searches for a completely visible line, but there 
is no such line because the image is larger than the window.

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

* Re: Emacs loops on large images
  2004-12-07 10:38   ` Lars Hansen
@ 2005-01-18  0:21     ` Kim F. Storm
  2005-01-18  8:53       ` Lars Hansen
  0 siblings, 1 reply; 4+ messages in thread
From: Kim F. Storm @ 2005-01-18  0:21 UTC (permalink / raw)
  Cc: rms, emacs-devel

Lars Hansen <larsh@math.ku.dk> writes:

> When i start Emacs with option -Q, and do
>    M-x auto-image-file-mode
>    C-x C-f foo.jpg
> with foo.jpg beeing an image larger than the Emacs window, Emacs
> loops, i.e. uses 99% processor time.

and later:

> The loop is the while loop in xdisp.c: back_to_previous_visible_line_start.
> It seems that the code searches for a completely visible line, but
> there is no such line because the image is larger than the window.

The old fix for this problem (remove the call to handle_display_prop)
had bad effects in case a display property is put on multiple lines;
vertical-motion could no longer move backwards from that property.

I have devised a different fix for the original problem that seems to
work alright for vertical-motion with multi-line display properties.

Can you please test if you can make emacs loop with my changes.

Thanks.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

* Re: Emacs loops on large images
  2005-01-18  0:21     ` Kim F. Storm
@ 2005-01-18  8:53       ` Lars Hansen
  0 siblings, 0 replies; 4+ messages in thread
From: Lars Hansen @ 2005-01-18  8:53 UTC (permalink / raw)
  Cc: rms, emacs-devel

Kim F. Storm wrote:

>Can you please test if you can make emacs loop with my changes.
>  
>
It seems to work ok, i.e. I cannot make emacs loop.

Thanks!

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

end of thread, other threads:[~2005-01-18  8:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-05 21:22 Emacs loops on large images Lars Hansen
     [not found] ` <E1CbJZP-0003Uo-CW@fencepost.gnu.org>
2004-12-07 10:38   ` Lars Hansen
2005-01-18  0:21     ` Kim F. Storm
2005-01-18  8:53       ` Lars Hansen

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