[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Summary of tty handling bug (bug #97094)



It appears that the problem I am seeing is as a result of kernel code in
n_tty.c: (lines 355-367)

if (!L_ECHOK(tty) || !L_ECHOKE(tty) || !L_ECHOE(tty)) {
    spin_lock_irqsave(&tty->read_lock, flags);
    tty->read_cnt -= ((tty->read_head - tty->canon_head) &
              (N_TTY_BUF_SIZE - 1));
    tty->read_head = tty->canon_head;
    spin_unlock_irqrestore(&tty->read_lock, flags);
    finish_erasing(tty);
    echo_char(KILL_CHAR(tty), tty);
    /* Add a newline if ECHOK is on and ECHOKE is off. */
    if (L_ECHOK(tty))
        opost('\n', tty);
    return;
}

According to this code (which is executed whenever a kill character is
received in canon mode on the tty), if any of echok/echoke/echoe is off,
the tty will not erase the line. Instead, it will simply echo the kill
character (obeying echoctl) and optionally a newline (if echok is set).
This is not the correct behavior. A patch has been sent to linux-kernel
for discussion.

Regardless of this, however, gnome-pty-helper SHOULD be setting echok.
The kernel has it set in the default tty parameters, and most terminal
emulators only edit these parameters slightly, if at all. For example:

xterm: Uses kernel defaults
rxvt: Uses stty defaults (kernel defaults + brkint + imaxbel)
eterm: Uses stty defaults
aterm: Uses stty defaults

Note that powershell exhibits the same bug because it also depends on
libzvt2.

I think this is compelling evidence that it is normal, and even
_expected_, that echok be set on a default tty.

Therefore gnome-pty-helper should be patched to enable it.

If you disagree, please present your arguments against this.

-- 
Taral <taral@taral.net>
Please use PGP/GPG encryption to send me mail.
"Any technology, no matter how primitive, is magic to those who don't
understand it." -- Florence Ambrose

Attachment: pgp0nBVwes_K8.pgp
Description: PGP signature


Reply to: