Subject: Re: bug#17125: 24.4.50; daemon mode: closing X client frame exits entire emacs

From: [email-masked] (Peder O. Klingenberg)
Date: Wed, 02 Apr 2014 15:01:43 +0200

Dmitry Antipov <[email-masked]> writes:

> This patch prevents [] (empty vector, means "no match") from entering font cache.
> IMO this is correct, but this breaks current behavior of font_list_entities.
> Could you please also try a more compatible/conservative change?

Sorry, this dies in the GC before any frame becomes visible:

(gdb) bt full
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:355
No locals.
#1  0x00000000005edad0 in die (
    msg=0x710f40 "FONT_ENTITY_P (AREF (((suppress_checking || ((((enum Lisp_Type) ((obj) & ~(1 ? - (1 << 3) : (9223372036854775807L >> (3 - 1))))) == Lisp_Cons)) ? (void) 0 : die (\"CONSP (obj)\", \"alloc.c\", 5374)), (str"..., file=0x7104c8 "alloc.c", line=5374)
    at alloc.c:6799
No locals.
#2  0x00000000005ea9b2 in compact_font_cache_entry (entry=17306966) at alloc.c:5374
        i = 0
        size = 1
        drop = false
        obj = 17300758
        tail = 17300742
        prev = 0x1081568
#3  0x00000000005eaba9 in compact_font_caches () at alloc.c:5407
        entry = 17306838
        cache = 18430694
        t = 0x110f6a0
#4  0x00000000005eb1eb in Fgarbage_collect () at alloc.c:5582
        nextb = 0x0
        stack_top_variable = 0 '\000'
        i = 1618
        message_p = false
        count = 40
        start = {
          tv_sec = 1396443207, 
          tv_nsec = 632197068
        }
        retval = 13859698
        tot_before = 0
[skipped 67 more frames, let me know if you want them.]

Lisp Backtrace:
"Automatic GC" (0xd2aba0)
"x-create-frame" (0x2034c850)
"x-create-frame-with-faces" (0x2034cd70)
"make-frame" (0x2034d290)
"make-frame-on-display" (0x2034d7e8)
"server-create-window-system-frame" (0x2034dd98)
0x120c6a8 PVEC_COMPILED
"funcall" (0x2034e310)
0x120bee8 PVEC_COMPILED
"funcall" (0x2034eac0)
"server-process-filter" (0x2034f1f8)

-- 
...Peder...