GNU bug report logs - #5365
23.1.91; Wrong type argument: keymapp, ("DEAD" . 35215396)

Previous Next

Package: emacs;

Reported by: Sven Joachim <svenjoac <at> gmx.de>

Date: Tue, 12 Jan 2010 14:59:01 UTC

Severity: serious

Merged with 5810

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Sven Joachim <svenjoac <at> gmx.de>, 5365 <at> debbugs.gnu.org
Subject: bug#5365: 23.1.91; Wrong type argument: keymapp, ("DEAD" . 35215396)
Date: Wed, 13 Jan 2010 15:53:40 -0500
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

>>> Even if that's the case, I'm not sure why Vlocal_function_key_map is
>>> getting garbage-collected, tho.
>
>> OK, I see one place where this could happen.  In xterm.c:10207:
>
> terminal-> kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
>>     ...
>>     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;
>>         ...
>>       }
>
> Indeed, that looks risky.  Why don't we add this new kboard to the
> all_kboards list before calling Qvendor_specific_keysyms?

We'd still have to protect the terminal object.  I've checked in a fix
that uses inhibit_garbage_collection, but if you'd like to replace this
with a more elegant fix, go ahead.

Since it appears to fix the problem (as far as Sven can tell), I'll
close this bug.  I'll forward the patch to the Debian bts too.




This bug report was last modified 15 years and 111 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.