Subject: Re: bug#34114: 27.0.50: pdumper and themes with Emacs daemon

From: Karl Otness <[email-masked]>
Date: Thu, 24 Jan 2019 19:22:34 +0000

On Thu, Jan 24, 2019 at 3:12 PM Eli Zaretskii <[email-masked]> wrote:
> So Karl, could you please try the patch below, which is based on your
> idea, but with a quirk?

That patch seems to fix the issue for me. Thanks for taking a look at it.

> And before you apply the patch, could you perhaps show C and Lisp
> backtraces from the errors you were seeing?  I don't see those errors
> here when I try your recipe, and I'd like to better understand where
> the problem happens.

As far as backtraces, here's the output I get when running with my init
file containing just "(toggle-debug-on-error)" and "(load-theme 'wombat t)":

> Error: (error (error "Invalid face" tooltip))
>   (internal-get-lisp-face-attribute tooltip :family #<frame F1 0x56357368b9f0>)
>   (face-attribute tooltip :family #<frame F1 0x56357368b9f0>)
>   (face-attr-match-p tooltip (:inherit variable-pitch) #<frame F1 0x56357368b9f0>)
>   (frame-set-background-mode #<frame F1 0x56357368b9f0>)
>   (modify-frame-parameters nil ((menu-bar-lines . 1) (buried-buffer-list) (buffer-list #<buffer *scratch*>) (unsplittable) (modeline . t) (width . 10) (height . 9) (font . "tty") (background-color . "unspecified-bg") (foreground-color . "unspecified-fg")))
>   (frame-notice-user-settings)
>   (#[0 "\11\203\10\0\306\11!\21\n\2042\0\13\2032\0\f\307\267\202'\0\310\311\13!\312\"\210\313\314\13!!\315P\2021\0\314\316\317\13\320 \321 $!\22\15\204;\0\322\323\324\"\210\16!\204Q\0\16\"\203Q\0\16#\204Q\0\16\"\325=\203t\0\16$\300=\204`\0\326\327\330\331\332 $\210\333\334!\203i\0\334 \210\333\335!\203t\0\335\336 !\210\333\337!\203}\0\337 \210\15?\205\205\0\322\340!\207" [(("-cdac$" . 1.3)) default-directory auto-save-list-file-name auto-save-list-file-prefix system-type inhibit-startup-hooks abbreviate-file-name #s(hash-table size 1 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (ms-dos 22)) make-directory file-name-directory t make-temp-name expand-file-name "~" format "%s%d-%s~" emacs-pid system-name run-hooks emacs-startup-hook term-setup-hook pc set-face-attribute default nil :font font-spec fboundp frame-notice-user-settings frame-set-background-mode selected-frame font-menu-add-default window-setup-hook frame-initial-frame initial-window-system noninteractive face-font-rescale-alist] 6])
>   (normal-top-level)

The C backtrace is mostly just funcalls, but this is what I get from a
breakpoint at xfaces.c:1866 which I think is where the actual error is
signaled.

> #0  0x00005555556b2764 in lface_from_face_name_no_resolve (f=0x555555e76a30, face_name=..., signal_p=true) at xfaces.c:1866
> #1  0x00005555556b27cb in lface_from_face_name (f=0x555555e76a30, face_name=..., signal_p=true) at xfaces.c:1884
> #2  0x00005555556b7acd in Finternal_get_lisp_face_attribute (symbol=..., keyword=..., frame=...) at xfaces.c:3731
> #3  0x00005555557e9df7 in funcall_subr (subr=0x555555d6e7e0 <Sinternal_get_lisp_face_attribute>, numargs=3, args=0x7fffffffbe10) at eval.c:2940
> #4  0x00005555557e98b7 in Ffuncall (nargs=4, args=0x7fffffffbe08) at eval.c:2860
> #5  0x000055555583e47d in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=3, args=0x7fffffffc328) at bytecode.c:633
> #6  0x00005555557ea4e7 in funcall_lambda (fun=..., nargs=3, arg_vector=0x7fffffffc310) at eval.c:3058
> #7  0x00005555557e98fb in Ffuncall (nargs=4, args=0x7fffffffc308) at eval.c:2862
> #8  0x000055555583e47d in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=3, args=0x7fffffffc890) at bytecode.c:633
> #9  0x00005555557ea4e7 in funcall_lambda (fun=..., nargs=3, arg_vector=0x7fffffffc878) at eval.c:3058
> #10 0x00005555557e98fb in Ffuncall (nargs=4, args=0x7fffffffc870) at eval.c:2862
> #11 0x000055555583e47d in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=1, args=0x7fffffffce00) at bytecode.c:633
> #12 0x00005555557ea4e7 in funcall_lambda (fun=..., nargs=1, arg_vector=0x7fffffffcdf8) at eval.c:3058
> #13 0x00005555557e98fb in Ffuncall (nargs=2, args=0x7fffffffcdf0) at eval.c:2862
> #14 0x00005555557e90ab in call1 (fn=..., arg1=...) at eval.c:2711
> #15 0x00005555556b70b9 in update_face_from_frame_parameter (f=0x555555e76a30, param=..., new_value=...) at xfaces.c:3398
> #16 0x00005555555abead in Fmodify_frame_parameters (frame=..., alist=...) at frame.c:3236
> #17 0x00005555557e9dcb in funcall_subr (subr=0x555555d69ea0 <Smodify_frame_parameters>, numargs=2, args=0x7fffffffd0d8) at eval.c:2937
> #18 0x00005555557e98b7 in Ffuncall (nargs=3, args=0x7fffffffd0d0) at eval.c:2860
> #19 0x000055555583e47d in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=0, args=0x7fffffffd820) at bytecode.c:633
> #20 0x00005555557ea4e7 in funcall_lambda (fun=..., nargs=0, arg_vector=0x7fffffffd820) at eval.c:3058
> #21 0x00005555557e98fb in Ffuncall (nargs=1, args=0x7fffffffd818) at eval.c:2862
> #22 0x000055555583e47d in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=0, args=0x7fffffffdd00) at bytecode.c:633
> #23 0x00005555557ea4e7 in funcall_lambda (fun=..., nargs=0, arg_vector=0x7fffffffdd00) at eval.c:3058
> #24 0x00005555557e98fb in Ffuncall (nargs=1, args=0x7fffffffdcf8) at eval.c:2862
> #25 0x000055555583d4f1 in bcall0 (f=...) at bytecode.c:328
> #26 0x00005555557ebb26 in do_one_unbind (this_binding=0x7fffffffdd80, unwinding=true, bindflag=SET_INTERNAL_UNBIND) at eval.c:3504
> #27 0x00005555557ebfea in unbind_to (count=5, value=...) at eval.c:3631
> #28 0x000055555583e566 in exec_byte_code (bytestr=..., vector=..., maxdepth=..., args_template=..., nargs=0, args=0x7fffffffe3b0) at bytecode.c:653
> #29 0x00005555557ea4e7 in funcall_lambda (fun=..., nargs=0, arg_vector=0x7fffffffe3b0) at eval.c:3058
> #30 0x00005555557ea152 in apply_lambda (fun=..., args=..., count=4) at eval.c:2994
> #31 0x00005555557e812f in eval_sub (form=...) at eval.c:2373
> #32 0x00005555557e7428 in Feval (form=..., lexical=...) at eval.c:2147
> #33 0x000055555571afd4 in top_level_2 () at keyboard.c:1099
> #34 0x00005555557e5427 in internal_condition_case (bfun=0x55555571afb1 <top_level_2>, handlers=..., hfun=0x55555571a9a7 <cmd_error>) at eval.c:1376
> #35 0x000055555571b01c in top_level_1 (ignore=...) at keyboard.c:1107
> #36 0x00005555557e488c in internal_catch (tag=..., func=0x55555571afd6 <top_level_1>, arg=...) at eval.c:1139
> #37 0x000055555571aefb in command_loop () at keyboard.c:1068
> #38 0x000055555571a48e in recursive_edit_1 () at keyboard.c:714
> #39 0x000055555571a686 in Frecursive_edit () at keyboard.c:785
> #40 0x0000555555718244 in main (argc=2, argv=0x7fffffffe8c8) at emacs.c:1902

Thanks again,
Karl