Jan Vroonhof <vroonhof(a)math.ethz.ch> writes:
 x-remap-keysyms-using-function-key-map which is uninterned. The
 constants vector is the only reference. However this vector is in
 pure space and thus is not swept on GC. Therefore there is no link
 to the symbol and thus its gets GC. 
If the vector is in pure space, then all its symbol contents should be
interned in Vpure_uninterned_symbol_table until the end of time, and
GCPRO'ed through that.  If that doesn't happen, it's a bug in the
whatever code produces the pure compiled function.
As far as I can tell from scanning the code, it's correct:
DEFUN ("make-byte-code", Fmake_byte_code, 4, MANY, 0,
[...]
  if (purify_flag)
    {
[...]
      /* Statistics are kept differently for the constants */
      if (!purified (f->constants))
	{
	  f->constants = Fpurecopy (f->constants);
        }
This Fpurecopy() should intern the symbols to Vpure_uninterned_symbol_table.
 I am not sure this what Martin actually fixed. 
You mean Kyle?
 However, this is incomplete. What happens if I unintern it later (as
 x-win-init-sun does)? 
If you unintern it later, it doesn't matter, because you still have a
living reference in Vpure_uninterned_symbol_table, which should keep
the GC sweeper from putting its greasy hands on the symbol.