bug#3090: 23.0.92.3; hang involving XftGlyphExtents after moving cursor

Daniel Clemente <[email protected]>
Newsgroups gmane.emacs.bugs,gmane.emacs.pretest.bugs
Message-ID <[email protected]>
El dj, abr 23 2009, Daniel Clemente va escriure:
> This is a hang I had with the code from 20.m4.2009, which I could not reproduce anymore. 

  Today it happened again with a newer Emacs, showing the same effects:

XftCharIndex(0xcd8b200, 0xcac8b80, 32, 786432, 8)                              = 411
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
memmove(0xbf9fdfa8, 0xfa68e18, 72, 0xbf9fdffc, 0xbf9fe000)                     = 0xbf9fdfa8
memmove(0xbf9fde08, 0xf3cc098, 72, 12, 0xbf9fde08)                             = 0xbf9fde08
__ctype_tolower_loc()                                                          = 0xb70c6b14
__ctype_tolower_loc()                                                          = 0xb70c6b14
__ctype_tolower_loc()                                                          = 0xb70c6b14
__ctype_tolower_loc()                                                          = 0xb70c6b14
XftCharIndex(0xcd8b200, 0xcac8b80, 106, 0xfe02c34, 1216)                       = 323
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 112, 786432, 8)                             = 319
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 97, 786432, 8)                              = 673
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 95, 786432, 8)                              = 662
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 121, 786432, 8)                             = 325
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 95, 786432, 8)                              = 662
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 99, 786432, 8)                              = 682
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
strlen("font for")                                                             = 8
memmove(0x10931b5c, 0x823e60f, 8, 0xbf9fe0b4, 9712)                            = 0x10931b5c
XftCharExists(0xcd8b200, 0xd338dc8, 237, 0xce8c450, 0xff33570)                 = 1
XftCharIndex(0xcd8b200, 0xd338dc8, 237, 0x8225671, 0xf165965)                  = 432
XftGlyphExtents(0xcd8b200, 0xd338dc8, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 97, 786432, 8)                              = 673
XftGlyphExtents(0xcd8b200, 0xcac8b80, 0xbf9fe14c, 1, 0xbf9fdfa8)               = 0
XftCharIndex(0xcd8b200, 0xcac8b80, 32, 0xfe02b8c, 1228)                        = 411



  Notice the "font for" string; that may be meaningful.


  After waiting around 3 minutes, I saw a round of fast free() calls for a while:


free(0x10f5e230)                                                               = <void>
free(0x10f5e330)                                                               = <void>
free(0x10f5e1d0)                                                               = <void>
free(0x10f5e210)                                                               = <void>
free(0x10f5e170)                                                               = <void>
free(0x10f5e270)                                                               = <void>

…


  Then it started again, and so on:

XftGlyphExtents(0xcd8b200, 0xcaf00c8, 0xbf9fc54c, 1, 0xbf9fc3a8)               = 0
XftCharIndex(0xcd8b200, 0xcaf00c8, 102, 786432, 8)                             = 314
XftGlyphExtents(0xcd8b200, 0xcaf00c8, 0xbf9fc54c, 1, 0xbf9fc3a8)               = 0
XftCharIndex(0xcd8b200, 0xcaf00c8, 101, 786432, 8)                             = 313
XftGlyphExtents(0xcd8b200, 0xcaf00c8, 0xbf9fc54c, 1, 0xbf9fc3a8)               = 0
XftCharIndex(0xcd8b200, 0xcaf00c8, 114, 786432, 8)                             = 326
…


  The backtrace showed the first time:

(gdb) bt
#0  0x0821e32e in find_interval ()
#1  0x08224402 in Fnext_single_property_change ()
#2  0x0822a467 in composition_compute_stop_pos ()
#3  0x08073928 in compute_stop_pos ()
#4  0x00000187 in ?? ()
#5  0xffffffff in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Current language:  auto; currently asm
(gdb) 


  And after continuing and stopping again:


#0  0x081d11cc in assq_no_quit ()
#1  0x080f0908 in get_lface_attributes ()
#2  0x080f0b73 in merge_face_ref ()
#3  0x080f70ff in face_at_buffer_position ()
#4  0x0807353a in handle_face_prop ()
#5  0x0807aecd in handle_stop ()
#6  0x0807e0ef in next_element_from_buffer ()
#7  0x0807d055 in get_next_display_element ()
#8  0x0807e412 in move_it_in_display_line_to ()
#9  0x0807fd30 in move_it_to ()
#10 0x08088ab0 in try_scrolling ()
#11 0x0809676e in redisplay_window ()
#12 0x080976d3 in redisplay_window_0 ()
#13 0x081cac76 in internal_condition_case_1 ()
#14 0x08074fdb in redisplay_windows ()
#15 0x0808da75 in redisplay_internal ()
#16 0x0808e6f2 in redisplay_preserve_echo_area ()
#17 0x08057759 in sit_for ()
#18 0x0815b8b8 in command_loop_1 ()
#19 0x081caeb0 in internal_condition_case ()
#20 0x0814fd65 in command_loop_2 ()
#21 0x081caf8a in internal_catch ()
#22 0x08152481 in recursive_edit_1 ()
#23 0x08182095 in read_minibuf ()
#24 0x081cdb22 in Feval ()
#25 0x081cde8f in Fprogn ()
#26 0x081cc0b5 in funcall_lambda ()
#27 0x081cdf4b in apply_lambda ()
#28 0x081cd8cf in Feval ()
#29 0x081cdd40 in Fsetq ()
#30 0x081cdc9b in Feval ()
#31 0x081cedef in Flet ()
#32 0x081cdc9b in Feval ()
#33 0x081cde8f in Fprogn ()
#34 0x081cc0b5 in funcall_lambda ()
#35 0x081cdf4b in apply_lambda ()
#36 0x081cd8cf in Feval ()
#37 0x081cde8f in Fprogn ()
#38 0x081caf8a in internal_catch ()
#39 0x081cdcfd in Fcatch ()
#40 0x081cdc9b in Feval ()
#41 0x081cdd40 in Fsetq ()
#42 0x081cdc9b in Feval ()
#43 0x081cedef in Flet ()
#44 0x081cdc9b in Feval ()
#45 0x081ce83d in Fcond ()
#46 0x081cdc9b in Feval ()
#47 0x081ceb77 in FletX ()
#48 0x081cdc9b in Feval ()
#49 0x081cde8f in Fprogn ()
#50 0x081cc0b5 in funcall_lambda ()
#51 0x081cdf4b in apply_lambda ()
#52 0x081cd8cf in Feval ()
#53 0x081cdd40 in Fsetq ()
#54 0x081cdc9b in Feval ()
#55 0x081cedef in Flet ()
#56 0x081cdc9b in Feval ()
#57 0x081c827a in Fcall_interactively ()
#58 0x081cc626 in Ffuncall ()
#59 0x081cc7b9 in call3 ()
#60 0x0815b314 in command_loop_1 ()
#61 0x081caeb0 in internal_condition_case ()
#62 0x0814fd65 in command_loop_2 ()
#63 0x081caf8a in internal_catch ()
#64 0x0815250f in recursive_edit_1 ()
#65 0x08152624 in Frecursive_edit ()
#66 0x081488c7 in main ()



  My Emacs was this time:
GNU Emacs 23.0.92.6 (i686-pc-linux-gnu, GTK+ Version 2.16.0) of 2009-04-27
  The ./configure I had used is:
CFLAGS="-O3 -w" ./configure --prefix=/opt/dc
  It ran under --daemon.



-- Daniel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.