Here is a patch for Bug#550170, "emacs23: does not start, stops after
printing Wrong type argument: keymapp, ("DEAD" . 17614028)", against the
Emacs 23.1 source tree. It's already in the Emacs upstream repository.
diff -c /home/cyd/pretest/emacs-23.1/src/xterm.c\~ /home/cyd/pretest/emacs-23.1/src/xterm.c
*** /home/cyd/pretest/emacs-23.1/src/xterm.c~ 2010-01-13 15:55:10.000000000 -0500
--- /home/cyd/pretest/emacs-23.1/src/xterm.c 2010-01-13 15:55:22.000000000 -0500
***************
*** 10233,10245 ****
if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
{
char *vendor = ServerVendor (dpy);
! /* Temporarily hide the partially initialized terminal */
terminal_list = terminal->next_terminal;
UNBLOCK_INPUT;
terminal->kboard->Vsystem_key_alist
= call1 (Qvendor_specific_keysyms,
vendor ? build_string (vendor) : empty_unibyte_string);
BLOCK_INPUT;
terminal->next_terminal = terminal_list;
terminal_list = terminal;
}
--- 10233,10248 ----
if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
{
char *vendor = ServerVendor (dpy);
! /* Temporarily hide the partially initialized terminal,
! but make sure it doesn't get garbage collected. */
! int count = inhibit_garbage_collection ();
terminal_list = terminal->next_terminal;
UNBLOCK_INPUT;
terminal->kboard->Vsystem_key_alist
= call1 (Qvendor_specific_keysyms,
vendor ? build_string (vendor) : empty_unibyte_string);
BLOCK_INPUT;
+ unbind_to (count, Qnil);
terminal->next_terminal = terminal_list;
terminal_list = terminal;
}
Diff finished. Wed Jan 13 15:55:25 2010