On 12/04/2013 09:53 PM, Eli Zaretskii wrote: > What kind of information do I need to collect on Windows to make it > clear where the problem is? Can you suggest some code that would > collect the necessary information, or ideas for writing such code? > (It's inconvenient to collect the data in GDB, since many objects are > marked at this point, and printing them from GDB crashes Emacs.) OK, let's try the following steps. 1. Apply attached patch and rebuild. 2. Run emacs -Q, then M-x insert-char 25b7 and M-x describe-char. Now you should know the C pointer to font object which is used to display right-pointing triangle (underlined red on screenshot). 3. Insert GDB breakpoints to fprintf, move cursor, do some basic editing around the triangle and run M-x garbage-collect few times. An interesting font object should be either marked or swept; if it's markerd, you should hit the breakpoint "GCX: mark interesting font Y". For my --without-xft build, M-x garbage-collect always shows that an interesting font object is marked in expected way - via face cache. E.g.: (gdb) bt 8 #0 __fprintf (stream=0x3869dbb1e0 <_IO_2_1_stderr_>, format=0x6cf620 "GC%ld: mark interesting font %p\n") at fprintf.c:27 #1 0x00000000005c7269 in mark_vectorlike (ptr=0xd7c8b8) at ../../trunk/src/alloc.c:5745 #2 0x00000000005c75a4 in mark_face_cache (c=0x11456b0) at ../../trunk/src/alloc.c:5838 #3 0x00000000005c7b43 in mark_object (arg=...) at ../../trunk/src/alloc.c:6014 #4 0x00000000005c7288 in mark_vectorlike (ptr=0x127d4f8) at ../../trunk/src/alloc.c:5754 #5 0x00000000005c7baa in mark_object (arg=...) at ../../trunk/src/alloc.c:6031 #6 0x00000000005c7288 in mark_vectorlike (ptr=0xcf3230) at ../../trunk/src/alloc.c:5754 #7 0x00000000005c7457 in mark_buffer (buffer=0xcf3230) at ../../trunk/src/alloc.c:5805 (More stack frames follow...) Dmitry