Subject: Re: bug#18501: Acknowledgement (24.3.93; OS X; crash in free() when calling macfont_close())

From: YAMAMOTO Mitsuharu <[email-masked]>
Date: Mon, 22 Sep 2014 18:52:59 +0900

>>>>> On Sat, 20 Sep 2014 05:08:15 +0400, Dmitry Antipov <[email-masked]> said:

> On 09/19/2014 10:05 PM, Jim Radford wrote:
>> Here are the two calls that free the font:
>> 
>> frame #1: 0x00000001001c5ffd Emacs`macfont_close(font=0x0000000105c2a8c0) + 13 at macfont.m:2621
>> frame #2: 0x000000010014de80 Emacs`font_clear_cache(f=<unavailable>, cache=<unavailable>, driver=<unavailable>) + 304 at font.c:2620
>> 
>> frame #1: 0x00000001001c5ffd Emacs`macfont_close(font=0x0000000105c2a8c0) + 13 at macfont.m:2621
>> frame #2: 0x000000010011be9d Emacs`Fgarbage_collect [inlined] cleanup_vector + 38 at alloc.c:2935
>> 
>> Notice that the pointer is the same in both cases.  Both cleanup_vector() and font_clear_cache() call
>> 
drv-> close(font)
>> 
>> It seems that font_clear_cache is leaving the font around for the GC to clean up (a second time) later.

> Please try this.

Does this mean each font backend driver should prepare for multiple
"close" calls for a single font object?  Or is this something specific
to OS X?

				     YAMAMOTO Mitsuharu
				[email-masked]