Subject: bug#1052: segfault when resuming emacsclient -t in an xterm

From: Stefan Monnier <[email-masked]>
Date: Tue, 30 Sep 2008 18:06:27 -0400

>> > The problem is that after the cited change
>> > `xterm-remove-modify-other-keys' calls `terminal-live-p' (it was
>> > previously using `frame-live-p') before calling
>> > `send-string-to-terminal'.
>> >
>> > `terminal-live-p' does not return false when tty->output is NULL --->
>> > KABOOM.
>> 
>> Looks like it's just a matter of checking tty->output, then.  WDYT?

> Not sure it's a good idea.
> The test for `frame-live-p' was trying to make sure that the frame is OK
> and `send-string-to-terminal' would work.  

> Not sure
>  1.  why was it replaced with `terminal-live-p'

Because the function receives a `terminal' argument.

>  2.  maybe `terminal-live-p' needs to be changed to detect this condition

I think there are 2 problems:
1- xterm-remove-modify-other-keys forgets to pass `terminal' 
   to `send-string-to-terminal'.  Hopefully, I've just fixed it, so that
   your recipe should not causes a segfault any more.

2- send-string-to-terminal causes a segfault is called for a terminal
   that is suspended.  I've made it signal an error.

        Stefan