Re: [PATCH] Call target_terminal_ours in quit_force

Patrick Palka
2015-07-27T19:12:56Z

On Mon, Jul 27, 2015 at 2:49 PM, Patrick Palka <patrick@parcs.ath.cx> wrote:
> On Mon, Jul 27, 2015 at 12:39 PM, Pedro Alves <palves@redhat.com> wrote:
>> On 07/27/2015 05:11 PM, Patrick Palka wrote:
>>> On Mon, Jul 27, 2015 at 12:08 PM, Patrick Palka <patrick@parcs.ath.cx> wrote:
>>>> We should make sure our terminal settings are in effect before finally
>>>> quitting GDB. Our terminal settings may not be in effect at this point
>>>> if we are e.g. quitting due to a SIGTERM.
>>>
>>> I should add, "quitting due to a SIGTERM while an inferior an inferior
>>> is running in the foreground."
>>
>> Looks OK, though I notice that the settings are broken even if we
>> we're not debugging anything:
>>
>> $ stty
>> speed 38400 baud; line = 0;
>> iutf8
>>
>> $ ./gdb
>> GNU gdb (GDB) 7.10.50.20150726-cvs
>> (gdb)
>> *sent SIGTERM from another terminal, gdb exits*
>> $
>> $ stty (echo is off)
>> speed 38400 baud; line = 0;
>> lnext = <undef>; min = 1; time = 0;
>> -icrnl iutf8
>> -icanon -echo
>> $
>>
>> Do you also see this?
>
> Yeah, even with this patch...
>
> $ stty
> speed 38400 baud; line = 0;
> -brkint -imaxbel iutf8
> $ gdb -q
> (gdb) *SIGTERM*
> $ stty
> speed 38400 baud; line = 0;
> lnext = <undef>;
> -brkint -icrnl -imaxbel iutf8
>
> Quitting via the "quit" command is OK though... strange.

This happens because when quitting via SIGTERM a readline callback
handler remains installed which means that the terminal is still
prepped by readline. The readline callback handler is temporarily
removed during the execution of a command (thus deprepping the
terminal) which is why quitting via "quit" does not leak our terminal
settings.